| INDEX |

半径r、中心(x,y)の円の接線を求めてみようと思います。

接線を「ax+by+c=0」とすると、直線の傾きを決めるベクトルv(a,b)は、角度θのとき、

a = Math.cos(θ)
b = Math.sin(θ)

となります。

一方、任意の点pから直線へ下ろした垂線のベクトルの長さは、

-( a*p.x + b*p.y + c )/v.length

で求めることができました。
今回の場合、中心(x,y)から接線への長さがrになり、v.lengthは1になります。

r = -(a*x + b*y + c)
 ↓
c = -a*x - b*y - r

まとめると、

/**
* 円の接線
* @param 円の中心 x
* @param 円の中心 y
* @param 円の半径 r
* @param 角度
*/
function tangentLineOnCircle( x:Number, y:Number, r:Number, t:Number ):Line{
  var a:Number = Math.cos(t);
  var b:Number = Math.sin(t);
  var c:Number = -a*x - b*y - r;
  return new Line(a,b,c);
}

コメントは受け付けていません。

| INDEX |