![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 175
|
![]()
Здравствуйте, пишу небольшую игру с физической моделью, не могу понять как организовать вращение. Даётся n квадратов состоящих из набора точек и выводятся через Canvas.Polygon;
Перерыв интернет так и не понял как заставить вращать их относительно точки, допустим упал один кубик на угол и должен наклониться относительно точки соприкосновения вправо/влево. Но получается только наклонить все кубики одновременно при чем относительно верхнего левого угла экрана. Помогите с формулой расчёта. Код:
Код:
Кому интересно - Демо ![]()
Здравствуйте
Последний раз редактировалось NEoMASTERR; 14.03.2015 в 08:45. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
обычно формулы поворота приводятся для варианта с центром поворота в начале координат.
Для произвольной точки надо ЗНАТЬ (A0x,A0y,B0x,....D0y) координаты упавшего кубика (С0x,X0y) Угол на который упал кубик (координаты точки поворота) 1. перенести начало координат в точку поворота (угол кубика и поверхность) (A1x=Ax-C0x, A1y=Ay-C0y, B1x=Bx-C0x,..., D1y=Dy-C0y) 2. повернуть кубик относительно начала новых коодинат на @ (A2x=A1x*cos@-A1y*sin@, A2y=A1x*sin@+A1y*cos@, B2x=...., D2y=...) формулу не проверял взял из вашего поста 3.Вернуть начало координат на место (A3x=A2x+C0x, A3y=A2x+C0y, B3x=B2x+C0x, .... , D3y=D2y+C0y)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 14.03.2015 в 11:45. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 175
|
![]() Цитата:
Код:
Здравствуйте
|
|
![]() |
![]() |
![]() |
#4 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
Возможно проблемы с округлением (неточность расчетов, расчет в Extended - хранение в Single). Храни только начальное состояние полигона (модель), и текущие смещение и поворот.
Смещение объекта сводится к увеличению текущего смещения. Поворот - к увеличению текущего поворота. Ну а отрисовку (расчет текущих координат) ты уже сделал. А можеш попробовать хранить все координаты в Extended. Должно помочь. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 175
|
![]() Цитата:
Здравствуйте
|
|
![]() |
![]() |
![]() |
#6 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
![]()
ок. домой вернусь - посмотрю.
Добавлено --------------------------------------- Кажись понял Код:
Код:
Вращение ролигона.zip Последний раз редактировалось Sibedir; 24.03.2015 в 20:00. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 22.12.2010
Сообщений: 175
|
![]() Цитата:
![]()
Здравствуйте
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вращение эллипса | kpat1k | Общие вопросы Delphi | 14 | 04.11.2014 16:47 |
Вращение Элипса в canvas | Never_more | Помощь студентам | 0 | 13.05.2010 23:38 |
Вращение | stscolt | Помощь студентам | 1 | 08.10.2009 20:39 |
Вращение параллелепипеда | stscolt | Помощь студентам | 1 | 06.10.2009 22:50 |
Вращение изображения | beginner | JavaScript, Ajax | 5 | 07.07.2008 23:44 |