Estoy tratando de hacer una esfera cuádruple basada en un artículo , que muestra resultados como este:
Puedo generar un cubo correctamente:
Pero cuando convierto todos los puntos de acuerdo con esta fórmula (de la página vinculada anteriormente):
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));
Mi esfera se ve así:
Como puede ver, los bordes del cubo todavía sobresalen demasiado. El cubo varía de -1
a +1
en todos los ejes, como dice el artículo.
¿Alguna idea de lo que está mal?
Respuestas:
Has escrito mal la fórmula.
Modifica el original
x
y lo sobrescribe. Luego se modifica eny
base no al originalx
sino al modificadox
. Luego se modifica enz
función de la versión modificada de ambos .Conserve los originales y calcule esto:
Use dx, dy y dz a partir de entonces.
fuente