Автор
|
Тема: Поворот трехмерных фигур
|
MrSergei |
опубликован 03-02-2002 16:25 MSK
С поворотом плоского прямоугольника теперь все понятно, фигура вращается вокруг начальной точки по ниже приведенным формулам:Xnew=x0+((x-x0)*cos(angle)-(y-y0)*sin(angle)); Ynew=y0+((x-x0)*sin(angle)+(y-y0)*cos(angle)); А для случая вращения вокруг остальных осей как быть? Матрицы поворотов есть, но они написаны для трех-координатной системы (x,y,z), а как быть с плоским представлением трехмерного вращения, ось Z вроде как есть, но вроде как и нет, все надо представлять в координатах (x,y). К примеру есть массив чисел, состоящий из наборов по три числа- x,y,z. Соответственно пусть z будет высотой трехмерной фигуры. Так как все выразить только через x и y?
|
wizzy
|
опубликован 03-02-2002 16:29 MSK
Считаешь через трехмерные матрицы все в трехмерном пространстве, а потом проецируешь на плоскость экрана хоть параллельным методом, хоть направленным. То есть суть в том, что ты вводишь в пространстве плоскость, соответствующую экрану монитора. |
MrSergei
|
опубликован 03-02-2002 20:40 MSK
А как проецировать? всю аналитическую геометрию забыл напрочь. Объясни, если не трудно |
MY
|
опубликован 03-02-2002 21:31 MSK
Проейировать можно например то таким формулам. sx = xSize/2+x*dist/(z+dist), sy = ySize/2-y*dist/(z+dist). Где sx,sy - экранные координаты, x,y,z - пространственные координаты. xSize,ySize - размеры экрана(окна) камера(точка из которой смотришь) находится в точке (0,0,-dist). Вообщем все. |