代码之家  ›  专栏  ›  技术社区  ›  TCSGrad

CGAL-给定R^2中的直线L和距离D,如何在距离L D处找到平行于L的直线方程?

  •  0
  • TCSGrad  · 技术社区  · 11 年前

    我有一条线 L 在欧几里得平面和标量 D ,我想找到 平行于 L 距离为 D 从…起 L . 我如何在CGAL中做到这一点? api CGAL::平行 用于比较两条线/线段/光线是否 平行,而不是返回平行线。api 第2行<内核> 垂直(常量Point_2<内核>&p)常量 可以用于获取 直线方程式 N 垂直于线路 L ,但我似乎找不到 在远处找到重点的方法 D 从…起 L 正常情况下 N 如果可以的话 得到这样的分数 P ,我可以生成与 L 经过 通过 P 以获得所需的直线方程)。

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

    1 回复  |  直到 11 年前
        1
  •  2
  •   MBo    11 年前

    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)