![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Суть проблемы - Пытаюсь реализовать перемещение объекта с помощью клавиатуры и мыши.(Как в играх от 3-го лица).
Клавиатура - движение вперед. Мышь - изменение угла(поворот влево - вправо). От измененного угла считаю координаты через sin и cos. Чего-то хорошего из этого не получилось. Каким путем можно решить эту проблему. |
#2
|
||||
|
||||
![]() А перевод з радиан в грады и наоборот пробовал? В Дельфи тригонометрические ф-ции считаются только для значений угла в радианах.
|
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
It-s-me (07.02.2012)
|
#3
|
||||
|
||||
![]() Если исходить из предыдущего вопроса, то наверное ТС делает это в OpenGL. Там это выполняется командой glRotate.
Код:
glRotatef(Angle, 1, 0, 0); Код:
glRotatef(Angle, 1, 0, 0); glRotatef(Angle, 0, 1, 0); glRotatef(Angle, 0, 0, 1); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
||||
|
||||
![]() Для реализации камеры я использую эти функции именно в таковом порядке:
glrotatef(zangle,0,0,0.0000000001); glrotatef(xangle,0.00000000001,0,0); glrotatef(yangle,0,0.0000000001,0); Как раз нормально |
#5
|
||||
|
||||
![]() Весьма редко потребуется именно такая точность поворота. На практике, чаще бывает нужно повернуть гораздо "резче".
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
||||
|
||||
![]() Но это не точность, это вектор оси
![]() |
#7
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
||||
|
||||
![]() Сор, что не в своей теме, но вспомнил проблему: когда камера стоит по нормали к горизонтальной плоскости (XZ), тоесть угол xangle = 90, почему-то вид переносится в точку 0,0,0. Как не пробовал, исправить не могу. Даже при ~89гр то же самое. В чем может быть проблема?
|
#9
|
||||
|
||||
![]() Хм, я этой командой объект вращаю, а не камеру. Камера у меня не двигается.
Код:
glPushMatrix; ... glRotatef(fRotX, 1, 0, 0); glRotatef(fRotY, 0, 1, 0); ... glPopMatrix; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
![]() Ну, у меня просто действительно как камера - есть точка, растояние "глаз" от этой точки, углы поворота. С обьектами я уже давно завязал
![]() |
#11
|
||||
|
||||
![]() Цитата:
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
||||
|
||||
![]() Ну, там я уже вращаю точки самого обьекта, так мне проще. Коллизии просто просчитываю по фэйсам самого обьекта, и удобнее, когда обьект находится именно там, где должен быть
![]() |
#13
|
||||
|
||||
![]() Цитата:
|
#14
|
|||
|
|||
![]() Цитата:
Спасибо. Именно это я и не учел ![]() Теперь все работает. Да делал в openGL. Камеру реализовывал с помощью LookAt. |
#15
|
|||
|
|||
![]() Если нужно. Выложу.
|