はじめまして。kodemarimanと言います。
皆さんよろしくお願いします。
早速ですが、質問です。多分高校数学レベルの問題です。
右上の座標が(x1,y1)=(200,200)、左下の座標が(x2,y2)=(0,0)の正方形を考えます。
次の手順で座標を変換して、この正方形を描画すると、斜めになった長方形になります。
1:座標系を反時計周りに30度回転します。
2:座標系をx方向に1.2倍、y方向に1.5倍偏倍します。
3:正方形を書きます。
ですが、次の手順だと斜めになった長方形でなく、菱形になってしまいます。
1:座標系をx方向に1.2倍、y方向に1.5倍編倍します。
2:座標系を反時計周りに30度回転します。
3:正方形を書きます。
これって、なぜなんでなんでしょう?
目的としては、このような座標変換を繰り返し行っても
(例えば座標を回転して偏倍して平行移動して座標を回転して偏倍して平行移動して
座標を回転して偏倍して平行移動して・・・)
いつでも長方形(正方形)が描かれるような座標変換を行いたいのですが・・・
ちなみにテストに使ってるソフトはGhostScriptといいます。
これはポストスクリプトのプログラムを書くと画像にしてくれる
便利なソフトです。
↓URL
http://www.cs.wisc.edu/~ghost/index.htm
No.5
- 回答日時:
>やぱり長方形じゃなくて平行四辺形になってしまいました。
困りましたね。
こちらでは適当な n の値を代入して表示させると
長方形になっているようなのですが。
大丈夫だと思いますが誤解があるといけないので書いておきます。
下の回答での行列は n 回変換後の結果を出すだけですのでこの行列を何回も
掛けていくというものではありません。
1回ごとの結果を表示させるには n の値を1ずつふやして代入し
そのたびに表示させていくことになります。
(このあたりが望みのものとは違うかもしれません)
まだ、謎が解けていない状態ではあまり意味がないかもしれませんが
任意の倍率、回転の場合は次のようです。
k回目の操作である辺をAk倍、もう一つの辺をBk倍、回転角θkのとき
n回操作後の結果を求める行列は
┌ ΠAk*cos(Σθk) -ΠBk*sin(Σθk) ┐
A=│ │
└ ΠAk*sin(Σθk) ΠBk*cos(Σθk) ┘
のようになります。
ただし、ΠAk=A1*A2*…*An、Σθk=θ1+θ2+…+θnです。
どうも、kodemarimanです。
謎は解けました。ちょっと正負の符号を間違えてました。(^^;
じっちゃんの名にかけられるほどの謎じゃなかったです。(苦笑)
で、私の目的の方ですが、教えていただいた行列式を元に、
こういう考えで解決しました。
┌ 1.2*cos(nπ/6) -1.5*sin(nπ/6) ┐
An=│ │
└ 1.2*sin(nπ/6) 1.5*cos(nπ/6) ┘
で、座標系の回転と拡大を行ったあと、再び回転をかけるまえに
┌ 1/1.5 0 ┐
Bn=│ │
└ 0 1/1.2 ┘
をかけて、拡大率を1に戻します。(かなり力技ですが。(^^;)
それからまた回転、拡大を書けるという処理を続けます。
これを繰り返す事で、目的は達成する事ができました。
どうもありがとうございました。
No.4ベストアンサー
- 回答日時:
少し不親切でした。
n は座標変換の回数、1.2^n は siegmund さんの補足にあるようにn乗のことです。
以下、No.2の回答での行列の導き方です。
まず、初期状態として座標 O(0,0)、A(200,0)、B(200,200)、C(0,200)
を頂点とする正方形OABCを考えます。
ここで、n回座標変換を行なった後OAベクトルは
長さが 1.2 の n乗倍に、また 30*n[度]= nπ/6[rad]回転します。
すなわち、OA'ベクトル
( 200*1.2^n*cos(nπ/6),200*1.2^n*sin(nπ/6) )
に写されます。
したがって、n回の座標変換を行なう行列をAnとして
┌ 200*1.2^n*cos(nπ/6) ┐ ┌200┐
│ │ = An│ │
└ 200*1.2^n*sin(nπ/6) ┘ └ 0 ┘
という式が成り立ちます。
同様にしてOCベクトルがOC'ベクトル
( -200*1.5^n*sin(nπ/6),200*1.5^n*cos(nπ/6) )
に写されることから
┌ -200*1.5^n*sin(nπ/6)┐ ┌ 0 ┐
│ │= An│ │
└ 200*1.5^n*cos(nπ/6)┘ └200┘
という式が成り立ちます。
これらの式から行列AnがNo.2のように決まります。
また、変換後のOA'とOC'の内積をとると0になることから
変換後の2つのベクトルは垂直になっていることがわかりますね。
さらに、変換前
OB = OA + OC
ですから変換後のOB'ベクトルは
OB'= OA'+ OC'
というベクトルに写されます。
よって、四角形OA'B'C'は長方形になっています。
平行移動については行列で操作できないので最後にn回分まとめて動かすしかなさそうですね。
ところで、同じ辺を1.2倍し続けるのでいいのでしょうか?
この回答への補足
いえ、目的としては同じ辺を1.2倍しつづけるのではありません。
やりたいのは、ある座標系に描いた図形を、回転と拡大縮小の座標変換を行う事で
任意の大きさに拡大縮小して、かつ任意の角度に回転させることです。
また、そうして変換した座標系の中でさらに拡大や縮小、回転を行いたいのです。
で、どーもそういう作業(ポストスクリプトでプログラムを組んでいるんですが)をしていると、途中で図形がゆがんできてしまうので
困ってしまったんですよ。(^^;
(2回目の回転と拡大縮小で、なんかゆがんでしまう)
ところで、教えていただいたこの変換行列で試したところ、やぱり長方形
じゃなくて平行四辺形になってしまいました。理屈は納得できるのですが・・・
謎です。Ghostのバグなのかしら。(でもこれも長生きのソフトだからそれはないかも)
ほかに実験できそうなツール探して試してみようかな。
No.3
- 回答日時:
> 行列の計算は不可逆なのが有るんですね。
(そういえばそうだったな)「不可逆」でなくて「非可換」という方がいいでしょう.
「不可逆」は熱力学で使われる言葉で,意味がちがいます.
それから,行列の乗法は一般に非可換です.
加法の方は A+B = B+A で可換ですけどね.
> ”^”記号は何を意味するのですか?
1.2^n は 1.2 のn乗の意味です.
No.2
- 回答日時:
行列は一般に非可換だからです。
kodemariman さんが期待されておられるものとは違うかもしれませんが
次のような行列なら平行移動はしませんが
ある辺を1.2倍、それと垂直な辺を1.5倍し続けます。
┌ 1.2^n*cos(nπ/6) -1.5^n*sin(nπ/6) ┐
An=│ │
└ 1.2^n*sin(nπ/6) 1.5^n*cos(nπ/6) ┘
この回答への補足
ご回答ありがとうございます。
少しわからないのですが、
この行列式ですが、”n”は座標変換の回数だと思うのですが
”^”記号は何を意味するのですか?
あと、もしよろしければこの行列がどのように導き出されるかを
教えていただきたいです。
No.1
- 回答日時:
座標系の回転操作と偏倍操作が可換ではないからです.
回転操作の行列表現は
┌ cosθ sinθ┐
A=│ │
└ -sinθ cosθ┘
偏倍の方は
┌a 0┐
B=│ │
└0 b┘
です.
明らかに,AB≠BA ですね.
(sinθ=0,あるいは a=b の場合を除く)
この回答への補足
さっそくの回答ありがとうございます。
行列の計算は不可逆なのが有るんですね。(そういえばそうだったな)
そうすると、一度編倍または回転をかけちゃうと、
それ以上編倍や回転はできないのかな?
もしやるとしたら、編倍したXY座標サイズをのを元のサイズに戻して
それからまた回転、編倍しなくちゃいけないのかなあ。うーむ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
座標(x,y)間(=2点)の...
-
等角螺旋(らせん)の3次元的...
-
右下の小さい数字について
-
なぜベクトルの外積の向きが右...
-
「原点に返る」と「原点に戻る...
-
三角関数 範囲が-πからπのとき...
-
距離と方向角から座標を求める...
-
「0でない2つのVのベクトルu,v...
-
高校数学 <ベクトルと空間図形>
-
複素数平面についてです ①xy平...
-
楕円の円周上の座標を求める計...
-
測量座標と算数座標の違い
-
座標計算の公式
-
N点間の中心と重心の求め方
-
円の中心座標ってもとめられま...
-
「通常の平面上の座標に三角形...
-
直交座標、斜交座標
-
座標のS/I方向について
-
グラフが異なる2点でX軸の正の...
-
高校1年の数学なのですが 因数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
座標(x,y)間(=2点)の...
-
「原点に返る」と「原点に戻る...
-
出題ミスだね?
-
右下の小さい数字について
-
重分積分の極座標変換について
-
複素数平面についてです ①xy平...
-
三角関数 範囲が-πからπのとき...
-
距離と方向角から座標を求める...
-
複素数平面と座標平面の対応に...
-
なぜベクトルの外積の向きが右...
-
【数学】 解説の下から4行目が...
-
距離、方位角から座標を求める方法
-
「0でない2つのVのベクトルu,v...
-
大学の複素数の問題なんですが...
-
測量座標と算数座標の違い
-
楕円の円周上の座標を求める計...
-
楕円の角度とは?
-
エクセルでグラフの作り方 軌...
-
等角螺旋(らせん)の3次元的...
-
赤線の部分 y=a(x-p)(x-q) で...
おすすめ情報