【问题标题】:How to compute a point on a line in CGAL如何在CGAL中计算一条线上的点
【发布时间】:2011-03-31 03:48:35
【问题描述】:

给定 CGAL 中的 3D 线,我如何计算该线上距端点已知距离的点?

【问题讨论】:

    标签: c++ computational-geometry cgal


    【解决方案1】:

    如果你有两个点P0和P1,你可以做一个向量V = P1 - P0 .

    给定 D 到 P0 的距离,你可以得到结果点 R = P0 + (D ÷ ||V||) ⋅ V.

    (在线条之间进行线性插值,通过除以线条的全长将 D 变为百分比。)


    我不知道 CGAL(而且文档很烂),但我认为应该是这样的:

    Line_3<K> l = /* ... */;
    Vector_3<K> v = l.to_vector();
    Point_3<K> r = l.p + (d * d / v.squared_length()) * v;
    

    请注意,我什至无法找到获取直线起点的方法,因此由您决定。 (l.p部分是编的。)

    【讨论】:

    • 获取一行中的两个点: typedef Kernel::Line_3 Line;线 l = 线(点 1,点 2); cout
    • 好吧,它不会编译 - CGAL 没有定义点和向量的运算符之一。我真的不知道是哪一个,因为 gcc 是人类已知的最糟糕的编译器。但它非常接近,所以你得到一个检查:)
    • @Max:啊,如果您发布错误,我相信我们可以提供帮助。 (编辑问题,我的意思是。)谢谢。
    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多