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

C++: Rotate vector around normal of plane

本文关键字:旋转 向量 平面 C++      更新时间:2023-10-16

我试图将平面上的一个点围绕平面的法线旋转一定角度(使其保持在平面上)。

例如:

  • 点=(0,0,1)(在平面上)
  • 法线=(0,1,0)
  • 角度=33度

但似乎不知道如何做到

编辑:

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

如果您正在寻找3空间中的轴角旋转,Rodrigues的旋转公式非常有用。维基百科的页面非常好:这里是

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

要计算所需的旋转矩阵,需要一些线性代数。维基百科上有一篇文章解释了你需要做什么