среда, 26 мая 2010 г.

Хвостатые стрелки

Стояла ли перед вами когда-либо задача нарисовать программно стрелки?
Если вы пишете на AS2-3, то возможно ДА. Если требуется обычная прямая стрелка, это еще куда ни шло. Но в случае когда стрелка может быть ломаной, или кривой?
Так вот. Сегодня я покажу, как можно такие стрелки нарисовать.
Код написан на AS2. Да, да :), только не плюйтесь во все стороны и не брызжите слюнями на монитор. На чем изначально было написано на том и выкладываю. Кому надо может переделать на AS3 (работы практически 0).
Оговорюсь сразу стрелки будут полигональными. Тут есть свои ограничения.
1.Нам нужна вспомогательная функция:



  1. function getAngledPoint(fromPoint: Point, toPoint: Point, delta: Number, angle: Number): Point

  2. {

  3.         var realAngle: Number = Math.atan2(toPoint.y - fromPoint.y, toPoint.x - fromPoint.x);

  4.         var calcAngle: Number = realAngle + angle;

  5.         return new Point(toPoint.x + Math.cos(calcAngle) * delta, toPoint.y + Math.sin(calcAngle) * delta);

  6. }





Я думаю из демонстрации понятно что она делает. Она находит точку для отрезка с углом.
2. Второй рисунок показывает порядок рисования точек для простой стрелки.




Скачав код, можно увидеть еще пару вспомогательных функций. intersectLineLine - находит пересечение линий, для промежуточных точек между p1-p2 и p7-p6, и drawPolygon просто рисует полигон.




1 комментарий: