|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.11.2011, 19:45 | #1 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Вращение камеры gluLookAt
Добрый вечер. Я сделал(пока не полностью) комнату и хочу передвигать в ней камеру. Для этого выбрал функцию gluLookAt. Нашел интересную статью. Там есть такой код.
Код:
Следующем кодом устанавливается камера. Код:
P.S. Вот статья |
29.11.2011, 15:29 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
1) Кватернионы http://www.gamedev.ru/code/articles/...nad_kvaternion
2) Сферическая система координат 3) Матричные преобразования |
29.11.2011, 17:17 | #4 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Тогда второй вариант самое оно, sin, cos и пара формул.
Достаточно задать широту, долготу и радиус в сферической системе координат, а потом перевести их в декартову систему координат и как следствие получить вектор направления взгляда. |
11.12.2011, 08:34 | #6 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Доброе утро. Ну вот и возникли вопросы. Сразу же, с чем я столкнулся, это сферическая система координат. Как мне связать X Y мыши и задать сферические координаты? Опишу все свои знания.
В сферической системе координат три переменные: угол между осью Х, Угол между осью Z точка p и расстояние к ней r. Чтобы перевести в декартовую систему, нужно воспользоваться следующей формулой Заранее благодарю за помощь. |
11.12.2011, 15:06 | #7 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
r = 1
тэта = фи = 0 фи += deltaX * некий маленький коэффициент(0,05 например) тэта += deltaY * некий маленький коэффициент(0,05 например) /*ограничение угла тэта, если требуется. вместо +-pi/2 можно указать любой свой угол*/ if(тэта>pi/2) тэта = pi/2 if(тэта<-pi/2) тэта = -pi/2 deltaX и deltaY разница между старым положением курсора и новым |
14.12.2011, 07:13 | #8 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
И далее по предложенной мной формуле? Я не всматривался в нее, а теперь заметил, что ничего по этому поводу не понимаю. Я пороюсь в алгебре и геометрии, но все же прошу вас показать, как это делается, чтобы сравнится с правильным вариантом.
Оффтоп += это операция прибавления к переменной в С++? Последний раз редактировалось _PROGRAMM_; 14.12.2011 в 14:45. |
14.12.2011, 16:33 | #9 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
Код:
Цитата:
|
|
14.12.2011, 20:08 | #10 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Спасибо. В общих словах, я что-то сделал. Уже что-то наблюдается, но картинка дергается и возвращается обратно. Код я смастерил вот такой.
Код:
Последний раз редактировалось _PROGRAMM_; 14.12.2011 в 20:16. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не работает gluLookat | SAMOUCHKA | Qt и кроссплатформенное программирование С/С++ | 2 | 23.09.2011 18:52 |
Вращение камеры вокруг своей оси [OpenGL] | russian-stalker | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 14.04.2011 21:03 |
Direct3D9, вращение камеры. | _-Re@l-_ | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 06.04.2011 20:49 |
Вращение камеры (Direct3D) | AidarBik | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 24.07.2009 08:45 |