コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
Soybeanman ◆SDLkyXUP6WqK
2018/10/28 11:37
質問
座標の一次回転について
http://www.geisya.or.jp/~mwm48961/kou2/linear_image3.html
の説明を参考にしてプログラムを組んでみたのですが上手く動きません。
公開キー[REYN3L4]
このプログラムでは円が描かれるはずなのですがなぜか野球漫画の剛速球みたいな形になってしまいます。
式ではなくプログラムが間違っていると思うのですが(特に18、19行目)どんな感じに間違っているのかが分かりません。
回答よろしくお願いします。

コメント

アバター
Soybeanman 2018/10/28 11:43 ◆SDLkyXUP6WqK
あ、自己解決しました。
解決に取り組んでくださった皆様本当にありがとうございます。
アバター
こういち 2018/10/28 11:45 ◆ou0jbJnEJ0Kb
今ダウンロード出来ないのでこめのこだけしておきます。
回転の式は複素数が分かるなら複素数同士の掛け算をイメージすると分かりやすい。

(x,y)をθだけ回転させるとき、
(x+jy)*(cosθ+jsinθ)を掛け算。
xcosθ-ysinθ+j(xsinθ+ycosθ)
アバター
こういち 2018/10/28 11:49 ◆ou0jbJnEJ0Kb
あっ。原因なんとなく分かりました。
回転前の座標を(x,y)回転後の座標を(x',y')とすると、
回転の式は
x'=x*cosθ-y*sinθ
y'=x*sinθ+y*cosθ
となりますが、
このxとx'、yとy'
は別の変数なので、x'とy'は新く宣言する必要があります。
アバター
こういち 2018/10/28 11:51 ◆ou0jbJnEJ0Kb
と思ったら解決してたのね。おめでとうございます。
アバター
Soybeanman 2018/10/28 11:55 ◆SDLkyXUP6WqK
>>こういちさん
なるほど、そういう考え方もあるのですね。
個人的な解釈としては、
x'の長さを求める場合xCOS(角度)で線分を三角形として考えた時の底辺の長さになり、
そこからySIN(角度)の三角形の縦の長さを求めて底辺から引いているとイメージしています。
こういちさんの考え方はアナログで計算するときに役立ちそうです。

そうですね。変数がxとx'が同じでおかしくなっていました。
回答ありがとうございます。
アバター
こういち 2018/10/30 12:08 ◆ou0jbJnEJ0Kb
余談
リンク先の解説では
2*2行列を使って
cosθ -sinθ
sinθ cosθ
と書いてありますが、実際には3*3行列を使って
cosθ -sinθ 0
sinθ cosθ 0
 0  0  1
と表すの方法がよく使われたりします。
こうすることで、2*2行列で表現できなかった平行移動が表現できます。
2*2行列を使った変換を線形変換、3*3行列を使った変換をアフィン変換と言ったりします。
アバター
Soybeanman 2018/10/30 18:16 ◆SDLkyXUP6WqK
>>こういちさん
ご教授ありがとうございます。
詳しく知りたくなったので調べてみました。
http://satoh.cs.uec.ac.jp/ja/lecture/ComputerGraphics/2.pdf
行列という言葉を初めて聞いたのですが、こういちさんのおかげもあって理解できました。
便利そうなので今後使う機会があったらどんどん使っていこうと思います。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -