【问题标题】:CGAL - Given a line L and distance D in R^2, how to find equations of the lines parallel to L at distance D from L?CGAL - 给定一条直线 L 和 R^2 中的距离 D,如何在距离 L 的距离 D 处找到平行于 L 的直线的方程?
【发布时间】:2015-08-08 22:42:27
【问题描述】:

我在欧几里得平面上有一条线L和一个标量D,我想找到 与 L 平行且距离 LD 的 2 条线。 我怎么能在 CGAL 中做到这一点? api CGAL::parallel 用于比较两条线/段/射线是否 平行,而不是返回平行线。 api Line_2 垂直 (const Point_2 &p) const 可用于获取 直线 N 的方程与直线 L 垂直,但我似乎找不到 在法线 N 上距离 L 的距离为 D 的点的方法。 (如果我能 得到这样一个点P,我可以生成平行于L的线经过 通过 P 得到我想要的直线方程)。

想法?我确定有一种使用其他 API 的方法,但我似乎无法 找到它(我已经非常彻底地通过 2D 和 3D 线性几何 内核 API 列表,并检查了名称听起来很有希望的 API)。

【问题讨论】:

    标签: geometry cgal


    【解决方案1】:

    can get一般直线方程的a、b、c参数

    a * x + b * y + c = 0
    

    然后将其除以归一化

    d = Sqrt(a * a + b * b)
    

    获得

    A * x + B * y + C = 0, where
    A = a / d 
    B = b / d 
    C = c / d 
    

    并使用参数(A, B, C + D)(A, B, C - D)(其中 D 是您的距离)制作平行线方程

    如果 Line_2.direction 被归一化,使用另一种方法会更简单:

    dir = L.direction
    p = L.point
    p1  = Point(p.x + dir.y * D, p.y - dir.x * D)
    p2  = Point(p.x - dir.y * D, p.y + dir.x * D)
    L1 = Line_2(p1, dir)
    L2 = Line_2(p2, dir)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多