![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.06.2010
Сообщений: 20
|
![]()
Здравствуйте!
Это конечно форум программистов, но полагаю, что все программисты разбираются в математике. Сразу перейду к делу. Есть некоторое трехмерное пространство точек. В нем существует некоторая плоскость. Необходимо точки этой плоскости перевести из 3D в 2D. Не просто сделать проекцию на две оставшиеся оси а перейти к новому пространству. Как я понял, мне необходимо найти наименьшее собственное число плоскости и соответствующий ему вектор, который и станет, новой осью в новой системе координат, так как этот вектор должен показывать направление пространства. Извините за невнятное изложение мыслей, не силен в математике. Буду благодарен за любые высказанные соображения по этому поводу. Прошу объяснить как можно популярнее. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Я понимаю нужно перспективное отображение плоскости на эээ... монитор xD?
Или вы хотите чтобы отображение точек пространства шло на плоскость и потом показать это все на экране монитора. Что впрочем можно свести к первой задачи за счет преобразований над пространством. Кажись понял. В общем если плоскость не сложная, а обычный прямоугольник. То нужно развернуть все пространство таким образом, чтобы эта плоскость встала в x, y, z = 0 с помощью матричных преобразований каждой точки в пространстве(матрица поворота, переноса, масшатбирования). Ну а далее, если требуется перспективное отображение на эту плоскость, то ее можно масштабировать в (-1, -1, 1, 1) для простоты, а для ортогональной проекции можно все оставить как есть и построить матрицы отображений Код:
Последний раз редактировалось Kostia; 12.06.2012 в 02:39. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.06.2010
Сообщений: 20
|
![]()
В трехмерном пространстве найдена некоторая плоскость и необходимо точки принадлежащие этой плоскости переместить в двумерное пространство. Каждой точке плоскости с координатами x,y,z по какому то правилу сопоставить новые координаты x,y. Вот в чем задача.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
![]()
В математическом анализе есть такая вещь - переход к новой системе координат. Там, конечно, рассматриваются несколько другие цели - например, если вычисление интеграла в заданой системе координат является очень трудным или невозможным, переходят к другой системе координат... Правда, предлагаются полярная система и ортогональная система, в них как раз переходят из декартовой системы (обычная прямоугольная). Но, возможен, наверное и переход в двухмерный декарт. А по научному это называется преобразованием системы координат.
Мы, к сожалению, проходили только переход в полярную и ортогональные системы - я помню там все это как-то очень хитро и мудрено было...Может быть, в Интернете есть что-то подходящее - пока я нашла, к сожалению, только переход от параметрической системы (там где синус и косинус) в декартовую систему.... Если бы Вы задали это вопрос пораньше, могла бы у преподавателей спросить - аж самой интересно.... PS Я попытаюсь найти что-нибудь для Вас, может попадется пример... Вот есть в главе Преобразования координат в 2D http://gamedev3d.narod.ru/book1/chap1/chap1.html
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Blondy; 12.06.2012 в 02:42. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Если точки уже принадлежат плоскости, то проблем в отображении нет. Находите нормаль к плоскости, есть вектор (0,0,1), находите углы вращения, чтобы направление нормали совпало с (0,0,1), множите точки на плоскости на соответствующие матрицы поворота, а затем переносите новые точки в (x', y', 0), так чтобы они уместились на мониторе, если требуется.
Последний раз редактировалось Kostia; 12.06.2012 в 02:46. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 30.06.2010
Сообщений: 20
|
![]()
Kostia, я понял вашу идею. Спасибо. Думаю попробую. А не подскажете есть ли в OpenGL средство позволяющее добраться до координат точек после применения к ним различных поворотов. Если вращать некий предмет функцией glRotatef, то в массиве изначальных координат ведь ничего не измениться. А как добыть координаты точек после применения вращения?
Извините за невнятность, но думаю Вы меня поймете) |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 30.06.2010
Сообщений: 20
|
![]()
Blondy, спасибо за участие, но в статье речь идет о преобразовании координат не к 2D ,а так сказать, внутри 2D. Как растянуть сжать или повернуть точки двумерного пространства.
|
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Leiph, нужно самостоятельно множить точки на матрицы, если требуется узнать их новые координаты. Можно воспользоваться уже готовой библиотекой opengl mathematics, http://habrahabr.ru/post/138731/
PS: в статье которую указала Blondy, написано все верно, там только нет формулы непосредственного отображения 3D точек в соответствии с матрицей проекции. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программы по математике | novivirus | Софт | 0 | 30.05.2011 06:56 |
Задача по прикладнойм математике | Bustle | Свободное общение | 1 | 01.02.2011 23:55 |
Справочник по математике | rzn1 | Софт | 0 | 13.04.2010 21:31 |
Графика в математике 5. | Dirt | Фриланс | 6 | 05.01.2010 16:49 |
пара функций по математике. | blackstersl | Свободное общение | 5 | 21.04.2009 15:01 |