В соответствии с кодом, который вы разместили в комментариях, вот как генерировать значения X, Y и Z.
theta = 2 * PI * U;
phi = PI * V;
_x = Math.cos(theta) * Math.sin(phi) * radius;
_y = Math.sin(theta) * Math.sin(phi) * radius;
_z = -Math.cos(phi) * radius;
СТАРЫЙ ОТВЕТ:
Ваш код в порядке.Вы уверены, что сфера генерируется таким же образом, и что полюса расположены вдоль оси Z, как это?«Обычно» сферы создаются с полюсами вдоль оси Y.Проверьте это.
В противном случае, если вы всегда отклоняетесь на +/- 90 °, поиграйте с sin и cos, определяя x и y.Например:
_x = -Math.sin(_u) * Math.sin(_v) * radius;
_y = Math.cos(_u) * Math.sin(_v) * radius;
Поворот оригинала на 90 °.
Существует 8 различных способов выполнить грех / cos этих двух компонентов с разными знаками.Не зная, как создается ваша сфера, вам придется испытать их все.Они идут
(x = sin(u), y = cos(u));
(x = sin(u), y = -cos(u));
(x = -sin(u), y = cos(u));
(x = -sin(u), y = -cos(u));
(x = cos(u), y = sin(u));
(x = cos(u), y = -sin(u));
(x = -cos(u), y = sin(u));
(x = -cos(u), y = -sin(u));
Однако это больно и смешно, я настоятельно рекомендую попытаться выяснить, как создается ваша сфера.Они обычно генерируют позиции x, y, z, просматривая U и V.