Eine Möglichkeit besteht darin, mit einem platonischen Körper mit dreieckigen Seiten zu beginnen - beispielsweise einem Oktaeder . Nehmen Sie dann jedes Dreieck und teilen Sie es rekursiv in kleinere Dreiecke auf:
Sobald Sie eine ausreichende Anzahl von Punkten haben, normalisieren Sie ihre Vektoren so, dass sie alle einen konstanten Abstand vom Zentrum des Volumenkörpers haben. Dies führt dazu, dass sich die Seiten in eine Form wölben, die einer Kugel ähnelt, wobei die Glätte zunimmt, wenn Sie die Anzahl der Punkte erhöhen.
Normalisierung bedeutet hier, einen Punkt so zu verschieben, dass sein Winkel in Bezug auf einen anderen Punkt gleich ist, der Abstand zwischen ihnen jedoch unterschiedlich ist. Hier ist ein zweidimensionales Beispiel.
A und B sind 6 Einheiten voneinander entfernt. Angenommen, wir möchten einen Punkt auf der Linie AB finden, der 12 Einheiten von A entfernt ist.
Wir können sagen, dass C die normalisierte Form von B in Bezug auf A mit Abstand 12 ist. Wir können C mit Code wie folgt erhalten:
#returns a point collinear to A and B, a given distance away from A.
function normalize(a, b, length):
#get the distance between a and b along the x and y axes
dx = b.x - a.x
dy = b.y - a.y
#right now, sqrt(dx^2 + dy^2) = distance(a,b).
#we want to modify them so that sqrt(dx^2 + dy^2) = the given length.
dx = dx * length / distance(a,b)
dy = dy * length / distance(a,b)
point c = new point
c.x = a.x + dx
c.y = a.y + dy
return c
Wenn wir diesen Normalisierungsprozess an vielen Punkten durchführen, alle in Bezug auf denselben Punkt A und mit demselben Abstand R, dann liegen die normalisierten Punkte alle auf dem Kreisbogen mit Mittelpunkt A und Radius R.
Hier beginnen die schwarzen Punkte auf einer Linie und "wölben" sich in einen Bogen.
Dieser Vorgang kann in drei Dimensionen erweitert werden. In diesem Fall erhalten Sie eher eine Kugel als einen Kreis. Fügen Sie der Normalisierungsfunktion einfach eine dz-Komponente hinzu.
Wenn Sie sich die Kugel bei Epcot ansehen , können Sie diese Technik bei der Arbeit sehen. Es ist ein Dodekaeder mit ausgebauchten Gesichtern, damit es runder aussieht.