Просмотр сидя на сфере
В моей программе JOGL у меня есть объект в (0,0,0). Я использую сферические координаты для изменения углов тета (наклон) и фи (вращение), чтобы увидеть мой объект в начале координат. Но я не могу правильно его просмотреть. Иногда объект становится невидимым под некоторыми углами, и я не могу смотреть со всех сторон. Вот мой код:
void decTheta()
{
theta--;
ex = distance*Math.sin(Math.toRadians(theta))*Math.cos(Math.toRadians(phi));
ez = distance*Math.sin(Math.toRadians(theta))*Math.sin(Math.toRadians(phi));
ey = distance*Math.cos(Math.toRadians(theta));
}
void incTheta()
{
theta++;
ex = distance*Math.sin(Math.toRadians(theta))*Math.cos(Math.toRadians(phi));
ez = distance*Math.sin(Math.toRadians(theta))*Math.sin(Math.toRadians(phi));
ey = distance*Math.cos(Math.toRadians(theta));
}
void incPhi()
{
phi++;
ex = distance*Math.sin(Math.toRadians(theta))*Math.cos(Math.toRadians(phi));
ez = distance*Math.sin(Math.toRadians(theta))*Math.sin(Math.toRadians(phi));
ey = distance*Math.cos(Math.toRadians(theta));
}
void decPhi()
{
phi--;
ex = distance*Math.sin(Math.toRadians(theta))*Math.cos(Math.toRadians(phi));
ez = distance*Math.sin(Math.toRadians(theta))*Math.sin(Math.toRadians(phi));
ey = distance*Math.cos(Math.toRadians(theta));
}
Что я делаю неправильно?
1 ответ
Ваш объект должен быть полностью внутри вашего усеченного конуса, если вы хотите видеть его правильно и полностью. Измените вашу (перспективную или ортогональную) матрицу проекции, чтобы она работала. Напоминаю, что использование JOGL 2 требует реального понимания основ OpenGL.