将法向量旋转到轴平面上
我在3D空间中有一组数据点,显然都落在特定的平面上.我使用PCA来计算平面参数. PCA的第3个分量给出了平面的法向量(最弱的分量).
我接下来要做的是将所有点转换到所述平面上并在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: 我希望n2的y分量为零.然而,对于向量(-0.6367,0.77697,0.0467)已经失败了. 解决方法
如果你有一架飞机,你有一个法线向量和一个原点.我根本不会做任何“轮换”.你的答案只是一些矢量操作.
>让我们将你的飞机的法线向量称为新的z轴. 如果您已经有交叉和点积函数,那么这只是几行代码.我知道它有效,因为我写的大多数3D电子游戏都是这样的. 技巧: >注意向量指向的方向.如果他们指出错误的方式,则否定结果向量或更改叉积的顺序.>如果飞机的法线与原始x轴完全相同,则会遇到问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |