Найти правую верхнюю точку повернутого прямоугольника в AS3 (Flex) - PullRequest
1 голос
/ 03 мая 2010

У меня есть прямоугольник любой произвольной ширины и высоты. Я знаю X, Y, ширину и высоту. Как мне решить верхние правые координаты, когда прямоугольник повернут на N градусов? Я понял, что если бы это было по оси, я бы просто решил для (х, у + ширина). К сожалению, это не так, когда я применяю матрицу преобразования к прямоугольнику, чтобы вращать его вокруг его центра.

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Обычно проще всего и быстрее позволить отображаемому коду Flash сделать такие вещи за вас.Создайте пустой Sprite и поместите его в экранный объект прямоугольника в углу, который вы хотите отслеживать.Затем найдите местоположение этого спрайта в координатном пространстве по вашему выбору:

var p:Point = new Point(0,0);
myRectangle.myCornerSprite.localToGlobal( p );
someDisplayObject.globalToLocal( p ); // for a coord space besides the stage

Это избавит вас от каких-либо предположений относительно дизайна прямоугольника (т.е. точки регистрации) и сработает, даже если прямоугольник долженбыть перекошенным или масштабированным, а также повернутым.Кроме того, это будет намного проще реализовать и поддерживать, чем беспорядок косинусов и еще много чего.

(Обратите внимание, что в приведенном выше коде предполагается, что «верхний правый угол» относится к определенному углу - если вы хотите исследовать любой уголпроисходит в крайнем правом верхнем углу в данный момент, я просто добавил бы сделать то же самое со спрайтом во всех четырех углах и выбрать тот, который находится справа вверху в глобальных координатах.)

0 голосов
/ 03 мая 2010

Вам просто нужно вычислить точку на окружности для заданного радиуса. Центр вашего прямоугольника будет началом круга, а любой угол будет точкой на окружности круга. Вам нужно использовать тригонометрию, чтобы вычислить новую точку, используя вращение. Сейчас у меня нет времени, чтобы объяснить все это, но вот ссылка на приличную библиотеку 2D Javascript, которую я использовал в прошлом и которая должна дать вам все, что вам нужно (учитывая, что математика практически одинакова в Javascript и ActionScript), чтобы решить это для себя.

http://jsdraw2d.jsfiction.com/viewsourcecode.htm

...