Algorithmus: Liegt der Punkt in einer Ellipse?

Von: , Frage gestellt am So, 30. Jul 2006

Hallo!

Irgendwie scheine ich momentan ein Brett vor dem Kopf zu haben, denn ich komme momentan echt nicht weiter.
Es geht um folgendes:
Ich habe eine Matrix, die ein Schwarz-Weiss Bild darstellt.
Zudem habe ich eine Ellipse durch die beiden Hauptachsenlängen, den Mittelpunkt und einen Winkel gegeben.

Aufgabe ist es nun zu prüfen, ob ein Bildpunkt I(x,y) innerhalb der Ellipse liegt.

Ich habe es mit einer "einfachen" & ungedrehten Ellipse bereits hinbekommen.

Beispielcode für ein 256x256 Bild:

//Koordinaten des zu testenden Punktes (per Argument übergeben)
x = arg[0]
y = arg[1]
//Mittelpunkt bei M(128,128)
m_x = 128
m_y = 128
//Länge der Achsen, in Pixeln
a = 10;
b = 20;
//Berechnung nach Ellipsengleichung
k = (x-m_x)^2/a^2 + (y-m_y)^2/b^2 ;
if (k <= 1)
display: "Liegt innerhalb"
else
display: "Liegt ausserhalb"
end;


Dies Funktioniert bei einer nicht-rotierten Ellipse sehr gut, nur irgendwie bringe ich es nicht fertig, den Test bei einer leicht gedrehten Ellipse hinzubekommen.
Auch der Versuch über eine Rotationsmatrix die Koordinaten zu drehen, hat (bisher) nicht wirklich funktioniert.

Hat jemand eine Idee und kann mir da weiterhelfen?

Grüße

Björn

1 Antworten zu dieser Frage

  1. Antwort von nach 58 Minuten 1 hilfreich
    Re: Algorithmus: Liegt der Punkt in einer Ellipse?

    Hallo Björn,

    wenn die Ellipse gedreht ist, brauchst Du ja eine Information über den Winkel. Damit wirst Du sicher die beiden Brennpukte ermitteln können.

    Danach mußt Du nur noch die Abstände zu den Brennpunkten ermitteln. Die Summe der Abstände zu den Brennpunkten ist konstant.

    Gruß, Rainer

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!