Opengl 为转换矩阵创建约束

Opengl 为转换矩阵创建约束,opengl,math,matrix,constraints,quaternions,Opengl,Math,Matrix,Constraints,Quaternions,在3d空间中,我有一个3d对象,我使用变换矩阵旋转它。变换矩阵是4x4,但我只是使用矩阵的旋转部分。我想为旋转添加约束,例如,对象只能在z方向上旋转20度。我知道以下内容,但当我添加手动约束(如角度不能大于20)时,我会在对象中缩放和倾斜 要总结我的问题,如何向变换矩阵添加约束?简短的回答是,您应该向Euler角度表示添加约束 如果仅以矩阵形式保持旋转,则将其转换为Euler角度表示,应用约束并将Euler角度转换为矩阵形式 注意:您的Rx Ry Rz表示形式称为“Euler Angels”

在3d空间中,我有一个3d对象,我使用变换矩阵旋转它。变换矩阵是4x4,但我只是使用矩阵的旋转部分。我想为旋转添加约束,例如,对象只能在z方向上旋转20度。我知道以下内容,但当我添加手动约束(如角度不能大于20)时,我会在对象中缩放和倾斜


要总结我的问题,如何向变换矩阵添加约束?

简短的回答是,您应该向Euler角度表示添加约束

如果仅以矩阵形式保持旋转,则将其转换为Euler角度表示,应用约束并将Euler角度转换为矩阵形式

注意:您的Rx Ry Rz表示形式称为“Euler Angels” . 有许多方法可以组合绕正交轴的旋转。所有转换的代码都可以从

您所说的4x4矩阵的旋转部分是什么意思?左上3x3子矩阵?我想beavis的意思是,他只是把一个向量3(x,y,z,now)乘以这些矩阵。这些矩阵在我看来很好,在角度上施加约束应该没有问题。最好给我们看一些关于如何使用/约束这些矩阵的代码。矩阵的左上角元素是x轴向量的x坐标,在不缩放的情况下,它是单位向量,因此约束条件应该是该元素Xx在范围内
该粗略值在整圆上不起作用,但在20度范围内是可以的,除非交叉象限。。。因此,如果超出范围,则忽略旋转或将矩阵设置为约束(预计算)到更近的边。如果您还使用其他旋转或倾斜/缩放,那么这将不会像预期的那样起作用。请看这里,更复杂的旋转使用和约束是更好的Euler角度……我认为您不能将约束添加到变换矩阵中,因为矩阵本身没有放置约束信息的位置。你唯一能做的就是构造符合你的约束的变换矩阵。