![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Добрый день, уважаемые эксперты. Прошк вашей помощи. У меня есть картинка, которая должна смещаться относительно координат х и у, в зависимости от угла поворота изображения. Я сделал следующие формулы подсчета передвижения:
Car.Y:=Car.Y+Sin(DegToRad(Car.Angle ))*round(Car.speed); Car.X:=Car.X-Cos(DegToRad(Car.Angle))*round(Car. speed); Но при данных формулах картинка праивльно двигается только на углы +-45 градусов (0, 45, 90, 135, 180, 225, 270, 315, 360); А вот движение на промежуточные углы происходит неправильно. Как сделать правильное движение на любой угол? например на 1, 5, 15 градусов. Насколько я понимаю у меня из-за округлений могут быть неточности... или угол нужно сделать тип single? Car:Tpoint; Car.Angle:integer; Car.speed:real; Заранее спасибо за ответ. |
![]() |
![]() |
![]() |
#2 |
Заблокирован
Регистрация: 02.03.2014
Сообщений: 439
|
![]()
Код где???
Последний раз редактировалось XE5; 16.06.2014 в 16:20. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]() Код:
Последний раз редактировалось Stilet; 17.06.2014 в 09:41. |
![]() |
![]() |
![]() |
#4 |
Заблокирован
Регистрация: 02.03.2014
Сообщений: 439
|
![]()
car.x, car.y целые числа, обозначающие позицию изображения. Ты не можешь обозначить позицию машины как дробное число, соответственно применяешь округление до целого числа. В итоге ты можешь сдвинуть изображение только на пиксель вверх, вниз влево, вправо, и одновременно влево вниз, вправо вниз, и т.д. Вот и получается что ты двигаешь картинку только под углы кратные 45 градусов. Чтоб двигать изображение на любой угол, нежно представить car.x, car.y как дробные числа, а перерасчёт производить только в момент перерисовки для получения координаты отрисовки. Сам координаты при этом останутся дробными числами.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
![]()
Спасибо. Это решило мою проблему.
|
![]() |
![]() |
![]() |
#6 |
Заблокирован
Регистрация: 02.03.2014
Сообщений: 439
|
![]()
На тебе ещё пару исправленных ошибок. Всё равно потом попрешся новую тему создавать.
Код:
Последний раз редактировалось XE5; 16.06.2014 в 18:38. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поворот фигуры на заданный угол | _Лето_ | Общие вопросы C/C++ | 0 | 23.03.2014 23:21 |
Поворот обьекта на угол | Lemo | Помощь студентам | 4 | 06.04.2009 19:46 |
Движение обьекта клавишами в с++ | Grizzzli | Помощь студентам | 2 | 05.04.2009 12:43 |
Вращение (поворот на заданный угол) векторного изображения | Македонский | Мультимедиа в Delphi | 6 | 26.02.2009 21:19 |
Поворот изображения на заданный угол. | taller07 | Мультимедиа в Delphi | 4 | 28.11.2008 14:01 |