接線ネタその2〜somemさんのブログでは2円間の接線について話されていましたので、Script!3D で円間接線を作図してみます。先日の点〜円接線のロジックが一部で使えます。
// 円間接線
#VAR
 cx1 = -20  ;*円1中心X座標
 cy1 = -30  ;*円1中心Y座標
 cr1 = 25  ;*円1半径
 cx2 = 100  ;*円2中心X座標
 cy2 = 120  ;*円2中心Y座標
 cr2 = 75  ;*円2半径
 px     // 小さい方の円中心点
 py
 cx     // 大きい方の円中心点
 cy
 cr
 cra    // 小さい方の円半径
 crb    // 大きい方の円半径
 n
 w1
 w2
 d   ;2円中心点間の距離
 a1  //小円中心点から大円中心点への角度[rad]
 ad1  ;小円中心点から大円中心点への角度[°]
 a2  //接点への角度[rad]
 ad2  ;接点への角度[°]
 l   ;接点への距離
 sx1  // 小円接点1
 sy1
 sx2  // 小円接点2
 sy2
 sx3  // 大円接点1
 sy3
 sx4  // 大円接点2
 sy4
#DRAW
 #IF (cr1 < cr2)
  CAL px = cx1
  CAL py = cy1
  CAL cx = cx2
  CAL cy = cy2
  CAL cr = cr2 - cr1
  CAL cra = cr1
  CAL crb = cr2
 #ELSE
  CAL px = cx2
  CAL py = cy2
  CAL cx = cx1
  CAL cy = cy1
  CAL cr = cr1 - cr2
  CAL cra = cr2
  CAL crb = cr1
 #END
 GETDIST2D d,cx1,cy1,cx2,cy2
 CAL w1 = cx - px
 CAL w2 = cy - py
 GETANGLE2D a1,w1,w2
 CAL ad1 = a1*180/PI
 CAL a2 = ASin(cr/d)
 CAL ad2 = a2*180/PI
 CAL l = Sqrt(d*d-cr*cr)
 //
 CAL w1 = a1+a2+0.5*PI
 CAL sx1 = px + cra*Cos(w1)
 CAL sy1 = py + cra*Sin(w1)
 CAL sx3 = cx + crb*Cos(w1)
 CAL sy3 = cy + crb*Sin(w1)
 CAL w1 = a1-a2-0.5*PI
 CAL sx2 = px + cra*Cos(w1)
 CAL sy2 = py + cra*Sin(w1)
 CAL sx4 = cx + crb*Cos(w1)
 CAL sy4 = cy + crb*Sin(w1)
 //
 PEN 1
 CIRCLE2D n,SetArcSep,cx1,cy1,cr1
 PEN 2
 CIRCLE2D n,SetArcSep,cx2,cy2,cr2
 //
 PEN 3
 LINE2D n,sx1,sy1, sx3,sy3
 PEN 4
 LINE2D n,sx2,sy2, sx4,sy4
 //
 PEN 5
 CIRCLE2D n,SetArcSep,sx1,sy1,3
 CIRCLE2D n,SetArcSep,sx2,sy2,3
 PEN 6
 CIRCLE2D n,SetArcSep,sx3,sy3,5
 CIRCLE2D n,SetArcSep,sx4,sy4,5
実行します。
20090324a

スケッチアップに送ります。
20090324b

こんな感じです。