三维平面点云与二维坐标点之间的转换(投影法)


#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
 
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;

// 返回角度值
double angle_between_vectors(const Kernel::Vector_3& v1, const Kernel::Vector_3& v2) 
{
    double dot_product = v1 * v2;
    double magnitude_v1 = std::sqrt(v1.squared_length());
    double magnitude_v2 = std::sqrt(v2.squared_length());

    double cos_angle = dot_product / (magnitude_v1 * magnitude_v2);
    // 确保cos_angle在[-1, 1]范围内,避免浮点数误差
    cos_angle = std::max(-1.0, std::min(1.0, cos_angle));

    return std::acos(cos_angle) / 3.1415926535 * 180.0; // 返回角度
}

class Coord2DTransformer
{
    typedef Kernel::Point_3 Point;
    typedef Kernel::Vector_3 Vector;
    typedef Kernel::Plane_3 Plane;
public:
    void SetData(std::vector<Point>& input)
    {   
        // fit_plane参见博客《CGAL散乱点拟合最小二乘平面(3D平面拟合,基于Eigen)》
        // https://blog.csd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值