2017-03-14 2 views
0

Ma question concerne le calcul des coordonnées de points dans l'espace 2D. J'ai deux cercles - extérieur et intérieur, qui sont centrés entre eux (l'intérieur est au milieu de l'extérieur).Comment calculer le point situé sur le cercle extérieur en suivant la ligne de repère du cercle intérieur

ce que je sais: -les deux rayons cercles (R1, R2) -les coordonnées 2D d'un point aléatoire (x) dans l'espace toujours en dehors du cercle intérieur

Je veux pour savoir: -Les coordonnées 2D des deux points (y, z) qui se trouvent sur le cercle extérieur suivant les deux tangentes du point aléatoire (x)

Voici une illustration de ce dont j'ai besoin enter image description here

+0

Utilisez [this] (http://mathworld.wolfram.com/Circle-LineIntersection.html) deux fois. D'abord pour la ligne tangente du point d'intersection des coordonnées et le petit cycle obtenu (le cas détermine = 0, cette équation résout le problème). Deuxième ligne d'intersection (qui ont une coordonnée de deux points, calcul de la première étape) et grand cycle. L'état du point est dans l'espace toujours à l'extérieur du cercle intérieur - * non utilisé. * Lorsque le point est entre deux cycles, la réponse était la même! –

Répondre

2

centre de cercles de let est coordonnée origine (0,0) (décalage d'autres coordonnées de vraies centrales), point aléatoire est P, point grand cercle est Q, petit rayon est r, plus grand est R.

Nous pourrions construire un système d'équations pour la distance du centre au point tangent et pour le point d'intersection, mais cela nécessite la résolution de l'équation quartique avec des coefficients plutôt longs.

Donc, à première équation de trouver la tangente du point P à petit cercle avec la trigonométrie:

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) 

maintenant pour les deux points de tangence résoudre l'équation du second degré comme

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

pour paramètre inconnu s, obtenir deux solutions s1,s 2 et trouver des points d'intersection

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

Notez que la solution se compose de quatre points - deux tangentes, deux points d'intersection pour chaque tangente.