交点ばかりですが、円と直線の交点を計算してみようと思います。
直線「ax+by+c=0」と半径r、中心(x,y)の円の交点は、中心から直線へ下ろした垂線と、垂線からθの位置の円周上にあります。垂線は、直線と点の距離を求める過程で求めることができます。
θは、逆余弦、ActionScriptで言うところのMath.acosを使って求めて、後は適当に。
if( v.length>r ){ //距離が半径より大きい場合、交点なし return []; }else if( v.length<r ){ //交点が2つ var drad:Number; var irad:Number; if( dv.length>0 ){ //距離ベクトルの角度 drad = Math.atan2( v.y, v.x ); //距離ベクトルから交点の角度 irad = Math.acos( v.length/r ); }else{ drad = Math.atan2( b, a ); irad = Math.PI/2; } return [ new Point( x + r*Math.cos(drad+irad), y + r*Math.sin(drad+irad) ), new Point( x + r*Math.cos(drad-irad), y + r*Math.sin(drad-irad) ) ]; }else{ //接線 v.offset( x, y ); return [ v ]; }
こんな感じになります。