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

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?

我在欧氏平面上有一条直线 L 和一个标量 D,我想找到 平行于 L 且与 L 的距离为 D 的 2 条线。 我怎样才能在 CGAL 中做到这一点? api CGAL::parallel 用于比较两个 lines/segments/rays 平行,不是为了返回平行线。 apiLine_2<内核> perpically (const Point_2< Kernel > &p) const 可用于获取 直线 N 垂直于直线 L 的方程,但我似乎找不到 在正常 N 上从 L 获得距离 D 的点的方法。 (如果我能 得到这样一个点P,我可以生成平行于L的直线经过 通过 P 得到我想要的直线方程)。

想法?我确定有一种方法可以使用其他一些 API,但我似乎不能 找到它(我已经通过 2D 和 3D 线性几何非常彻底地查看 内核 API 列表,并检查了名字听起来很有前途的 API。

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)