半径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); }