2012-04-09 3 views
3

結果が一致しないのはなぜですか?私は何が間違っているのか分かりません。あなたは私に説明を教えてもらえますか?ヨーとピッチをまとめて合成する

float alpha = glm::radians(45.0f); 

glm::mat4 xRot(glm::vec4(1, 0, 0, 0), 
       glm::vec4(0, glm::cos(alpha), glm::sin(alpha), 0), 
       glm::vec4(0, -glm::sin(alpha), glm::cos(alpha), 0), 
       glm::vec4(0, 0, 0, 1)); 

glm::mat4 yRot(glm::vec4(glm::cos(alpha), 0, -glm::sin(alpha), 0), 
       glm::vec4(0, 1, 0, 0), 
       glm::vec4(glm::sin(alpha), 0, glm::cos(alpha), 0), 
       glm::vec4(0, 0, 0, 1)); 

glm::vec4 vec(0, 0, -100, 1); 

glm::vec4 resultA(0.0f); 
glm::vec4 resultB(0.0f); 

resultA = xRot * yRot * vec; //(-70.7107, 50, -50, 1) 
resultB = yRot * xRot * vec; //(-50, 70.7107, -50, 1) 

答えて

3

3D回転は、非常に特殊な場合を除いて一般的には通勤しません。したがって:基本的に何を上記でやっていることのポイントを証明して

xRot * yRot != yRot * xRot 

:)

こちらをご覧ください:http://en.wikipedia.org/wiki/Commutative_property

関連する問題