Tangente an Kreis, unterbestimmtes LGS
-
Hallo!
Ich habe einen Kreis in 3D gegeben und einen Punkt P, der auf der Kreisebene, aber außerhalb des Kreises liegt. Ich möchte nun die Richtungsvektoren der Tangenten von P an den Kreis berechnen. Ich möchte das ganze eigentlich nicht in 2D transformieren und wieder zurück rechnen, sondern gleich in 3D bleiben, das muss ja auch irgendwie gehen.
Ich habe bis jetzt folgendes:
M ist der Mittelpunkt des Kreises r ist eine Verbindung von M zum Tangentialpunkt d ist P-M a ist eine Verbindung von P zum Tangentialpunkt n ist die Normale der Kreisebene Nun habe ich mir folgende Gleichungen überlegt: 1) M+r=P+a 2) r*n=0 Radius liegt in Ebene 3) a*n=0 Tangente liegt in Ebene 4) a*r=0 Tangente und Radius stehen senkrecht aufeinander 5) |r|=R die Länge der Verbindung von M zum Tangentialpunkt muss der Radius des Kreises sein 6) |a|=Sqrt(d^2-R^2) nach satz des Pythagoras
Da es zwei Lösungen gibt, kann es kein lineares System sein, sieht man ja auch schon in Gleichung 4)
Wie könnte ich das am besten mit dem Computer lösen? Ich habe mir irgendwie folgendes gedacht:
- Ich habe 6 Unbekannte, jeweils 3 für a und r (x,y und z)
- 1) ergibt drei lineare Gleichungen
- 2) und 3) ergeben zusammen 2 lineare GleichungenIch dachte, ich könnte dieses unterbestimmte LGS relativ einfach lösen, und dann Gleichung 4) in dieses einsetzen und zwei Punkte rauszubekommen (wahrscheinlcih dann mit pq-Formel).
Mein Problem ist nun, wie ich das LGS möglichst einfach löse. Hätte ich 6 GLeichungen kann man ja einfach die Inverse bilden und fertig, aber so?
Oder habt ihr eine einfachere Idee, das Problem auf einem anderen Wege zu lösen?
Liebe Grüße, Maxi
-
Ob du es in 3 Dimensionen oder mehr loest, spielt keine Rolle, da es immer ein 2 dimensionales Problem bleibt. Es ist auch am einfachsten im 2 dimensionalem Raum zu loesen. Eine Idee: Bezugssystem so waehlen, dass die Kreisebene in der xy-Ebene des neuen Koordinatensystems liegt (vielleicht auch M im Ursprung) und einfach 2D rechnen mit z = 0. Auch wenn du das nicht moechtest (warum auch immer), du wirst die Transformation in einer Rechnung mit 3 oder mehr Koordinaten sowieso implizit drin haben.
-
Hallo Maxi,
ein Gleichungssystem brauchst Du dazu keines lösen. Und es bleibt ein 2D-Problem; nur es ist nicht nötig, alles zu transformieren und zurückzutransformieren, sondern man rechne einfach in der Ebene, die durch (P-M) und (n x (P-M)) aufgespannt wird.
es sei
M und P wie oben
R der Radius (Betrag)
d = P-M Bem.: negativ zu Deiner Definition
n die Normale der Kreisebene
x das KreuzproduktDie beiden Tangenten-Berührpunkte T1,2 berechnen sich aus:
T1,2 = M + R * (R*d +/- (n x d) * sqrt(d*d - R*R) / |n|) / (d*d)
Bem.: im besten Fall ist |n|==1
zur Erklärung:
Der Winkel der durch d und r=T-M aufgespannt wird, sei phi. Dann istcos( phi ) = R / |d|
und
sin( phi ) = sqrt(|d|*|d| - R*R) / |d|
Der Einheitsvektor in Richtung d ist: d / |d| und senkrecht dazu ist der Einheitsvektor: (n x d)/(|n|*|d|), Achtung das gilt nur weil n senkrecht auf d steht - also der Kreis und P liegen in einer Ebene.
T (der Berührpunkt) berechnet sich:
T = M + R*cos( phi ) * d / |d| +/- R* sin( phi ) * (n x d)/(|n|*|d|)
sin( phi ) und cos( phi ) von oben einsetzen und etwas vereinfachen (z.B.: |d||d| = dd Skalarprodukt) dann kommt man auf obige Gleichung. +/- deshalb, weil auf jeder Seite von d ein T liegt.
Gruß
Werner@Edit: Vorzeichen unter der Wurzel in Formel sin( phi ) = .. richtig gestellt
-
Hallo Werner!
Deine Rechnung ist super! Wo ich mir nochma ne Skizze gemalt habe und deinen Weg überlegt habe, erscheint er so klar und logisch
Vielen Dank, so klappt das wunderbar!