Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как поставить грань по трем точкам используя углы rotationX...? (http://www.flasher.ru/forum/showthread.php?t=122558)

Alex Lexcuk 13.03.2009 14:20

Как поставить грань по трем точкам используя углы rotationX...?
 
Вложений: 1
Сделал 3 точки
Код:

vecA = new Vector3D(0, 0, 0);
vecB = new Vector3D(100, 100, 200);
vecC = new Vector3D(100, 300, 0);

Расчитал треугольник по этим точкам, как бы, если бы все его точки лежали на одной плоскости, теперь надо развернуть эту плоскость используя (rotationX, rotationY, rotationZ) так, что-бы точки образующие треугольник совпали с теми реальными точками, которые проецирует flash 10.

В обще как имея три точки пространства можно получть углы вращения плоскости, что-бы плоскость легла на эти три точки?
углы то я знаю, слайдером накрутил 191, 21, 37

Как их получить??? Точка вращения vecA.

romanoflash 13.03.2009 16:31

Может это поможет: http://ru.wikipedia.org/wiki/Сферические_координаты

Alex Lexcuk 13.03.2009 17:36

Спасибо материал отличный, как раз про позиционирование углами.
Кто исходничек смотрел, там ошибка, вот так лучше работает
Код:

                        //нахождение угла сab
                        var cab:Number;
                        cab = Math.asin(aa/ab)* (180/Math.PI)-90;

Не было -90 (определил методом тыка).
Кстати если ротация состоит из одного угла например
Код:

                        vecA = new Vector3D(0, 0, 0);
                        vecB = new Vector3D(400, 0, 370);//если b
                        vecC = new Vector3D(0, 350, 0);

То определить углы очень легко
Код:

                        var calcRotationZ:Number =Vector3D.angleBetween(new Vector3D(pB.x, pB.y, 0), vecB) * 180 / Math.PI;
                       
                        trace("calcRotationZ "+calcRotationZ);
                       
                        facTriaSp.rotationY = -calcRotationZ;

естественно rotationX = 0 и rotationZ = 0;

Вместо чисел 400 и 370 можно ставить любые цифры и углы всегда сходяться, хм... прогресс


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

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