1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This file is part of Eigen, a lightweight C++ template library 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// for linear algebra. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr> 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This Source Code Form is subject to the terms of the Mozilla 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Public License v. 2.0. If a copy of the MPL was not distributed 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef EIGEN_ICOSPHERE_H 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define EIGEN_ICOSPHERE_H 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <Eigen/Core> 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <vector> 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathclass IcoSphere 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath public: 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IcoSphere(unsigned int levels=1); 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath const std::vector<Eigen::Vector3f>& vertices() const { return mVertices; } 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath const std::vector<int>& indices(int level) const; 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void draw(int level); 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath protected: 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void _subdivide(); 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath std::vector<Eigen::Vector3f> mVertices; 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath std::vector<std::vector<int>*> mIndices; 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath std::vector<int> mListIds; 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}; 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif // EIGEN_ICOSPHERE_H 31