我有一个来自 kinect fusion 的点云,并使用点云库来分割地平面(ax+by+c*z+d=0)成功(我在地平面的 pcl::ModelCoefficients 中得到了 a、b、c、d)。现在我需要将笛卡尔坐标转换为新的笛卡尔坐标,使地平面成为 X-O-Y 平面(0*x+0*y+z=0)。
我想我可以通过这个API来做到这一点(但我不知道如何做):http://docs.pointclouds.org/trunk/group__common.html#transformPointCloud
我的答案:
看看这个 PCL api:http://docs.pointclouds.org/1.7.2/a02405.html#ga4375e99ec2ae368eec9379f506568611
我成功解决了这个问题!
我无法打开你的 API 链接,但我猜你可以使用简单的转换来转换你的飞机:
- 你应该添加到所有点向量 {a * d, b * d, c * d} -
将你的点移动到平面 ax + by + cz = 0
- 那么你应该找到绕轴 [{a, b, c} cross 的旋转矩阵
{0, 0, 1}] 在角度 [{a, b, c} 点 {0, 0, 1}] 上并变换你的
这个矩阵的点http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToMatrix-在这里你可以看到如何从轴和角度找到旋转矩阵
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)