Ich habe hier einige Fragen gestellt und diese geometrische Form einige Male unter anderen geodätischen Formen erwähnt, aber ich bin gespannt, wie genau ich einen um einen Punkt xyz erzeugen würde?
Hier ist eine Referenz, die ich für unterteilte Ikosaeder verwendet habe, basierend auf dem OpenGL Rotes Buch. Der BSD-lizenzierte Quellcode für meine iPhone-Anwendung Moleküle enthält Code zum Erzeugen einfacher Ikosaeder und zum Laden dieser in ein Vertex-Buffer-Objekt für OpenGL ES. Ich habe noch keine Unterteilung eingeführt, um die Qualität des Renderings zu verbessern, aber es ist in meinen Plänen.
Es gibt ein Tutorial hier .
Die wesentliche Idee besteht darin, mit einem Ikosaeder (mit 20 dreieckigen Flächen) zu beginnen und jede dreieckige Fläche wiederholt in kleinere Dreiecke zu unterteilen. In jeder Phase wird jeder neue Punkt radial verschoben, so dass der korrekte Abstand von der Mitte eingehalten wird.
Die Anzahl der Stufen bestimmt, wie viele Dreiecke erzeugt werden und wie nahe das resultierende Netz einer Kugel entspricht.
Um eine Kugel zu tesselieren, unterteilen die meisten Menschen die Punkte linear, aber das erzeugt keine abgerundete Form.
Drehen Sie für eine runde Tesselation die zwei Punkte durch eine Reihe von Rotationen.
Es gibt auch einige mathematische Überlegungen für Werte in der Nähe jeder der nahe 0 Positionen, wie zum Beispiel der Nord- und Südpol, sowie die rechte und die äußerste linke und vorderste und hinterste Position, also check diese zuerst und führen eine zusätzliche Rotation um pi / 4 (45 Grad) durch, wenn sie sich an diesen Orten befinden. Dies verhindert, dass Fließkomma-Mathebibliotheken ausflippen und wild außer-character-Werte für atan2 () und andere trigonometrische Funktionen erzeugen.
Hoffe, das hilft! :-)