olpheの競プロ帖

競プロ問やアルゴリズム等の考察します

2円の共通接線

中心が(0,0)にあって、半径がr_1である円1と、中心が(x,y)にあって、半径がr_2である円2の共通接線を求めたい。

 原点を中心に回転させて、回転後において接線が常にx軸と平行になるようにしたい。またその時、接線があるとすれば、y=\pm\ r_1である。

更に、円2は接線の上側にある場合と下側にある場合があって、回転後の円2のy座標は\pm \ r_1\pm \ r_2である。

rad回転して、円2のy座標の条件を満たせる場合常に接線は存在していて、y= \pm \ r_1-rad回転させたものが回転前の円1と円2の共通接線となる。