平面在水平方向上的旋转 我有一个非常简单的问题,但这使我困惑了如何在C++中实现这一点。

平面在水平方向上的旋转 我有一个非常简单的问题,但这使我困惑了如何在C++中实现这一点。,c++,rotation,C++,Rotation,这里,我有一个斜平面,它的法向量是(a,b,c)。现在我想把这个平面水平旋转90度和180度。i、 e.我想将XY平面中的平面法线旋转90度和180度 问题是我不知道向量落在哪个象限。它可能在第一或第三…或任何其他 所以,我的问题是,得到90度和180度旋转向量的任何一般公式 例如,如果更新的向量是[a1,b1,c](乘以90)和[a2,b2,c](乘以180),那么a1,b1和a2,b2是什么?更一般一点:围绕z轴旋转[x,y,z]角度θ变为 a1 = -b b1 = a a2 = -a

这里,我有一个斜平面,它的法向量是(a,b,c)。现在我想把这个平面水平旋转90度和180度。i、 e.我想将XY平面中的平面法线旋转90度和180度

问题是我不知道向量落在哪个象限。它可能在第一或第三…或任何其他

所以,我的问题是,得到90度和180度旋转向量的任何一般公式


例如,如果更新的向量是[a1,b1,c](乘以90)和[a2,b2,c](乘以180),那么a1,b1和a2,b2是什么?

更一般一点:围绕z轴旋转[x,y,z]角度θ变为

a1 = -b
b1 =  a

a2 = -a
b2 = -b
[x,y,z]->[cos(theta)*x-sin(theta)*y , sin(theta)*x+cos(theta)*y , z]

更一般一点:围绕z轴旋转[x,y,z]一个角度θ

[x,y,z]->[cos(theta)*x-sin(theta)*y , sin(theta)*x+cos(theta)*y , z]