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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2022, 03:40   #1
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию При перемещении мыши 3d комната вращается только в одно направление

Делаю 3d комнату на delphi7, в коде у меня есть событие MouseMove. Там происходит расчет скорости курсора мыши после чего результат передается в функцию toRadians, возвращаемое значение прибавляется к углу. Я уже задавала вопрос, как рассчитать скорость мыши https://www.programmersforum.ru/showthread.php?t=342484. Событие мыши MouseMove выглядит вот так.
Код:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var
  P2: TPoint;
  time_delta:Integer;
  dx, dy: Integer;
begin
  time_delta := GetTickCount() - time_do;
  GetCursorPos(P2);
  dx := ( P2.x - P.x );
  dy := ( P2.y - P.y );
  distance2 := distance2 + sqrt( dx * dx + dy * dy );
  if time_delta >= 10 then 
  begin
    speed_per_sec := 10 * distance2 / ( time_delta );
    player['angle'] := player['angle']+toRadians(speed_per_sec);

    time_do := time_do + time_delta;
    distance2 := 0;
  end;
  P.x := P2.x;
  P.y := P2.y;

end;
При запуске кода я начинаю двигать мышь в разное направление вправо и влево, но вращение комнаты происходит только влево.
Я догадываюсь, что проблема заключается в этой строчки.
Код:
player['angle'] := player['angle']+toRadians(speed_per_sec);
Потому, что если здесь поставить минус то комната начнет вращаться в противоположное направление, т.е. влево.
room.jpg
Как задать правильно условие, что при перемещении мыши влево и вправо комната вращалась в соответствующее направление?

Не могу выложить код, слишком большой, превышает лимит по количеству символов, поэтому прикладываю исходник с программой RayCaster.zip.
Катя93 вне форума Ответить с цитированием
Старый 13.05.2022, 03:47   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
if P2.x - P.x >= 0 then sign.x := 1 else sign.x := -1;
player['angle'] := player['angle']+sign.x*toRadians(speed_per_sec);
macomics вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбрасывается состояние мыши при программном перемещении курсора. Drag&drop Yuran Общие вопросы Delphi 1 26.07.2016 14:15
шум при перемещении мыши Lotles Компьютерное железо 6 14.12.2010 21:16
Как отследить направление движения мыши? yourself Общие вопросы Delphi 8 30.05.2008 08:04
Узнать направление мыши Манжосов Денис :) Общие вопросы Delphi 3 21.05.2008 11:48
Определение X и Y координат PaintBox при перемещении курсора мыши Vladimir K. Общие вопросы Delphi 3 04.01.2007 10:45