実現したいこと
行列の構造体を返したいです。
発生している問題・分からないこと
struct でメンバー作った後、疑似コードになりますが初期化で、ここはCopilotですが(0,0 行列の構造体, 10,10,行列の構造体 20,100,行列の構造体 30,200,行列の構造体)としたとき、return行列の構造体としたとき、行列にははじめの値しか入っていないけど考えられない数値1440とかが出力されます。行列のかけ算にglmultimatrixだったかとその分類を使いました。
該当のソースコード
/*行列を取得するコード*/ struct DataFrame { float mframe[16]; }; struct Result { float Result[16]; }; /*c++ってほどでもないけどclassでした。お詫びして訂正いたします。*/ DataFrame mframe[1024]; /* 関数 */ Result gettime(double t) { DataFrame interpolated; for (int i = 0; i < 16; ++i) { interpolated.mframe[i] = /*数式を省略*/ } /*glMultMatrixf 行列の掛け算などの類の処理を数行⋆/ glMultMatrixf(interpolated.mframe); glGetFloatv(GL_MODELVIEW_MATRIX, mResult[0].Result); // 結果をresultMatrixに取得 一部省略。 /*行列の計算はあってる*/ for (int i = 0; i < 16; ++i) { printf("%f ", interpolated.mframe[i]); } return mResult[0]; }/*関数の終わり*/ void draw() { struct Result d = gettime(35); /*ここの行列の値がへん*/ for (int i = 0; i < 16; ++i) { printf("%f ", d.Result[i]); }
うちながらstruct等をcopilotでこまめに表示しました。
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
return 行列の構造体
として返り値で一番始めの変数を調べましたところ、ひとまず大きな値が出力されます。ただ同じブロック内なら計算できてるようです。
補足
IdentityMatrixの間違いでした。(試してみたコードで最後に使う予定だったので最後がくるまでどうなるかわからないですが)、質問には関係ないことで補足します。glmultiMatrixは、行列はとけるけど、頂点Vertex[4]?のことは分かりかね、投げるとえらーになることをcopilotがいってたようでした(4x4を自前で用意してということでした。)間違えてしまいすいません。
本のコードの部分は載せられないため、載せませんでした。載せてほしいといわれてもちょっと無理です。
回答1件
あなたの回答
tips
プレビュー