Алгоритм для нахождения пересечения двух отрезков

Различные геометрические алгоритмы.
Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Алгоритм для нахождения пересечения двух отрезков

Сообщение Nord777 » 02.01.2008 (Ср) 19:41

ссылка на сайт:
http://algolist.manual.ru/maths/geom/intersect/lineline2d.php


Код: Выделить всё
  'Упрощенный алгоритм. Без вычисления точки пересечения
  Public Function IsLinesCrossLight(ByVal x1!, ByVal y1!, ByVal x2!, ByVal y2!, _
                                    ByVal x3!, ByVal y3!, ByVal x4!, ByVal y4!) _
                                    As Boolean
    Dim Ua!, Ub!, znam!
    znam = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)
    Ua = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)
    Ub = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)

    If znam = 0.0! Then Return False

    Ua = Ua / znam
    Ub = Ub / znam

    Dim LineAHaveCross As Boolean = ((Ua >= 0.0!) And (Ua <= 1.0!))
    Dim LineBHaveCross As Boolean = ((Ub >= 0.0!) And (Ub <= 1.0!))

    If (LineAHaveCross And LineBHaveCross) Then
      Return True
    End If

    Return False
  End Function
Более полный вариант на VB.Net - во вложении.
Вложения
=Пересечение. Прямая и прямая.=.rar
(53.24 Кб) Скачиваний: 169
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Вернуться в Геометрия

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList