プロが教える店舗&オフィスのセキュリティ対策術

回転した楕円を任意の直線に投影した長さの求め方

長軸を2a、短軸を2bとした場合の楕円x^2/a^2+y^2/b^2=1(楕円上の点は(a*cosθ、b*sinθ))を、長軸とx軸との角度φとして回転させ、原点を通る任意の直線(例えばx軸との角度ψが10度の直線)に投影した長さ(例えば、x軸(ψ=0)なら楕円が収まる長方形の横の長さ)の求め方が分かりません。

今のところの考えでは、
(1).回転後の楕円を求める。
⇒x^2+y^2=a^2*(cosφ)^2+b^2*(sinφ)^2
(楕円上の点は(a*cosθ*cosφ-b*sinθ*sinφ、a*sinθ*cosφ+b*cosθ*sinφ))
(2).投影する直線の式を求める。
⇒?
(3).(2)の直線と(2)の直線の垂線で楕円と1点で接する直線の交点の座標を求める。
(4).(3)の点と原点との距離を算出し、投影した長さを求める。
というように考えていますが、(2)のところで行き詰ってしまっています。

長くなりましたが、
・そもそも、この考えかたは合っているのでしょうか。
・あっている場合、(2)以降を教えていただけると助かります。
・他に計算が楽になる求め方は無いでしょうか。
よろしくお願いします。

A 回答 (1件)

まず、角度φだけ回転した楕円を角度-φ回転し直して標準形(x^2/a^2+y^2/b^2=1)に戻します。

このとき、もとの座標でx軸となす角がψだった直線は-φの回転でx軸とのなす角が(ψ-φ)の直線になります、すなわち、この直線をLとすると、
 L: y=tan(ψ-φ)・x
という直線になります。一方、公式により、楕円上の点(x0,y0)における楕円の接線Tは、
 T: (x0/a^2)x+(y0/b^2)y=1
と表わせるので、この接線の傾きが直線Lと垂直になるような点(x0,y0)を探します。接線Tの傾きmは、
 m=-(b^2/a^2)(x0/y0)
となるので、いま楕円上の点(x0,y0)を極座標表示で(a*cosθ、b*sinθ)と表わすと、
 m=-(b^2/a^2)(a*cosθ/b*sinθ)=-(b/a)(1/tanθ) ... (1)
となります。この傾きが、直線Lの傾きtan(ψ-φ)と直交するためには、
 m*tan(ψ-φ)=-1 ... (2)
とならなければいけません。すなわち、(1)、(2)式から、
 -(b/a)(1/tanθ)*tan(ψ-φ)=-1
 ⇒ tanθ=(b/a)*tan(ψ-φ) ... (3)
となります。ここで、
 cosθ=1/√(1+tanθ^2)
 sinθ=tanθ/√(1+tanθ^2)
なので、(3)式を代入して整理すると、
 cosθ=a/√(a^2+b^2*tan(ψ-φ)^2)
 sinθ=b*tan(ψ-φ)/√(a^2+b^2*tan(ψ-φ)^2)
よって、
 x0=a*cosθ=a^2/√(a^2+b^2*tan(ψ-φ)^2)
 y0=b*sinθ=b^2*tan(ψ-φ)/√(a^2+b^2*tan(ψ-φ)^2) ... (4)
となります。いま、このようにして点(x0,y0)が求まったとすると、求める投影された線分の長さは原点(0,0)から接線Tまでの距離の2倍になります。そこで、原点から接線Tまでの距離をdとすると、点と直線との距離の公式により、
 d=|(x0/a^2)*0+(y0/b^2)*0-1|/√((x0/a^2)^2+(y0/b^2)^2)
  =1/√((x0/a^2)^2+(y0/b^2)^2)
  =a^2*b^2/√(b^4*x0^2+a^4*y0^2)
となります。よって求める投影線の長さは、
 2*d=2*a^2*b^2/√(b^4*x0^2+a^4*y0^2)
となります。あとは上の式に(4)の(x0,y0)を代入するだけです。
 
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど、回転した楕円をもとに戻すのがミソなんですね。
だいぶ計算が楽になりました。

とても分かりやすい説明ありがとうございました。

お礼日時:2010/07/24 15:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!