|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2010, 02:02 | #1 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Различные системы координат
Немного про разные системы координат, думаю эта информация будет полезна.
Декартова система координат является частным случаем криволинейных систем координат, впрочем как и все остальные рассмотренные в этой статье. Я подробно рассмотрю полярную и сферическую системы координат, а с остальными можно будет по аналогии разобраться самим. И так... Полярная система координат, немного картинок с wiki: от полярной системы координат к декартовой: от декартовой системы координат к полярной: Ох, не нравится мне эта картинка... ну в общем p - это расстояние от начала координат до точки или проще говоря длинна радиус вектора. угол фи - это угол между радиус вектором и осью х. фи=arctan(y/x) все нюансы на картинке(при x=0) Такс, что нам это дает, ну например можно двигать точку на плоскости Код:
Код:
Вот беда, а как же в 3D, ведь есть только sin и cos? Решение сферическая или цилиндрическая системы координат. Сферическая система координат: немного картинок с wiki: r - расстояние от начала координат до точки угол тэта меняется в пределах [0,pi] угол фи меняется в пределах [0,2*pi) крен, тангаж, рыскание: Код:
Существуют еще и такие "штуки" как кватернионы, но про них нужно писать отдельную большую статью, хотя зачем, их и так полно: http://nehe.gamedev.net/data/lessons...n_Camera_Class http://www.gamedev.ru/code/articles/...BE%D0%BD%D1%8B |
13.05.2010, 15:45 | #2 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
А можно спросить зачем все это. Что конкретно можно реализовать с использованием, например Декартовой системы?
|
13.05.2010, 17:54 | #3 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Можно реализовать движение камеры в пространстве.
Например фиксируем положение курсора в центре окна и при его движение проверяем его смещение относительно центра в соответствии меняем углы фи(курсор смещен вправо или влево относительно центра) и тета. Или можно простенький авиасимулятор сделать. Ну а полярная она и за полярным кругом полярная. Сразу отпадают вопросы как поворачивать что-то за мышкой или чем-то еще. Как двигаться по направлению взора персонажа и т.п. Воть, в общем это один из способов задания ориентации объекта в пространстве. Можно юзать матрицы вращения или кватернионы, но я считаю что с формулами перехода из одной системы в другую более понятнее тому же школьнику, нежели начинать грузить матричными произведениями и т.п. Последний раз редактировалось Kostia; 13.05.2010 в 18:10. |
13.05.2010, 17:54 | #4 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
double post...
|
13.05.2010, 18:32 | #5 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Ну нам мой взгляд - тут чисто прописные истины геометрии средних (или каких там) классов.
Ладно бы это была еще какая-то база для конкретных примеров применения, а то - чисто голый фундамент (причем где-то из соседей первого торжественно заложенного камня). И совершенно никакого практического применения. Не в обиду будь сказано, но на мой взгляд, материал в текущем состоянии - абсолютно бесполезен.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
13.05.2010, 20:02 | #6 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
First Person Shooter Controls
Вот simple так сказать by Kostia.
Управление персом в пространстве от первого лица использую сферическую систему координат. Плюсы метода, прост, гибок, можно легко задать ограничения угла поворота головы, можно легко ввести прыжок... Хождение по поверхности можно легко представить в цилиндрической системе координат. x=p*cos(a); //a-угол фи, для сферической и цилиндрической один на двоих y=p*sin(a); z=z; //высота ландшафта Ну а ориентация "прицела" или "взора" игрока легко задается в сферических координатах. Расчет полете пули после выстрела игрока, например из автомата, легко рассчитать в сферической системе координат. |
13.05.2010, 22:47 | #7 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Точку на плоскости можно задать тремя способами(по две координаты).
длина-длина угол-угол угол-длина |
14.05.2010, 12:43 | #8 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
угол-угол - это как??? Как можно точку с координатами (100,100) задать двумя углами?
|
14.05.2010, 13:39 | #9 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Вот есть у нас, например, две базовые точки с координатами (0, 0) и (0, 200) Да, это координаты в совсем другой системе координат, в декартовой, привязанной неизвестно к чему, но забудем пока об этом и будем считать, что все нормально
Соответственно, мы можем построить луч из точки A (первая) в точку B (вторая). Вот от этого луча мы и будем отсчитывать углы (скажем, против часовой стрелки, как нас в детстве научили). Выглядеть это будет так: из точки A выходит луч, угол phi между которым и лучем AB равен pi/4. Это - первая координата. Из точки B в свою очередь выходит луч, составляющий с лучем AB угол 3*pi/4. Это - вторая координата. Как нетрудно догадаться, эти два луча (выходящие из точек A и B соответственно) пересекаются в единственной точке - в точке с координатами в той самой декартовой системе (100, 100). А в СК типа угол-угол, привязанной к двум указанным точкам ее координаты будут (pi/4, 3*pi/4).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод в различные системы исчисления | ~AngelOK~ | Компоненты Delphi | 1 | 11.10.2009 16:57 |
Преобразование координат системы СК-42 | Македонский | Общие вопросы Delphi | 5 | 09.03.2009 14:15 |
Перевод числа в различные системы счисления | ...Оленька... | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 14.12.2008 16:08 |
Определить длину отрезка во 2-м квадранте системы координат | kolduev | Помощь студентам | 9 | 13.02.2008 17:45 |