Oppure

Loading
24/03/09 17:49
Federico1976
Sei un Grande Ora provo subito Grazzie Mille
:k:
aaa
29/03/09 12:36
Il Totem
Non ho risposto perchè ero a Berlino. Comunque, se si tratta di una linea spezzata o di una curva a bassa tensione, si può usare questo codice, che dovrebbe funzionare con qualsiasi array di punti:
    Function DetectIntersection(ByVal Line1() As PointF, ByVal Line2() As PointF) As PointF()
        If Line1.Length = 1 Then
            Return Nothing
        End If

        Dim Result As New List(Of PointF)

        For I As Int32 = 0 To Line1.Length - 2
            If Line1(I) = Line2(I) Or Line1(I + 1) = Line2(I + 1) Then
                If Line1(I) = Line2(I) Then
                    Result.Add(Line1(I))
                Else
                    Result.Add(Line1(I + 1))
                End If
                Continue For
            End If

            Dim m1 As Single = (Line1(I + 1).Y - Line1(I).Y) / (Line1(I + 1).X - Line1(I).X)
            Dim q1 As Single = Line1(I).Y - Line1(I).X * m1
            Dim m2 As Single = (Line2(I + 1).Y - Line2(I).Y) / (Line2(I + 1).X - Line2(I).X)
            Dim q2 As Single = Line2(I).Y - Line2(I).X * m2

            If m1 = m2 And q1 = q2 Then
                'Le rette sono coincidenti, ci sono infiniti punti di intersezione
                Continue For
            ElseIf m1 = m2 Then
                'Le rette sono parallele, non ci sono punti di intersezione
                Continue For
            Else
                Dim p As PointF
                p.X = (q1 - q2) / (m2 - m1)
                p.Y = m1 * p.X + q1
                'Esiste un punto di intersezione, ma bisogna controllare che appartenga
                'al segmento considerato
                Dim Area As New RectangleF(Math.Min(Line1(I).X, Line1(I + 1).X), Math.Min(Line1(I).Y, Line1(I + 1).Y), _
                    Math.Abs(Line1(I).X - Line1(I + 1).X), Math.Abs(Line1(I).Y - Line1(I + 1).Y))
                If Area.Contains(p) Then
                    Result.Add(p)
                End If
            End If
        Next

        Return Result.ToArray()
    End Function
aaa
22/06/09 14:53
Federico1976
Ho controllato il mio vechio post per caso con latra funzione trovavo solo il punto di intersezione delle rete e non mi riusciva capire se mi cascava nel segmento con questo e perfetto
Aspio sei un mito :hail:
aaa