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

6
我试图让平面上的一个点绕着该平面的法向量旋转一个确定的角度(使其保持在平面上)。
例如:
点 = (0,0,1)(在平面上) 法向量 =(0,1,0) 角度 = 33度
但似乎不知道如何实现它。
编辑: 旋转轴始终通过原点(0,0,0)。

我猜你的意思是旋转轴经过原点? - Karl Knechtel
是的,它会经过 (0,0,0)。 - RdR
那么你需要帮助的是数学问题、Irrlicht API,还是其他方面?你尝试过什么? - Karl Knechtel
3个回答

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

0

可能不是最优解,但是可以这样做:找到平面的跨度向量(称为U和V),用U和V表示点P,并应用2D旋转。附注:一个法线并不能完全定义一个平面;除此之外,你还需要至少一个平面上的点。


那么,普通点和该点唯一确定平面,由于该点位于旋转轴上,因此旋转将不起作用。 - zvrba
实际上不是这样的。OP在编辑中指出:“旋转轴始终通过原点(0,0,0)”。要旋转的点位于平面上,但不一定(事实上很可能不是)在该轴上。 - aldo
那么,我认为问题描述不完整是由于OP的原因(在他的评论之前我已经阅读了文本)。尽管如此,我所描述的方法仍然有效。 - zvrba

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接