ypn*_*nos 10 geometry trigonometry vector rotation
我在3D空间中有一组数据点,显然都落在特定的平面上.我使用PCA来计算平面参数.PCA的第三个组成部分给出了平面的法向矢量(最弱的分量).
我接下来要做的是将所有点转换到所述平面上并在2D中查看它.
我的想法是做以下事情:
现在我坚持找到正确的旋转操作.我尝试使用acos或atan并设置两个旋转矩阵.似乎这两种方法(使用acos,使用atan)给我错误的结果.也许你可以帮帮我吧!
Matlab代码如下:
b = atan(n(1) / n(2));
rotb = [cos(b) -sin(b) 0; sin(b) cos(b) 0; 0 0 1];
n2 = n * rotb;
a = atan(n(1) / n(3));
rota = [cos(a) 0 sin(a); 0 1 0; -sin(a) 0 cos(a)];
n3 = n2 * rotaows:
Run Code Online (Sandbox Code Playgroud)
我希望n2y分量为零.然而,对于向量(-0.6367,0.77697,0.0467)已经失败了.
Nos*_*dna 12
如果你有一个平面,你有一个法线向量和一个原点.我根本不会做任何"轮换".你的答案只是一些矢量操作.
如果您已经有交叉和点产品功能,那么这只是几行代码.我知道它有效,因为我写的大多数3D电子游戏都是这样的.
技巧: