Ich versuche, eine Quad-Kugel basierend auf einem Artikel zu erstellen , der folgende Ergebnisse zeigt:
Ich kann einen Würfel richtig generieren:
Aber wenn ich alle Punkte nach dieser Formel konvertiere (von der oben verlinkten Seite):
x = x * sqrtf(1.0 - (y*y/2.0) - (z*z/2.0) + (y*y*z*z/3.0));
y = y * sqrtf(1.0 - (z*z/2.0) - (x*x/2.0) + (z*z*x*x/3.0));
z = z * sqrtf(1.0 - (x*x/2.0) - (y*y/2.0) + (x*x*y*y/3.0));
Meine Kugel sieht so aus:
Wie Sie sehen, ragen die Kanten des Würfels immer noch zu weit heraus. Der Würfel reicht von -1
bis +1
auf allen Achsen, wie der Artikel sagt.
Irgendwelche Ideen, was ist los?
Antworten:
Sie haben die Formel falsch geschrieben.
Sie ändern das Original
x
und überschreiben es. Dann modifizierst duy
basierend nicht auf dem Originalx
sondern dem Modifiziertenx
. Dann ändern Siez
basierend auf der geänderten Version von beiden .Bewahren Sie die Originale auf und berechnen Sie diese:
Verwenden Sie ab dann dx, dy und dz.
quelle