저는 열 메이저 매트릭스 순서를 사용하는 OpenGL 그래픽과 함께 사용할 수학 수업을 작성하고 있습니다. 이것은 숙제입니다.OpenGL에 대한 주요 주 주문
다른 행렬 클래스와 함께 mat3 (내 행렬 3x3 클래스)에 대해 행렬 표기법을 사용하여 행렬 데이터를 설명했습니다. 이제 주문 순서가 잘못되었다고 생각합니다 (예 : 열 전공보다는 행 주요 전공).
#define real float
union
{
real _data[9];
struct
{
real _11; real _12; real _13;
real _21; real _22; real _23;
real _31; real _32; real _33;
};
struct
{
real _a; real _b; real _c;
real _d; real _e; real _f;
real _g; real _h; real _i;
};
};
내가 대신 2 구조체는 다음과 같이 서면해야합니다
struct
{
real _11; real _21; real _31;
real _12; real _22; real _32;
real _13; real _23; real _33;
};
이 순서에 영향을 미칩니 까 다음과 같이
더struct
{
real _a; real _d; real _g;
real _b; real _e; real _h;
real _c; real _f; real _i;
};
, 나는 처음 구조체를 작성해야한다 행렬 곱셈 또는 다른 수학 연산 (행렬식, 역행렬, 조옮김 ...)? 예 : 현재 내 mat3 함수는 다음과 같습니다.
mat3 operator * (const mat3 & l, const mat3 & r)
{
// matrix matrix multiply
return mat3(
((l._11 * r._11) + (l._12 * r._21) + (l._13 * r._31)),
((l._11 * r._12) + (l._12 * r._22) + (l._13 * r._32)),
((l._11 * r._13) + (l._12 * r._23) + (l._13 * r._33)),
((l._21 * r._11) + (l._22 * r._21) + (l._23 * r._31)),
((l._21 * r._12) + (l._22 * r._22) + (l._23 * r._32)),
((l._21 * r._13) + (l._22 * r._23) + (l._23 * r._33)),
((l._31 * r._11) + (l._32 * r._21) + (l._33 * r._31)),
((l._31 * r._12) + (l._32 * r._22) + (l._33 * r._32)),
((l._31 * r._13) + (l._32 * r._23) + (l._33 * r._33))
);
}
이 문제는 많은 사람들을 혼란스럽게합니다. 나는 주제에 관한 교과서를 읽은 후 IDE에 앉아서 수업을 작성해야만 혼란이 생길 것이라고 생각합니다. 두 과목은 거의 함께 다루지 않습니다.