Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:围绕平面法线旋转向量_C++_Rotation_Plane_Irrlicht - Fatal编程技术网

C++ C++;:围绕平面法线旋转向量

C++ C++;:围绕平面法线旋转向量,c++,rotation,plane,irrlicht,C++,Rotation,Plane,Irrlicht,我试着围绕平面法线旋转平面上的一个点,旋转角度一定(所以它保持在平面上) 例如: 点=(0,0,1)(在平面上) 正常=(0,1,0) 角度=33度 但似乎不知道怎么做 编辑: 旋转轴始终通过原点(0,0,0)可能不是最佳的,但是:找到平面的跨度向量(称为U和V),用U和V表示点p,并应用2D旋转。PS:法线不能完全定义平面;此外,平面上至少还需要一个点。要计算所需的旋转矩阵,需要一点线性代数。有一个公式可以解释你需要做什么。如果你在3空间中寻找轴角度旋转,罗德里格斯的旋转公式非常有用。维基

我试着围绕平面法线旋转平面上的一个点,旋转角度一定(所以它保持在平面上)

例如:

  • 点=(0,0,1)(在平面上)
  • 正常=(0,1,0)
  • 角度=33度
但似乎不知道怎么做

编辑:


旋转轴始终通过原点(0,0,0)

可能不是最佳的,但是:找到平面的跨度向量(称为U和V),用U和V表示点p,并应用2D旋转。PS:法线不能完全定义平面;此外,平面上至少还需要一个点。

要计算所需的旋转矩阵,需要一点线性代数。有一个公式可以解释你需要做什么。

如果你在3空间中寻找轴角度旋转,罗德里格斯的旋转公式非常有用。维基百科页面非常好:

我想你的意思是旋转轴通过原点?是的,它通过原点。它总是通过(0,0,0)那么是你需要帮助的数学,还是irrlichtapi,或者仅仅是什么?您尝试过什么?然后法线和该点唯一地确定平面,并且由于该点位于旋转轴上,因此旋转将为no-op。事实上,否。op声明(在编辑中)“旋转轴始终通过原点(0,0,0)”。要旋转的点在平面上,但不一定(事实上,不太可能)在该轴上。那么,我责怪OP对问题的描述不完整(我在他评论之前阅读了文本)。不过,我描述的方法仍然有效。