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
Recommended Posts