Die Steigungsform der Geradengleichung versagt leider an den Winkeln 0° und 180° und wird ungenau im angrenzenden Bereich. Ich verwende deshalb gerne die Normalform
A*x + B*y + C = 0
. Sei dann die Ellipse definiert durch
(x/A)² + (y/B)² = 1
, dann kann man meine bereits vor Äonen geschriebene Funktion verwenden:
Delphi-Quellcode:
function TangEllipse(A, B, X, Y: Extended; out A1, B1, C1: Extended): Boolean;
{ berechnet die Werte für eine Tangente an die Ellipse (A,B) im Punkt P(X,Y)
result : -1 für Fehler
0 für OK }
begin
if IsZero(A) or IsZero(B) then begin
result := false
end
else begin
A1 := X / Sqr(A);
B1 := Y / Sqr(B);
C1 := -1;
result := true;
end;
end;