[PYTHON] Trouver le point de contact de la tangente commune de deux cercles (matrice sympy)

Veuillez me dire comment utiliser les fonctions python, les arguments et les valeurs de retour. Il serait utile que vous nous indiquiez la page de référence recommandée. Je pense que ce sera plus court. Je vous remercie.

"Seulement quand ils sont éloignés ... 4 lignes tangentes" À propos, le programme suivant ne calcule qu'un seul La taille de r1r2 peut être pertinente. On suppose que r1 <r2.

(Référence) Trouvez la tangente commune de deux cercles https://qiita.com/tydesign/items/0100c49c6335695e6990


#[Exemple] Centre(10,12)Rayon 2 et centre(50,42)Trouvez la tangente commune d'un cercle avec un rayon de 30
from sympy import *																													
var('x1 y1 r1 x2 y2 r2 tx ty co si sx1 sy1 sx2 sy2')																													
sx1=0																													
sy1=r1																													
sx2=sqrt((x1-x2)**2+(y1-y2)**2-(r2-r1)**2)																													
sy2=r2																													
v=solve([co*sx1-si*sy1+tx-x1,																													
              si*sx1+co*sy1+ty-y1,																													
              co*sx2-si*sy2+tx-x2,																													
              si*sx2+co*sy2+ty-y2],																													
             [co,si,tx,ty])																													
A=Matrix([																													
           [v[co],-v[si],v[tx]],																													
           [v[si], v[co],v[ty]],																													
           [    0,       0,    1]																													
])																													
B=Matrix([																													
          [sx2],																													
          [  0] ,																													
          [  1]																													
])																													
AB=A*B																													
print("---------------------------------------")																													
print(tx)																													
print(ty)																													
print(AB[0])																													
print(AB[1])																													
print("---------------------------------------")																													
print(v[tx].subs({x1:10,y1:12,r1:2,x2:50,y2:42,r2:32}),																													
v[ty].subs({x1:10,y1:12,r1:2,x2:50,y2:42,r2:32}))																													
print(AB[0].subs({x1:10,y1:12,r1:2,x2:50,y2:42,r2:32}),																													
AB[1].subs({x1:10,y1:12,r1:2,x2:50,y2:42,r2:32}))#

Omis au milieu du résultat 10 10 50 10

L'équation tangente est (pas encore)

Je sens que la méthode d'intersection en classe est rapide. (Pas encore)

Recommended Posts

Trouver le point de contact de la tangente commune de deux cercles (matrice sympy)
Trouver l'intersection d'un cercle et d'une droite (matrice sympy)
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Trouvez le rang de la matrice dans le monde XOR (rang de la matrice sur F2)
Trouvez la définition de la valeur de errno