重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ある楕円があり、以下の操作は楕円の中心をずらさないように行うものとします。

1をα度反時計回りに回す
1'をβ度反時計回りに回す
2を 縦x倍 横y倍 に拡大
2'を 縦x'倍 横y'倍に拡大

3をγ度半時計回りに回す
4を 縦X倍 横Y倍に拡大

として、
1→2→1'→2'
と楕円を操作していったときに、これと等価な
3→4
という操作を実現するためには、γ、X、Yはどう表せばいいですか?

A 回答 (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
となります。(自信はないので検算してください)

積和の公式を使って変形もできますが、そうしてもあまり整理できそうにありません。
また、この変換によって、一般楕円の方程式がどう変換できるかは、
私にはわかりません。(能力を超えています)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/01/22 19:59

残念ですが、一般的には「できない」です。


(否定してばっかりで悪いけど)

たとえば、もとの図形を円として、

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'でも何でも、一回で可能なのですが…
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/01/17 22:12

回転自体は、楕円の大きさに関係なく、回す方向もすべて反時計回りで同じなので、


γ=α+β
でいいと思います。

伸縮は縦横それぞれの方向に対しての積になる、つまり
X=xx’、Y=yy’
ではないでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/01/17 22:13

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