2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проецирование 3D на 2D
Сообщение15.03.2014, 12:56 
Добрый день, уважаемые участники форума!
Тема, которую я поднимаю, конечно на стыке наук, но та часть, где я столкнулся с проблемами больше принадлежит алгебре. Нужно написать простенькую программу, рисующую элементарные 3D объекты и преобразования с ними(например, вращение куба).
Понятно, что рисовать надо не сам объект, а его проекцию. Но работать я хочу в виртуальной трехмерной системе координат, а проекцию уже строить отдельно.
Изображение
Начнем с элементарного, с точки в пространстве. Найти координаты точки-проекции на плоскости "просмотра" очень легко, но это будут координаты в той же виртуальной системе координат. А вот как связать эти координаты с реальными 2d координатами на плоскости? Пусть даже для определенности
одна из осей на ней будет совпадать с проекцией какой-то из осей виртуальной системы координат. У меня как-то фантазии не хватает, честно говоря.
Критика способа проецирования принимается.

 
 
 
 Re: Проецирование 3D на 2D
Сообщение15.03.2014, 15:58 
Аватара пользователя
Изображение
У нас есть две системы координат:
1) Синяя, физическая (Вы называете её виртуальной). Векторы, проведенные из её начала, обозначены большими буквами.
2) Зелёная, наблюдателя. Векторы, проведенные из её начала, обозначены маленькими буквами.
В каждой из систем выбран базис (жирные векторы) — правая тройка ортонормированных векторов.

Для наглядности можете считать, что базисные векторы системы наблюдателя привязаны к голове воображаемого наблюдателя.
Начало отсчета находится на переносице.
$\mathbf e_1$ направлен вправо (по отношению к голове);
$\mathbf e_2$ направлен к подбородку;
$\mathbf e_3$ направлен вперед.


Вектор $\mathbf A$ задает положение наблюдателя в физической системе.
Положение объекта в физической системе обозначим $\mathbf R$, в системе наблюдателя $\mathbf r$ — это радиус-векторы, проведенные из начала соответствующей системы к объекту.

Координатами объекта в данной системе называются коэффициенты разложения радиус-вектора объекта по базисным векторам:
$\begin{matrix}\mathbf R=X_1\mathbf E_1+X_2\mathbf E_2+X_3\mathbf E_3\\\mathbf r=x_1\mathbf e_1+x_2\mathbf e_2+x_3\mathbf e_3\end{matrix}$
При этом
$\begin{matrix}X_1=\mathbf R\cdot \mathbf E_1&X_2=\mathbf R\cdot \mathbf E_2&X_3=\mathbf R\cdot \mathbf E_3\\x_1=\mathbf r\cdot \mathbf e_1&x_2=\mathbf r\cdot \mathbf e_2&x_3=\mathbf r\cdot \mathbf e_3\end{matrix}$

По правилу треугольника $\mathbf R=\mathbf A+\mathbf r$.

Опираясь на эту информацию, решите важную вспомогательную задачу.
Даны физические координаты объекта $X_1, X_2, X_3$.
Найти его координаты в системе наблюдателя $x_1, x_2, x_3$.
После этого «экранные» координаты найти уже совсем просто.

 
 
 
 Re: Проецирование 3D на 2D
Сообщение16.03.2014, 13:47 
Спасибо!

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group