Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2013, 16:05   #1
Morpho
Пользователь
 
Регистрация: 22.07.2012
Сообщений: 29
По умолчанию Свободное перемещение в GLScene

Всем привет!
На практике в универе делаю в GLScene машинку) возник вопрос о её свободном перемещении в пространстве - т.е., что бы она ехала туда, куда мы её направляем, а не только по осям X и Z.
Для этого пробовали применять матрицу направляющих косинусов:
Код:
  if (Key = VK_UP) then
  begin
//    Car.Position.X := Car.Position.X + (Car.Position.X * cos(RadToGrad(alpha)) - Car.Position.Z * sin(RadToGrad(alpha)));
//    Car.Position.Z := Car.Position.Z + (Car.Position.X * sin(RadToGrad(alpha)) + Car.Position.Z * cos(RadToGrad(alpha)));
    Car.Position.X := Car.Position.X + (100* cos(alpha) - 100 * sin(alpha));
    Car.Position.Z := Car.Position.Z + (100 * sin(alpha) + 100 * cos(alpha));
  end;
но тогда она перемещается куда ей заблагорассудится... Как можно реализовать движение?
Morpho вне форума Ответить с цитированием
Старый 12.03.2013, 21:46   #2
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

Не знаю правильно ли я понял что тебе надо, но я использовал в похожей ситуации такой код:
Код:
    Z := Z + Cos(-HorzCam * 0.017453292519943);
    X := X - Sin(-HorzCam * 0.017453292519943);
HorzCam - поворот по оси Y
Reimscher вне форума Ответить с цитированием
Старый 12.03.2013, 21:56   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Код:
    Z := Z + Cos(-HorzCam * 0.017453292519943);
    X := X - Sin(-HorzCam * 0.017453292519943);
Неужели еще кто-то задает углы в градусах?
s-andriano вне форума Ответить с цитированием
Старый 12.03.2013, 22:00   #4
Morpho
Пользователь
 
Регистрация: 22.07.2012
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Reimscher Посмотреть сообщение
Не знаю правильно ли я понял что тебе надо, но я использовал в похожей ситуации такой код:
Код:
    Z := Z + Cos(-HorzCam * 0.017453292519943);
    X := X - Sin(-HorzCam * 0.017453292519943);
HorzCam - поворот по оси Y
Спасибо большое! Помогло.
Единственное, можно уточнить, что есть коэффициент 0.017453292519943 ?
Не принципиально, просто интересно.

Судя по предыдущему посту, это перевод в радианы))

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Неужели еще кто-то задает углы в градусах?
В GLScene работа в основном с градусами, а не с радианами

Последний раз редактировалось Morpho; 12.03.2013 в 22:03.
Morpho вне форума Ответить с цитированием
Старый 12.03.2013, 22:10   #5
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

"Единственное, можно уточнить, что есть коэффициент 0.017453292519943 ?"
Алтернатива функции RadToGrad, коэффициент проще говоря.
1 градус равен 0.017453292519943 радианам
Reimscher вне форума Ответить с цитированием
Старый 12.03.2013, 22:11   #6
Reimscher
Пользователь
 
Регистрация: 01.02.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Код:
    Z := Z + Cos(-HorzCam * 0.017453292519943);
    X := X - Sin(-HorzCam * 0.017453292519943);
Неужели еще кто-то задает углы в градусах?
Ну, не знаю как вам, а мне довольно удобно при перемещении мышки по форме менять угол в градусах, а не радианах.
Reimscher вне форума Ответить с цитированием
Старый 14.03.2013, 20:30   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Reimscher Посмотреть сообщение
Ну, не знаю как вам, а мне довольно удобно при перемещении мышки по форме менять угол в градусах, а не радианах.
Не понял... а как связано перемещение мышки с углом?

И потом, думаю, моряку удобнее будет наблюдать угол в румбах...

Как известно: "кесарево кесарю, а Божие Богу" (Матф.гл.22 ст.21)

Если мы используем какую-то величину в вычислениях, то и хранить ее рациональнее всего в естественном виде.
Иначе, если хранить ее, как удобнее для отображения, получится, что лучшее представление - в виде текстовой строки.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свободное перемещение картинки по сайту glazik JavaScript, Ajax 1 28.06.2012 07:38
свободное движение объектов С++ ruber54 Помощь студентам 4 12.12.2011 21:33
Свободное пространства на жестком диске optimator Общие вопросы C/C++ 2 08.07.2011 22:44
свободное общение sancho blin Свободное общение 1 10.07.2010 23:14