• ベストアンサー

回転操作と伸縮操作2

ある楕円があり、以下の操作は楕円の中心をずらさないように行うものとします。 1をα度反時計回りに回す 1'をβ度反時計回りに回す 2を 縦x倍 横y倍 に拡大 2'を 縦x'倍 横y'倍に拡大 3をγ度半時計回りに回す 4を 縦X倍 横Y倍に拡大 として、 1→2→1'→2' と楕円を操作していったときに、これと等価な 3→4 という操作を実現するためには、γ、X、Yはどう表せばいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.3

一次変換では、 αの回転は (+cosα -sinα) (+sinα +cosα) x方向をa倍、y方向をb倍にするのは (a 0) (0 b) という行列になります。(カッコの縦並びで、行列だと読んでください) だから1→2→1'→2'の変換は、 (c 0)(+cosβ -sinβ)(a 0)(+cosα -sinα) (0 d)(+sinβ +cosβ)(0 b)(+sinα +cosα) です。(書きやすさのため、「x倍、y倍」「x'倍、y'倍」をa~d倍で表している) 途中計算は略しますが、点(x, y)をこの行列で変換した場合、得られる(x' y')は、 x' = c(+a*cosαcosβ - b*sinαsinβ)x + c(-a*sinαcosβ - b*cosαsinβ)y y' = d(+a*cosαsinβ + b*sinαcosβ)x + d(-a*sinαsinβ + b*cosαcosβ)y となります。(自信はないので検算してください) 積和の公式を使って変形もできますが、そうしてもあまり整理できそうにありません。 また、この変換によって、一般楕円の方程式がどう変換できるかは、 私にはわかりません。(能力を超えています)

arcsin
質問者

お礼

なるほど、ありがとうございます。 こういう場面でも線形代数が活躍するのですね^^; 復習しなおさなければ・・・ またよろしくお願いしますm(_ _)m

その他の回答 (2)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

残念ですが、一般的には「できない」です。 (否定してばっかりで悪いけど) たとえば、もとの図形を円として、 1を 0度 反時計回りに回す(無変換) 1'を 45度 反時計回りに回す 2を 縦1倍 横10倍 に拡大 2'を 縦1倍 横1倍 に拡大(無変換) とします。 1→2→1'→2' とすると、斜め方向に伸びた楕円が得られます。 ここで3→4で同様の操作ができるか考えます。 まず3によっては、もとが円なので変化は起きません。 4でできるのは、縦か横に引き延ばすことなので、 斜め方向に引き延ばすことはできません。 変換2つだけでは希望する操作はできないということです。 では4→3ならどうかと言うと、 今度は斜めに伸びた楕円を円に変換することはできません。 この問題は1次変換そのものなので、 行列を使えば、1→2→1'→2'でも何でも、一回で可能なのですが…

arcsin
質問者

お礼

ありがとうございます。 やはり簡単にはいかないんですね^^; 行列を使うとどうなるのでしょう・・ もしよければ教えてください。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

回転自体は、楕円の大きさに関係なく、回す方向もすべて反時計回りで同じなので、 γ=α+β でいいと思います。 伸縮は縦横それぞれの方向に対しての積になる、つまり X=xx’、Y=yy’ ではないでしょうか。

arcsin
質問者

お礼

ありがとうございます。 #2さんのご回答を拝見し、自分でもためしたところ変換はできないことがわかりました^^; でもまたよろしくお願いします

関連するQ&A