Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
1-1123671846
InVariantian
2005-08-10 15:04
2005.09.04
Интернациолизация проги


4-1121430567
been
2005-07-15 16:29
2005.09.04
значение в памяти типа x.xx


1-1123744158
Bios_
2005-08-11 11:09
2005.09.04
????? вместо строк


14-1123583153
root
2005-08-09 14:25
2005.09.04
УРА У меня сеня праздник!!!!


3-1122274772
Term
2005-07-25 10:59
2005.09.04
Как сделать STOP и START MSSQL программно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский