Форум: "Игры";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизOpenGL - Стереометрия, мать ее! Найти похожие ветки
← →
grouzd[E]v © (2005-05-07 18:38) [0]Доброе утро/день/вечер, вел. и уж. мастера!
У нас с делфой очередная проблема: нужно уравнение сферы (если оно вообще есть) - в курсе геометрии 7-го класса было что-то такое для 2D:
SQR(X) + SQR(Y) = SQR(R) По-моему, так...
Так вот: у меня есть камера, содержащая две точки - ОТКУДА смотрят (1) и КУДА смотрят (2). Точка (2) неподвижна, нужно сделать так чтобы точка (1) вращалась вокруг нее по окружности (радиус я высчитываю по формуле
R := SQRT( SQR(dX) + (SQR(dY) + (SQR(dZ) ), где dX, dY, dZ - разности координат между т(1) и (2)
Вы уж конесно извите что лезу с такой "технической" дрянью, но мы только еще начали проходить стереометрию - 10 класс, а мне к алгебраичке соваться неохота.
P.S.
Странно, вроде вопрос добавил, а найти не могу, так что, если повторяюсь, извините старика...
← →
NE_Parovoz (2005-05-07 18:43) [1]R:=Sqrt(dX*dX+dY*dY+dZ*dZ);
← →
grouzd[E]v © (2005-05-07 19:08) [2]Спасибо, конечно, но это - формула для диагонали параллепипеда, ее я знаю и пробовал использовать, но получается хрень, ведь при перемешении меняются 2 координаты, допустим, я поворачиваю точку (1) влево - меняются X и Z, то бишь 2 неизвесных и нужно добыть еще что-то
← →
XProger © (2005-05-07 21:31) [3]А вот синусы-косинусы с какого класса проходят? ;)
Поворот относительно оси Y отсчёт от оси X:
x := cos(angle)*Rad;
z := sin(angle)*Rad;
Аналогично и относительно других осей...
Если метод не устроит:
x := wx*c - wz*s;
z := wx*s + wz*c;
Но я что-то не понял вопроса. Ты поворачиваешь точку с которой смотришь, и тебе нужно определить расстояние до той точки на которую смотришь?
← →
grouzd[E]v © (2005-05-07 22:08) [4]Неа, расстояние известно, координаты цели тоже, найти нужно координаты 2-й точки ОТКУДА смотрят.
← →
grouzd[E]v © (2005-05-07 22:09) [5]Неа, расстояние известно, координаты цели тоже, найти нужно координаты 2-й точки ОТКУДА смотрят.
← →
parovoZZ © (2005-05-07 22:39) [6]И чем тебя не устраивает [3]?
← →
grouzd[E]v © (2005-05-08 11:16) [7]Я БАЛБЕС!!! МОЖЕТЕ СМЕЛО ТЫКАТЬ В МЕНЯ ПАЛЬЦЕМ И НАЗЫВАТЬ ПРИДУРКОМ!!! Нужно менять не координаты, а угол и уже от него все считать как в [3] Спасибо XProger!!!
← →
Leon © (2005-05-08 11:16) [8]Я бы сделал так:
x = x0 + R*sin(1)*cos(2)
y = y0 + R*sin(1)*sin(2)
z = z0 + R*cos(1)
( сферическая система координат )
1,2 - азимутальный и радиальный углы
x0,y0,z0-наблюдаемая точка
чтоб крутилось - наращивай 2
← →
grouzd[E]v © (2005-05-08 11:36) [9]TO: Leon А че за угол 1. И, если не секрет, что означает "азимутальный" - угол в градусах?
← →
grouzd[E]v © (2005-05-08 13:10) [10]Делаю так:
a1 := a1 + <..>;
x0 := x*cos(a1) - z*sin(a1);
z1 := x*sin(a1) + z*cos(a1);
a2 := a2 + <..>;
y0 := y*cos(a2) - z*sin(a2);
z2 := y*sin(a2) + z*cos(a2);
x := x0;
y := y0;
z := z1 + z2;
Получается полная хрень если написать z := z1 то движется толко по горизонтали, если z := z2 - то же самое но по вертикали. А как сделать чтобы можно было одновременно по гор. и вер.?
Может надо че-то сделать с векторм up (я делаю gluLookAt)?
← →
XProger © (2005-05-08 13:40) [11]Делай как посоветовал Leon :)
Up вектор тоже вертеть надо, и будет он у тебя направлен по касательной к сфере.
← →
grouzd[E]v © (2005-05-08 18:54) [12]Дык я и спрашиваю - Как? Откуда взять угол (1)?
← →
Leon © (2005-05-08 19:11) [13](1) от 0 до Pi ( Pi/2 если смотреть сверху)
(2) от 0 до 2*Pi
Возьми (1) произвольно :)
азимутальный - угол между осью Oz и направлением на камеру
← →
grouzd[E]v © (2005-05-08 20:01) [14]Ааа.. Не пашет. Ну да ладно, хрен с ним - буду поворачивать или по горизонтали или по вертикали
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c