gtsam OrientedPlane3的使用细节

在得到一个平面方程ax+by+cz+d=0后,将系数(a,b,c,d)传入到OrientedPlane3中进行gtsam的平面构建。
但是发现,在构建的时候是这样的:

  /// Construct from four numbers of plane coeffcients (a, b, c, d)
  OrientedPlane3(double a, double b, double c, double d) {
    Point3 p(a, b, c);
    n_ = Unit3(p);
    d_ = d;
  }

其中n_是法向量,在调用Unit3的时候,会进行归一化,也就是n_已经不等于传入的原始数据了。但是d还是没有变。假设n_=(nx,ny,nz),此时不能直接恢复出nxx+nyy+nz*z+d=0,这个一般式的方程。
如果要用一般式,需要一些转换,利用单位法向量,以及原点到平面的距离d来进行恢复这个时候的平面方程里的d:
单位方向量是垂直于平面的向量,也是从原点,指向某个点的向量,把这个向量乘上原来原点到它的距离d,就可以得到一个点p0,这个点落在了平面上,那么此时真正的D=-n.dot(p0)

以下插图来自:https://zhuanlan.zhihu.com/p/102514602
在这里插入图片描述
得到了这个真正的d,计算点到平面的距离就回到正常的一般式就可以计算了:
在这里插入图片描述
综上,在构建了OrientedPlane3以后,如果需要进行这些计算,就需要稍微做一些封装。
如自己利用这些提取的平面进行跟踪,涉及到关联的时候,需要做一些计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值