[PYTHON] Finden Sie den Berührungspunkt der gemeinsamen Tangente zweier Kreise (Sympiematrix)

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

Die Tangentengleichung lautet (noch nicht)

Ich habe das Gefühl, dass die Methode der Schnittmenge im Unterricht schnell ist. (Noch nicht)

Recommended Posts

Finden Sie den Berührungspunkt der gemeinsamen Tangente zweier Kreise (Sympiematrix)
Finden Sie den Schnittpunkt eines Kreises und einer geraden Linie (Sympymatrix)
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Finden Sie den Rang der Matrix in der XOR-Welt (Rang der Matrix auf F2)
Finden Sie die Definition des Wertes von errno