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

数学 2次曲線(楕円)の傾きの計算方法

楕円・双曲線・放物線を合わせた2次曲線の標準形は、ABCDEを定数として
A*x^2 + B*x*y + C*y^2 + D*x + E*y = 1
で表されます。特に、原点中心のものはDとEがゼロになり、
A*x^2 + B*x*y + C*y^2 = 1 ・・・・・①
となります。
この標準形が与えられ、
判別式 B^2 - 4*A*C < 0 を満たす場合、楕円になります。

いま、この判別式を満たしていて原点中心の楕円を表す式であるとわかっているとき、
ここから楕円の傾き(回転角度)θを導出するにはどのように計算すれば良いのでしょうか。


---- 以下、私の考え方を示します。

2次元の回転行列G(θ)は、
G(θ) = { { cosθ, -sinθ }, { sinθ, cosθ } }
の2x2の行列で表されます。

角度θの回転を戻すと、傾きの無い通常の楕円の方程式になるはずです。
回転前の通常の楕円の方程式を、座標X,Yとして
A*X^2 + B*X*Y + C*Y^2 = 1 ・・・・・②
とすると、B*X*Yの項は無いはずです。
つまり、回転前の式を調べて、X*Yの項の係数がゼロになるようなθを調べれば良いことになります。

角度θ回転する前の座標をX,Yとすれば、回転前の方程式は
回転後(与えられた式)の座標x,yに回転行列G(-θ)をかけて、
[X,Y]^T = G(-θ)・[x,y]^T   (※^Tは転置)
と表されるので、逆に[x,y]^Tについて解けば、回転行列の逆行列をかけて、
[x,y]^T = G(-θ)^-1 ・[X,Y]^T
より、
x = X*cosθ + Y*sinθ
y = -X*sinθ + Y*cosθ
となります。このxとyを式①のx,yに代入すると、次式が得られます。
A*(X*cosθ + Y*sinθ)^2 +
B*(X*cosθ + Y*sinθ)*(-X*sinθ + Y*cosθ) +
C*(-X*sinθ + Y*cosθ)^2 = 1 ・・・・・・・・・・②
これが、回転前の楕円の方程式のはずです。

この式②を整理して、X*Yについての係数がゼロになるようなθを求めれば良いと考えているのですが、その計算がうまくいきません。

式②を展開してみると、

A*(X*X*cosθ*cosθ + 2*X*Y*sinθ*cosθ + Y*Y*sinθ*sinθ) +
B*(-X*X*sinθ*cosθ + X*Y*cosθ*cosθ - X*Y*sinθ*sinθ + Y*Y*sinθ*cosθ) +
C*(X*X*sinθ*sinθ - 2*X*Y*sinθ*cosθ + Y*Y*cosθ*cosθ) = 1

この中でX*Yの項だけ取り出すと、

A*(2*X*Y*sinθ*cosθ) +
B*(X*Y*cosθ*cosθ - X*Y*sinθ*sinθ) +
C*(-2*X*Y*sinθ*cosθ) = 0

(2*A*sinθ*cosθ + B*cosθ*cosθ - B*sinθ*sinθ - 2*C*sinθ*cosθ)*X*Y = 0

より、X*Yの係数についての恒等式、

2*A*sinθ*cosθ + B*cosθ*cosθ - B*sinθ*sinθ - 2*C*sinθ*cosθ = 0
B*(cosθ*cosθ - sinθ*sinθ) + 2*(A-C)*sinθ*cosθ = 0
cosθ*cosθ - sinθ*sinθ + (2*(A-C)/B)*sinθ*cosθ = 0

係数 (2*(A-C)/B) = Kと置きなおせば、

cosθ*cosθ - sinθ*sinθ + K*sinθ*cosθ = 0 ・・・・・③

となるようなθについて式③を解けば良いと思うのですが、この先に進めません。
この式は解けますか?それとも考え方が間違っているのでしょうか。

質問者からの補足コメント

  • 楕円のイメージを添付します。

    「数学 2次曲線(楕円)の傾きの計算方法」の補足画像1
      補足日時:2018/01/13 12:46

A 回答 (1件)

    • good
    • 3
この回答へのお礼

そのURL先も読んではいたのですが、チェックが甘かったようです。
ちゃんと書いていますね。
と言いますか、倍角を使ってまだ式変形できましたね。
解決しましたありがとうございました。

お礼日時:2018/01/13 12:52

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A