Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Построить абрис объекта (http://www.flasher.ru/forum/showthread.php?t=153209)

ivan.renzhin 30.03.2011 12:23

Построить абрис объекта
 
Добрый день, не знаю как подойти к задаче. есть изометрический мир, есть 2 точки на карте, с разными координатами. Во второй точке стоит объект, для упрощения в форме куба, из 1 точки во вторую строится прямая и перпендикулярно ей строится плоскость, вопрос, как можно получить площадь абриса объекта на плоскости? ну или координаты точек на плоскости?

Idon 30.03.2011 14:39

Мне кажется, надо повернуть точку 1, относительно точки 2, на такие углы, чтобы точка 1 совпала с точкой 2. То есть плоскость абриса была бы параллельна плоскости экрана.
А затем выполнить поворот всех точек объекта на эти углы.

ivan.renzhin 30.03.2011 14:49

Это логично, но дело как раз все в этом надо вычислить угол поворота 3д матрицы, направление "камеры" можно узнать перемножив вектора точек, так?

Добавлено через 1 час 43 минуты
да здравствует openGL

Код AS3:

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,
                0001
        ];
 
        var matrixVector:Vector.<Number> = new Vector.<Number>;
        matrixVector.push.apply(matrixVector, matrixArr);
 
        var m:Matrix3D = new Matrix3D(matrixVector);
        m.transpose();
        return m;
}



Часовой пояс GMT +4, время: 22:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.