XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
ОО наконецто народ до сферических координат добрался.
Может будет полезно, я на этих спеллах сферические координаты осваивал:
Вот допустим конкретный пример: есть куб, описанный 8 точками
берешь центр куба как центр сферических координат,
потом считаешь пространственные углы (a,t) и расстояние в 3D между этим центром и вершиной
(хотя можно это и не считать если создавать куб с заранее известным наклоном и расстоянием от центра до вершины)
и увеличиваешь их на нужный поворот, потом меняешь координаты по ранее изложенным формулам:
polarx(c, dist, a, t) = c + dist * Cos(bj_DEGTORAD * a) * Sin(bj_DEGTORAD * t)
polary(c, dist, a, t) = c + dist * Sin(bj_DEGTORAD * a) * Sin(bj_DEGTORAD * t)
polarz(c, dist, a, t) = c + dist * Cos(bj_DEGTORAD * t)
где "C" - это координата центра "сферы" или куба в нашем случае, а dist - расстояние
Миниатюры
Кликните на картинку для увеличения
Название:  cube.png
Просмотров: 36
Размер:  6.0 Кбайт  

Отредактировано Zanozus, 07.01.2011 в 16:15.
Старый 07.01.2011, 15:03
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
Doc, лови. В личку я тоже отправил.
Если заменить y на x а x на y в этих формулах можно получить вращение вокруг другой оси.
Потом еще подумаю может получится в одну формулу "запихнуть" все оси.
Atan2BJ(SquareRoot((z2-Z1)*(z2-Z1)+(y2-Y1)*(y2-Y1)),x2-X1)
Atan2BJ(y2-Y1,z2-Z1)
set x2=x1+d*CosBJ(a)
set y2=y1+d*SinBJ(a)*SinBJ(b)
set z2=z1+d*SinBJ(a)*CosBJ(b)
p.s а мне понравилось, как только сиссию сдам, обязательно какой-нибудь спелл замучу на сфере.
Миниатюры
Кликните на картинку для увеличения
Название:  cube.jpg
Просмотров: 97
Размер:  13.3 Кбайт  
Прикрепленные файлы
Тип файла: w3x cube.w3x (17.4 Кбайт, 22 просмотров )

Отредактировано Zanozus, 11.01.2011 в 22:17.
Старый 11.01.2011, 21:58
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
УРА ! Я наконец добил эти чертовы сферические координаты !
Любую фигуру в пространстве можно вращать как угодно вокруг любой оси (не только x,y,z), проходящей через точку X1, Y1, Z1
A, B, C - угол на который куб будет поворачиваться каждые 0.03 ,если сделать A=B=C то куб будет вращаться вокруг диагонали. Они и задают ось вращения. (roll, pitch и yaw)
Прикрепленные файлы
Тип файла: w3x cube2.w3x (17.2 Кбайт, 82 просмотров )

Отредактировано Zanozus, 16.01.2011 в 21:06.
Старый 12.01.2011, 23:20
Doc

offline
Опыт: 63,163
Активность:
Zanozus, вау круто, спасибо огромное. Сейчас буду все разбирать по полочкам.
Doc добавил:
готово.
Старый 16.01.2011, 12:59
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
"новый угол" это и есть roll, pitch и yaw
а "совсем новый угол" я не помню как называют, вроде азимутальным я его вобще бы 90 градусов сделал чтобы центр окружности совпал с точкой вращения. В кубе этот угол разный чтобы куб был объемный, а не все вращалось в одной плоскости.
Doc, я этой "проблемой" целый год маялся, все не мог додуматься что для произвольной плоскости надо последовательно делать повороты, а не пихать все в одну формулу.

Отредактировано Zanozus, 16.01.2011 в 13:39.
Старый 16.01.2011, 13:22
Doc

offline
Опыт: 63,163
Активность:
Zanozus, ясно. Кстати у меня все на радианах и результат тот-же. Только угол поворота надо тоже в них указывать.
Старый 16.01.2011, 13:39
Zanozus
Уехал учиться
offline
Опыт: 8,512
Активность:
естесственно !
Старый 16.01.2011, 13:40
Ответ

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

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

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

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



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