![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
glRotate и glTranslate
AxxxE © (2004-03-15 19:07:00)Что-то до меня не допрёт, как они работают. Ну, предположим я сделал
glRotetef(rX, rY, rZ);
glTranslatef(X, Y, Z);
и нарисовал точку. Как мне определить, где находится эта точка? По каким формулам вычислить её координаты? Перепробовал всё, так и не получил правильного результата.
AxxxE (2004-04-05 21:07:00) [1]Это ты "нас" не понимаешь. Пользоваться много ума не надо :).
Darthman (2004-04-05 18:58:00) [2]В любой Книге по ОпенГЛ написано так, что непонять невозможно, как пользоваться транслейтом, ротейтом и скейлингом. Это основы ОпенГЛ, если вы их незнаете или непонимаете, в первую очередь стоит почитать литературу на эту тему, а потом задавать вопросы уже. Хотя, после прочтения соотвествующего материала вопросы сами отпадут.
марсианин (2004-04-03 02:08:00) [3]В той, ессно, в которой оперирует Опенгл. А он оперирует в своей, неизвестной науке системе, иначе бы я не задавал этот вопрос.
см. glGetFloatv с флагами MODELVIEW_MATRIX и PROJECTION_MATRIX
а еще лучше найди прочитай где-нибудь что-нибудь о матрицах в ОпенГЛ..
Leon (2004-03-31 17:32:00) [4]Прошу прощения - ни то ни доугое:
cos(A) -sin(A) 0
sin(A) cos(A) 0
0 0 1
Матрица преобразования поврота на угол A вокруг оси OZ
P.S. сдесь -> здесь )
Leon (2004-03-31 17:16:00) [5]Да, чуть не забыл:
glRotatef(угол_поворота, ПроекцияОсиПоворотаНаX, ...Y, ...Z);
Может сдесь ошибка?
Leon (2004-03-31 17:14:00) [6]как то кривовато получилось... :)
Leon (2004-03-31 17:13:00) [7]Универсальныю формулы для 3D поворота к сожалению дать не могу.
(Нужно копать куда-то в сторону углов Эйлера)
Протестируй для начала на 2D углах - там формулы проще:
/ cos(A) sin(A) 0 \
| sin(A) -cos(A)0 | или
\ 0 0 1 /
/ sin(A) cos(A) 0 \
| -cos(A)sin(A) 0 | ( точно не помню )
\ 0 0 1 /
Н-р:
X' = X*cos(alfa) + Y*sin(alfa) // умножение мат. на век.
AxxxE (2004-03-30 20:04:00) [8]Меня больше волнует поворот - как бы я ни поворачивал систему координат, так у меня результат и несходится с опенгловскими. Или я не так поворачиваю? Может дашь формулы?
Leon (2004-03-30 17:09:00) [9]OpenGL оперирует декартовой системой координат.
glRotate(....) -- поворот этой системы
glTranslate - перенос
А дальше рабоитаеш в том что получилось!
И эти операции не коммутируют :)
AxxxE (2004-03-28 21:58:00) [10]>смотря в какой системе координат
В той, ессно, в которой оперирует Опенгл. А он оперирует в своей, неизвестной науке системе, иначе бы я не задавал этот вопрос.
марсианин (2004-03-18 00:03:00) [11]Как мне определить, где находится эта точка?
смотря в какой системе координат..))