2017-03-14 2 views
0

Meine Frage ist zu berechnen Punkte-Koordinaten in 2D-Raum zu berechnen. Ich habe zwei Kreise - äußere und innere, die zwischen ihnen zentriert sind (der innere ist in der Mitte des äußeren).Wie der Punkt, der auf dem äußeren Kreis nach der TAgent Linie des inneren Kreises

Was ich weiß: -die beiden Kreise Radien (R1, R2) -die 2D-Koordinaten eines beliebigen Punktes (x) im Raum immer außerhalb des inneren Kreises

Was ich will, um herauszufinden: -Die 2D-Koordinaten der beiden Punkte (y, z), die auf dem äußeren Kreis nach den beiden Tangenten vom Zufallspunkt liegen (x)

Hier ist eine Illustration, was ich brauche enter image description here

+0

Verwenden [diese] (http://mathworld.wolfram.com/Circle-LineIntersection.html) zweimal. Zuerst für den erhaltenen Koordinatenpunkt der Schnittpunkttangente und kleinen Zyklus (Fall bestimmt = 0, löst diese Gleichung das Problem). Zweite bis zur Schnittlinie (die die Koordinate von zwei Punkten hat, berechnet vom ersten Schritt) und einen großen Zyklus. Bedingung des Punktes ist im Raum immer außerhalb des inneren Kreises - * nicht verwendet. * Wenn der Punkt zwischen zwei Zyklen ist, war die Antwort gleich! –

Antwort

2

Kreise des Let Zentrum koordiniert Ursprung (0,0) (Verschiebung andere Koordinaten durch wahres Zentrum ist), zufälliger Punkt ist P, Punkt an großem Kreis ist Q, kleiner Radius ist r, größer ist R.

Wir könnten ein Gleichungssystem für die Entfernung von der Mitte zum Tangentenpunkt und zum Schnittpunkt aufzubauen, aber es erfordert Lösen von Gleichung vierter Grad mit ziemlich langen Koeffizienten.

So auf dem ersten Fund Gleichung Tangens vom Punkt P zu kleinem Kreis mit Trigonometrie:

Dist = Sqrt(px^2+py^2) 
tan_angle = ArcSin(r/Dist) 
rot_angle = ArcTan2(py, px) 

ta1 = rot_angle - tan_angle 
ta2 = rot_angle + tan_angle 

and tangent points are 
t1x = r * sin(ta1) 
t1y = - r * cos(ta1) 

t2x = - r * sin(ta2) 
t2y = r * cos(ta2) 

nun für beiden Tangentenpunkte lösen quadratische Gleichung wie

(px + s * (t1x - px))^2 + (py + s * (t1y - py))^2 = R^2 

für unbekannte Parameter s, erhalten zwei Lösungen s1,s 2 und finden Sie Punkte von Kreuzungen

q11x = px + s1 * (t1x - px) 
and so on 

Beachten Sie, dass die Lösung aus vier Punkten besteht - zwei Tangenten, zwei Schnittpunkten für jede Tangente.

Verwandte Themen