Wie berechne ich den Schnittpunkt zwischen zwei Linien

Ich bin versucht zu berechnen, den Schnittpunkt zwischen den Linien für eine Optical-Flow-Algorithmus mit Hilfe einer Hough-Transformation. Allerdings bin ich nicht immer die Punkte, die ich sein sollte, wenn ich mit meinem Algorithmus zur Berechnung der Schnittpunkte.

Speichere ich die Zeilen, auf die eine Instanz einer Klasse, die ich erstellt namens ImageLine. Hier ist der code für mein Schnittpunkt-Methode.

Point ImageLine::intersectionWith(ImageLine other)
{
    float A2 = other.Y2() - other.Y1();
    float B2 = other.X2() - other.X1();
    float C2 = A2*other.X1() + B2*other.Y1();

    float A1 = y2 - y1;
    float B1 = x2 - x1;
    float C1 = A1 * x1 + B1 * y1;

   float det = A1*B2 - A2*B1;
   if (det == 0)
   {
        return Point(-1,-1);
   }
   Point d = Point((B2 * C1 - B1 * C2) / det, -(A1 * C2 - A2 * C1) / det);
   return d;
}

Ist diese Methode richtig, oder habe ich etwas falsch gemacht? Soweit ich das beurteilen kann, sollte es funktionieren, da es für einen einzigen Punkt, den ich hart codiert durch, allerdings habe ich nicht in der Lage gewesen, um eine gute Kreuzung bei der Verwendung von echten Daten.

InformationsquelleAutor AndrewSchade | 2013-05-13

Schreibe einen Kommentar