Bitte sagen Sie mir, wie Python-Funktionen, Argumente und Rückgabewerte verwendet werden. Es wäre hilfreich, wenn Sie uns die empfohlene Referenzseite mitteilen könnten. Ich denke es wird kürzer sein. Vielen Dank.
"Nur wenn sie weit voneinander entfernt sind ... 4 Tangenten" Das folgende Programm berechnet übrigens nur eines Die Größe von r1r2 kann relevant sein. Es wird angenommen, dass r1 <r2 ist.
(Referenz) Finden Sie die gemeinsame Tangente zweier Kreise https://qiita.com/tydesign/items/0100c49c6335695e6990
#[Beispiel] Zentrum(10,12)Radius 2 und Mitte(50,42)Finden Sie die gemeinsame Tangente eines Kreises mit einem Radius von 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}))#
In der Mitte des Ergebnisses weggelassen 10 10 50 10
Recommended Posts