有什么方法可以让所有不与原点中心(vector3(0.0f,0.0f,0.0f))对齐的物体绕自己的中心轴旋转?
What is the way to make all the objects that are not aligned with the origin center (vector3(0.0f,0.0f,0.0f)) , rotate about its own central axis?
伪代码问题:
vector3 vector3 objectCenter = (10,5,0); // current object center
vector3 vector3 objectPosition = (40,5,0); // Place to translate the object
vector3 objectRotation; = 45.0f;
matrix.loadIdentity ();
matrix.translate (objectCenter);
//apply transformations
matrix.rotateX (objectRotation);
matrix.translate (-objectCenter);
//itś work correctly until here
//when i try to translate the object to the real position, the rotation is incorrect.
matrix.translate (objectPosition);
我使用 C++、glm(矩阵管理)和 OpenGL.
I use C++, glm (to matrix manage) and OpenGL.
如果您想将对象局部旋转到其自己的坐标系,请执行以下操作:
if you want to rotate object locally to its own coordinate system then do this:
M=inverse(inverse(M)*rotation_matrix);
M 是你的对象变换矩阵rotation_matrix 是任意旋转 (glRotate())inverse 是计算逆矩阵的函数,您可以使用我的 逆矩阵计算 或这个 在 C++ 中围绕 LCS x (lrotx) 实现的旋转(在答案的底部)
M is your object transform matrixrotation_matrix is any rotation (glRotate())inverse is function that computes the inverse matrix you can use mine inverse matrix computation or this rotation around LCS x (lrotx) implementation in C++ (at the bottom of the answer)[edit1]更多关于M和它代表的坐标系的对象之间的关系
看这里:变换矩阵解剖
M 原点通常是物体的中心(或旋转运动的中心点).M 的轴通常与对象对齐,例如在飞机中,X 轴通常是飞行方向.我比较习惯:
M origin is usually the middle of object (or point which is center of rotation movements). Axises of M are usually aligned with object for example in airplanes the X axis is usually the fly direction. I am more used to:
+z 轴作为正向运动+x 为右,-x 为左+y 向上,-y 向下+z axis as forward direction movement+x as right, -x as left+y as up and -y as downpith,yaw,roll 然后是围绕 x,y,z
这篇关于如何按自己的中心旋转所有对象,然后将它们转换到实际位置(它不起作用)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
fpermissive 标志有什么作用?What does the fpermissive flag do?(fpermissive 标志有什么作用?)
如何在我不想编辑的第 3 方代码中禁用来自 gccHow do you disable the unused variable warnings coming out of gcc in 3rd party code I do not wish to edit?(如何在我不想编辑的第 3 方代码中禁
使用 GCC 预编译头文件Precompiled headers with GCC(使用 GCC 预编译头文件)
如何在 OS X 中包含 omp.h?How to include omp.h in OS X?(如何在 OS X 中包含 omp.h?)
如何让 GCC 将 .text 部分编译为可写在 ELF 二进制文How can I make GCC compile the .text section as writable in an ELF binary?(如何让 GCC 将 .text 部分编译为可写在 ELF 二进制文件中?)
GCC、字符串化和内联 GLSL?GCC, stringification, and inline GLSL?(GCC、字符串化和内联 GLSL?)