![]() |
|
|
|||||
Регистрация: Mar 2011
Сообщений: 2
|
![]() Добрый день, не знаю как подойти к задаче. есть изометрический мир, есть 2 точки на карте, с разными координатами. Во второй точке стоит объект, для упрощения в форме куба, из 1 точки во вторую строится прямая и перпендикулярно ей строится плоскость, вопрос, как можно получить площадь абриса объекта на плоскости? ну или координаты точек на плоскости?
Последний раз редактировалось ivan.renzhin; 30.03.2011 в 12:57. |
|
|||||
Регистрация: Sep 2009
Сообщений: 65
|
Мне кажется, надо повернуть точку 1, относительно точки 2, на такие углы, чтобы точка 1 совпала с точкой 2. То есть плоскость абриса была бы параллельна плоскости экрана.
А затем выполнить поворот всех точек объекта на эти углы. |
|
|||||
Регистрация: Mar 2011
Сообщений: 2
|
Это логично, но дело как раз все в этом надо вычислить угол поворота 3д матрицы, направление "камеры" можно узнать перемножив вектора точек, так?
Добавлено через 1 час 43 минуты да здравствует openGL private function lookAt(eye:Vector3D, look:Vector3D, up:Vector3D):Matrix3D { var n:Vector3D = eye.subtract(look); var u:Vector3D = up.crossProduct(n); var v:Vector3D = n.crossProduct(u); n.normalize(); u.normalize(); v.normalize(); var d:Vector3D = new Vector3D(-eye.dotProduct(u), -eye.dotProduct(v), -eye.dotProduct(n)); var matrixArr:Array = [ u.x, u.y, u.z, d.x, v.x, v.y, v.z, d.y, n.x, n.y, n.z, d.z, 0, 0, 0, 1 ]; var matrixVector:Vector.<Number> = new Vector.<Number>; matrixVector.push.apply(matrixVector, matrixArr); var m:Matrix3D = new Matrix3D(matrixVector); m.transpose(); return m; } |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:36. |
|
« Предыдущая тема | Следующая тема » |
Теги |
3d , геометрия |
Опции темы | |
Опции просмотра | |
|
|