math - 将 Matrix4x4 转换为 position ,Scale, Euler 三个vector3
问题描述
int main(int argc, const char * argv[]) {
glm::mat4 t(1);
glm::mat4 r(1);
glm::mat4 s(1);
t = glm::translate(t, glm::vec3(10.0f, 0.0f, 50.0f));
r = glm::rotate(r, glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f));
s = glm::scale(s, glm::vec3(-3.0f, -5.0f, -10.0f));
glm::mat4 trs = t * r * s;
glm::vec3 restorePos;
glm::vec3 restoreRot;
glm::vec3 restoreSca;
getPRS(trs, restorePos, restoreRot, restoreSca);
}
将Matrix4x4转换为position,Scale,Euler三个vector3
void getPRS(const glm::mat4 &trs, glm::vec3 &pos, glm::vec3& rot, glm::vec3& sca) {
pos.x = transformation[3][0];
pos.y = transformation[3][1];
pos.z = transformation[3][2];
}
如何表达 rot 和 sca 以使功能正确?
解决方案
推荐阅读
- reactjs - 尽管传递了正确的上下文,但反应上下文代码不起作用
- swift - 如何在 Flutter 应用程序中创建 ios 14 小部件?
- typescript - HttpClient 和 Observable 没有给出预期的数据
- javascript - 如果 div 不在页面区域中,如何分页?
- android - 为什么导航栏在某些 Android 11 设备上不显示?
- javascript - 客户端上的 XSLT 转换以避免使用 JavaScript 的 CORS
- python - 在不创建对象的情况下为类变量分配内存
- javascript - 如何测试使用 chai 或 chai-as-promised 为异步函数抛出的错误?
- asp.net - 将 Startup.cs 代码从 Core 修改为旧版 ASP.NET
- typescript - 将给定的 Array 类型解构为新类型