質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

5038閲覧

回転行列の計算の仕方

sakuragi

総合スコア15

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/11/26 08:05

編集2018/11/26 14:29

球体を任意の角度に回転させたいです。
任意の回転で得られる新座標系(X,Y,Z)の座標値を旧座標系(x,y,z)の座標値で表したいです。今新しい座標系(X,Y,Z)が旧座標系(x,y,z)をx軸の周りに角度αだけ回転させて(x,Y’,Z’)とし、それをさらにY’軸の周りに角度βだけ回転させて(X’,Y’,Z)とします。そしてさらにZ軸の周りに角度γだけ回転させることによって(X,Y,Z)に一致させることが出来るとすると新旧の座標は図のようになると思うのですが、プログラムで書くのに苦戦しています。
3×3の行列を参考にしているのですが分からないです。

main() { int i,j,k; int a[2][2] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}}; int b[2][2] = {{4, 5, 6},{1, 2, 3},{7, 8, 9}}; int c[2][2]; for ( i=0; i<=2; ++i){    for ( j=0; j<=2; ++j){       for( k=0; k<=2; ++k){       c[i][j] += a[i][k]*b[k][j];       printf("%d ",c[i][j]);       printf("\n");       }     }   } }

a[3][3] = {{cosγ,sinγ,0},{-sinγ,cosγ,0},{0,0,1}}
b[3][3] = {{cosβ,0,-sinβ},{0,1,0},{sinβ,0,cosβ}}
c[3][3] = {{1,0,0},{0,cosα,sinα},{0,-sinα,cosα}}
d[3][3] = {{x,0,0},{y,0,0},{z,0,0}
a[3][3]*b[3][3]*c[3][3]*d[3][3]の角度を任意で変えていくときの答えの出し方を知りたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2018/11/26 09:36

何がinputで何がoutputになる話なのか把握できません.コードとの関係性も不明.「図のように」の図とは?
izmktr

2018/11/26 17:16 編集

3x3行列なら、int a[2][2] じゃなくてint a[3][3] じゃないですか? コンパイルエラー出る気がするんですけれど? それに、sinやcosを扱うのなら、intみたいな整数型では駄目ですよね?
guest

回答1

0

古い質問ですが、回答しておきましょう。

基本的に3次元の場合の行列は4x4を使います。

プログラムを見ても行列の足し算しか実装していないようですので、根本的に理解していないように思えます。行列での任意軸回転のプログラムは明らか狂気に近い部分がありますので、実装経験のある人間からすると全く違うのは一目瞭然です。

投稿2019/02/08 07:35

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問