2010-08-23 7 views
0

Question courte: Étant donné un point P et un segment de droite L, comment trouver le ou les points sur L qui sont exactement à la distance X de P, s'il est garanti qu'il existe un tel point?Faire pivoter un cercle autour d'un autre cercle

Le moyen le plus long de poser cette question est avec une image. Étant donné deux cercles, un statique et un dynamique, si vous déplacez le dynamique vers le statique en ligne droite, il est assez facile de déterminer le point de contact (voir 1, le point vert).

Maintenant, si vous déplacez le cercle dynamique vers le cercle statique en formant un angle, la détermination du point de contact est beaucoup plus difficile (voir 2, le point violet). Cette partie que j'ai déjà fait. Ce que je veux faire est, après avoir déterminé le point de contact, diminuer l'angle et déterminer le nouveau point de contact (voir 3, 4, le point rouge). En # 4, vous pouvez voir que l'angle est diminué de moitié et que le nouveau point de contact est à mi-chemin entre le point de ligne droite et le point d'origine. Au n ° 7, vous pouvez voir que l'angle est divisé en deux, mais le nouveau point de contact se déplace beaucoup plus loin qu'à mi-chemin vers le point de ligne droite.

Example

Dans mon cas, je veux toujours diminuer l'angle à 5/6ths sa valeur d'origine, mais l'angle et la distance d'origine entre les cercles sont variables. Les cercles sont tous du même rayon. Les données dont j'ai besoin après avoir diminué l'angle sont le vecteur entre le nouveau centre du cercle dynamique et le cercle statique, c'est-à-dire la ligne bleue en 3, 4, 6 et 7, si cela facilite le calcul. Jusqu'ici, je sais que je dois déplacer le cercle dynamique le long de la ligne dont le cercle violet est le centre, vers le centre du cercle statique. Ensuite, le cercle doit se déplacer directement vers la position d'origine du cercle dynamique. Le plus difficile est de savoir exactement à quelle distance il doit se déplacer pour toucher l'autre cercle. Dessinez un cercle avec le même centre que le cercle stationnaire et le rayon de la somme des deux rayons.

+0

Cela appartient sur les mathématiques StackExchange: http://math.stackexchange.com/ –

+0

Je suppose que je pourrais dire que c'est quelque chose que je J'essaie de faire en Java si cela fait une différence. –

Répondre

1

Pour répondre à votre question courte, si vous êtes sur le plan cartésien, alors trouvez l'équation de la ligne L (étant donné les deux extrémités de L, c'est simple). Trouvez l'équation de la perpendiculaire à cette ligne, qui passe par P (ceci est fait en prenant l'inverse négatif de la pente, en insérant les valeurs x et y de P et en résolvant l'ordonnée à l'origine). Ensuite, trouvez le point où les deux droites perpendiculaires se croisent en utilisant leurs équations comme un seul système d'équations (avec les x et les y égaux). Ensuite, trouvez la distance entre le point d'intersection et le point P, qui est une jambe d'un triangle. Enfin, avec cette distance et la distance X qui vous est donnée, utilisez le théorème de Pythagore pour trouver la distance de l'autre jambe du triangle. Maintenant, le point que vous cherchez est un point sur L, et aussi sur la ligne sur laquelle L est assis. Donc, en utilisant la distance que vous venez d'obtenir, le point d'intersection que vous avez trouvé auparavant, et l'équation de la ligne de L, vous pouvez trouver les coordonnées du point désiré. Il ne peut y avoir qu'un maximum de 2 points, donc tout ce que vous devez tester est de savoir si les coordonnées des points trouvés sont réellement sur L, ou au-delà de L mais toujours sur sa ligne. Désolé pour la réponse longue et si vous vouliez une explication géométrique plutôt qu'une explication algébrique.

1

Il y a deux intersections avec la ligne de translation du centre du cercle en mouvement. L'emplacement du centre du cercle en mouvement au moment du contact est le plus proche de ces deux intersections.

+0

http://mathworld.wolfram.com/Circle-LineIntersection.html est probablement utile. – phadej

0

Laissez les extrémités de votre segment être A et B, et le centre de votre cercle fixe sera C. Laisser le rayon des deux cercles être r. Laisser le centre du cercle mobile au moment de la collision être D.Nous avons un triangle ACD, dont nous savons: la distance AC, parce qu'il est constant, l'angle DAC, parce que c'est ce que vous changez, et la distance CD, qui est exactement 2r. Théoriquement, les deux côtés et l'angle devraient vous permettre d'obtenir tout le reste d'un triangle ...