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

时间:2015-08-08 22:42:28

标签: geometry cgal

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

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

1 个答案:

答案 0 :(得分:2)

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)