|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2009
Сообщений: 176
|
пересечение отрезка с прямоугольником
Как можно определить пересеклась ли нарисованная линия с прямоугольником?
|
|
|||||
Вот первые ссылки из гугла: http://www.rsdn.ru/forum/alg/641103.1 - уравнениями, Алгоритм Коэна — Сазерленда - как-то интересно.
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Если линия нарисованная, то можно и hitTestObject.
|
|
|||||
вариантов много, зависит от конкретных условий задачки
флеш еще позволяет и 'шаманские' решения, типа нарисовать этот прямоугольник в шейпе и пройтись по точкам отрезка на предмет хитТеста с этим шейпом Akopalipsis, если линия нарисованная, то hitTestObject будет с прямоугольником, ее обрамляющим, т.е. пересечение именно отрезка достоверно не узнать |
|
|||||
>>координаты прямоугольника(1 точка), а так же его длина и ширина
т.е. предполагается, что стороны прямоугольника параллельны осям в таком раскладе отрезок неизбежно пересечет его, если он хотя бы одной точкой попадает в область прямоугольника: public static function lineRecIntersection(lineStart:Point, lineEnd:Point, recTL:Point, recWidth:Number, recHeight:Number):Boolean { const maxX : Number = Math.max(lineStart.x, lineEnd.x); const naxY : Number = Math.max(lineStart.y, lineEnd.y); const minX : Number = Math.min(lineStart.x, lineEnd.x); const minY : Number = Math.min(lineStart.y, lineEnd.y); var rec:Rectangle = new Rectangle(recTL.x, recTL.y, recWidth, recHeight); return !(maxX < rec.left || minX>rec.right || naxY < rec.top || minY> rec.bottom); } |
|
|||||
Регистрация: Nov 2009
Сообщений: 176
|
Прямоугольник постоянно движется в разные стороны и может иметь разные координаты, разный угол и разное направление.
|
Часовой пояс GMT +4, время: 18:33. |
|
« Предыдущая тема | Следующая тема » |
|
|