+
+class IcoSphereBuilder: public GeometryBuilder
+{
+private:
+ float radius;
+ unsigned subdivision;
+
+ static float base_vertices[];
+ static unsigned base_triangles[];
+ static unsigned base_edges[];
+ static unsigned base_tri_edges[];
+
+public:
+ IcoSphereBuilder(float, unsigned);
+private:
+ static void initialize_edges();
+
+public:
+ using GeometryBuilder::build;
+ virtual void build(PrimitiveBuilder &) const;
+
+private:
+ unsigned edge_vertex(unsigned, unsigned) const;
+};
+