Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.02.2012, 20:08
It-s-me It-s-me вне форума
Прохожий
 
Регистрация: 25.01.2012
Сообщения: 23
Репутация: 10
Печаль Контроль перемещения объекта

Суть проблемы - Пытаюсь реализовать перемещение объекта с помощью клавиатуры и мыши.(Как в играх от 3-го лица).
Клавиатура - движение вперед.
Мышь - изменение угла(поворот влево - вправо).
От измененного угла считаю координаты через sin и cos.
Чего-то хорошего из этого не получилось.
Каким путем можно решить эту проблему.
Ответить с цитированием
  #2  
Старый 06.02.2012, 20:41
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

А перевод з радиан в грады и наоборот пробовал? В Дельфи тригонометрические ф-ции считаются только для значений угла в радианах.
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
It-s-me (07.02.2012)
  #3  
Старый 06.02.2012, 21:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если исходить из предыдущего вопроса, то наверное ТС делает это в OpenGL. Там это выполняется командой glRotate.
Код:
  glRotatef(Angle, 1, 0, 0);
где Angle - 0°..360°, остальные 3 - X, Y, Z выставляем нужное в 1. Если требуется выставить для нескольких направлений повторяем команду:
Код:
  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  
Старый 06.02.2012, 21:53
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Для реализации камеры я использую эти функции именно в таковом порядке:

glrotatef(zangle,0,0,0.0000000001);
glrotatef(xangle,0.00000000001,0,0);
glrotatef(yangle,0,0.0000000001,0);

Как раз нормально
Ответить с цитированием
  #5  
Старый 06.02.2012, 21:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Весьма редко потребуется именно такая точность поворота. На практике, чаще бывает нужно повернуть гораздо "резче".
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 06.02.2012, 21:59
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Но это не точность, это вектор оси Почему-то у меня именно при таком раскладе получилась камера как в играх. zangle я не использую, это как поворот головы вокруг луча зрения.
Ответить с цитированием
  #7  
Старый 07.02.2012, 08:49
It-s-me It-s-me вне форума
Прохожий
 
Регистрация: 25.01.2012
Сообщения: 23
Репутация: 10
По умолчанию

Цитата:
Сообщение от YVitaliy
А перевод з радиан в грады и наоборот пробовал? В Дельфи тригонометрические ф-ции считаются только для значений угла в радианах.

Спасибо. Именно это я и не учел проблема была в градусах....
Теперь все работает.
Да делал в openGL.
Камеру реализовывал с помощью LookAt.
Ответить с цитированием
  #8  
Старый 07.02.2012, 02:35
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от It-s-me
Суть проблемы - Пытаюсь реализовать перемещение объекта с помощью клавиатуры и мыши.(Как в играх от 3-го лица).
Клавиатура - движение вперед.
Мышь - изменение угла(поворот влево - вправо).
От измененного угла считаю координаты через sin и cos.
Чего-то хорошего из этого не получилось.
Каким путем можно решить эту проблему.
Код в студию!
Ответить с цитированием
  #9  
Старый 07.02.2012, 09:01
It-s-me It-s-me вне форума
Прохожий
 
Регистрация: 25.01.2012
Сообщения: 23
Репутация: 10
По умолчанию

Если нужно. Выложу.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025