Я пытаюсь сделать четырехугольную сферу на основе статьи , которая показывает результаты, подобные этим:
Я могу сгенерировать куб правильно:
Но когда я конвертирую все точки по этой формуле (со страницы, указанной выше):
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));
Моя сфера выглядит так:
Как вы можете видеть, края куба все еще высовываются слишком далеко. Куб варьируется от -1
до +1
по всем осям, как говорится в статье.
Есть идеи, что не так?
Ответы:
Вы неправильно написали формулу.
Вы модифицируете оригинал
x
и перезаписываете его. Затем вы модифицируете,y
основываясь не на оригинале,x
а на модифицированномx
. Затем вы модифицируетеz
на основе измененной версии обоих .Сохраните оригиналы и рассчитайте это:
Используйте dx, dy и dz с тех пор.
источник