Пересечение линий
Как сделать проверку на пересечение линий?
|
Ответ: Пересечение линий
Тебе нужны математические функции которые выдадут пересекаются ли линии?
Гугля имеет свои результаты, но если ты не смог нагуглить - попробуй ещё. Тут ещё ссылка давно лежит. |
Ответ: Пересечение линий
|
Ответ: Пересечение линий
'x11 координаты x первой точки первой линии
'y11 координаты y первой точки первой линии 'x12 координаты x второй точки первой линии 'y12 координаты y второй точки первой линии 'x21 координаты x первой точки второй линии 'y21 координаты y первой точки второй линии 'x22 координаты x второй точки второй линии 'Y22 координаты y второй точки второй линии Function LinesCrossing:Int(x11:Int, y11:Int, x12:Int, y12:Int, x21:Int, y21:Int, x22:Int, y22:Int) Local d:Float; Local d1:Float; Local d2:Float; Local t1:Float; Local t2:Float; Local x:Float; Local y:Float; Local Collision:Int = False ' решаем систему методом Крамера d = (x12 - x11) * (y21 - y22) - (x21 - x22) * (y12 - y11) ; If (d = 0) Then Return False; d1 = (x21 - x11) * (y21 - y22) - (x21 - x22) * (y21 - y11) ; d2 = (x12 - x11) * (y21 - y11) - (x21 - x11) * (y12 - y11) ; t1 = d1 / d; t2 = d2 / d; If (t1 >= 0 And t1 <= 1 And t2 >= 0 And t2 <= 1) Then x = t1 * x12 + (1 - t1) * x11; y = t1 * y12 + (1 - t1) * y11; Print("Отрезки пересекаются в точке " + X + " " + Y) ; Collision = True; Else Print("Не пересекаются") ; EndIf; Return Collision End Function (C)Пёрто с форума по PHP Извините, не помню источника |
Часовой пояс GMT +4, время: 09:17. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot