MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
Математический подход к движению
Тема для тех кто не знает что это, будет полезно.
Что такое сферические координатыИтак, частным случаем сферических координат являются полярные координаты (угол плюс расстояние) данные координаты позволяют очень удобно и гибко работать с перемещениями в 2d (да и не только с ними), в сферических же координатах добавляеться еще один угол, в результате мы получаем 3d аппарат. Как это выглядит?Картинка Итак, там есть два угла, нижний (который фи) это известный нам угол полярных координат, а вот верхний (тета) тот самый введенный, в классике, как на картинке, это угол между направлением "вверх" и направлением к точке (чьи координаты мы хотим представить), так же существует и система координат, где угол береться между направлением и проекцией на плоскость. Формулы переходаДля полярных координат это: Код:
Для сферических все не намного сложнее: Код:
t - новый угол, эти формулы для классики, для второй системы координат достаточно поменять синус и косинус введенного угла местами. Для чего это нужноНу спектр применения довольно широк, например когда нужно, чтоб огненный шарик летел не просто в точку с координатами X и Y, но и учитывалась высоты этой точки. В общем там где высота иммеет значение. Еще одна формулаПросто для общего развития (тех кто не знает само собой ). Формула рсстояния d 3d Код:
Где dx, dy, dz - соответствующая разница координат. Циллиндрические координатыНо не всегда 3d удобно представлять в виде сферы. Пример такого неудобства всевозможные спирали вокруг юнита и так далее. Интуитивно многие приходили к этой системе. И она несколько проще для понимания. Как это выглядит? разберемся чем это отличаеться от сферических координат? В основе все та же полярка, а вот 3я координата вводиться просто и без заумностей, как высота. Формулы переходаФормулы тут тоже гораздо проще: Код:
Тут угол а - угол полярных координат, h - высота точки, p - длинна проэкции на плоскость. Для чего это нужноС помощью циллиндрических координат решаються те же задачи что и с помощью сферических, тут стоит вопрос удобства. Например реализация движения по поверхности сферы это удобнее в сферических, а по поверхности цилиндра это в циллиндрических. Что такое повороты и с чем их едят[/B]Иногда не очень удобно использовать ту или иную систему координат "как есть". Например задача: построить окружность в плоскости отличной от горизонтальной. На первый взгляд решение стоит копать в сторону сферических координат... Но нахождение параметрического уравнения такой окружности в сферических координатах не такая уж простая задача, гораздо удобнее и быстрее (как в человеческом понимании, так и в машинном) работать с поворотами. Что нам нужно?Для начала разберемся, что же задает плоскость в пространстве? Для наших целей подойдет 2 угла (a и b) и точка t. t - точка через которую проходит горизонтальная плоскость (которую и будем поварачивать) a - угол поворота вокруг оси, параллельной X, проходящей через t b - угол поворота вокруг оси, параллельной Z, проходящей через t (на самом деле можно брать любые 2 оси) Таким образом можно задать любую плоскость в пространстве. Формулы переходаПерейдем к формулам. Пусть есть две точки t1 и t2, и угол на который надо повернуть t2 относительно t1 (пусть это будет угол a) вокруг какой-то оси. Тогда формулы поворота будут иметь вид: Код:
Здесь x', y' и z' - новые координаты точки t2. Опять к окуржностямВернемся к нашей задаче. С помощью поворотов и можно построить окружность с центром в какой либо точке и произвольным наклоном. Что для этого нужно? Не так много. Построить окружность с помощью 2d координат, и подействовать на них последовательно двумя поворотами относительно двух любых осей на требуемые углы. На самом деле мы опять придем к сферической системе координат, но как бы с задней двери. В примере показаны юниты летающие по поверхности цилиндра и сферы (в 2х вариациях: через сферические координаты и повороты полярной системы координат). Каждые 5 секунд будут создавться по одному юниту для каждой системы координат. Выкладываю пример движения по параболе. Основано на векторах, пока без комментариев и дополнений к статье. Отредактировано MF_Andreich, 09.03.2009 в 13:09. |
05.02.2009, 18:29 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
перемещу в желтую прессу
если дополнить - покатит на статью ScorpioT1000 добавил: я думаю, если еще джон подключится.. =) |
05.02.2009, 19:10 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
ScorpioT1000
А чем дополнить? примерами использования? |
05.02.2009, 19:11 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
можно какие-нибудь удобные объекты показать и операции с ними |
05.02.2009, 19:19 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
dk
offline
Опыт:
61,843Активность: |
Эт как бы изучается на первом курсе, иногда и в школе... Есть еще много разных систем координат. Цилиндрические, параболические и т.д. http://ru.wikipedia.org/wiki/Категория:Системы_координат
dk добавил: Можно в статью Sergey'а с полярными координатами, эту инфу добавить... |
05.02.2009, 19:49 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
MF_Andreich, довольно кстати полезно. Мне как-то нужна была 3-я формула. Ты мне ее успешно тогда сказал =) Думаю теперь не буду создавать топиков на тему Сфеерических координат.
|
05.02.2009, 20:13 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
Цитата:
движение в 3Д почти исключительно векторами делаетса... син,кос это ущербный мат способ =) ну и однозначно нужны "игровые примеры" иначе толку то очень мало =) сделай мульти сферы которые летают по трактории сферы =) (ну и постояно меняютса.) dk +1 |
|
05.02.2009, 21:13 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
dk
Я согласен, что ничего нового, но там сверху есть оправдательная строчка! Про другие системы я тоже знаю (учусь на 4 курсе матфака все таки ), и тоже напишу (как развитие полярной будет интересна только циллиндрическая) Toadcop Примеры будут, благодаря тебе и ScorpioT1000 даже знаю какие про движение на векторах полностью согласен, баловался, код балования можно найти в барахолке. (это если интересно) Отредактировано MF_Andreich, 06.02.2009 в 04:29. |
06.02.2009, 04:16 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Почему зд полярка задается всего 2 - углами ? |
06.02.2009, 13:43 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
PlayerDark, эмм А сколькими должна?
|
06.02.2009, 13:47 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Hellfim тремя ? по количеству плоскостей.
|
06.02.2009, 13:50 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,880Активность: |
PlayerDark, ммм, мне кажется или в 2д она задается 1-им углом? =)
|
06.02.2009, 13:52 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Hellfim ну да, в 2д она задается одним углом в XY.
|
06.02.2009, 14:08 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
PlayerDark
На самом деле три координаты конвертируються в три координаты, 2 угла и длина. |
06.02.2009, 14:09 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
А как тогда сделать крен ? |
06.02.2009, 14:16 | #15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
PlayerDark
Крен??? Вообще координаты относяться к точке. Крена у точки не бывает. |
06.02.2009, 14:45 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
MF_Andreich если мне нужно с помощью полярок построить окружность с наклоном к поверхности ?
|
06.02.2009, 16:54 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
PlayerDark
Довольно сложный вопрос, попробовать сейчас не могу... попробую на словах высказать идею: взять нужное приращение (высчитанное для полярных), затем взять вторую вариацию сферических координат и провести такие хитрые махинации: Умножить приращение на косинус угла крена (тау) получишь приращение для нижнего угла. Умножить приращение на синус угла крена и поделить попалам получишь приращение для верхнего угла. Так же нужно умножить верхнюю и нижнюю границу изменения верхнего угла на синус угла крена. (по умолчанию верхняя граница есть 90 градусов, нижняя -90. При достижении верхней границы нужно менять приращение на противоположное, так же и с нижней границей) MF_Andreich добавил: Это только идея... нужно эксперементировать. |
06.02.2009, 18:01 | #18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
MF
Что-то вокруг не так
offline
Опыт:
26,594Активность: |
PlayerDark
Я сегодня попробую. Если получиться то дополню пример еще одним ястребом. |
07.02.2009, 10:33 | #19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
MF_Andreich, хорошя статья, мне понравилось. Слушай, а можешь в свою статью добавить материал про параболические координаты, жутко интересно, что это такое))
|
07.02.2009, 18:32 | #20
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|