我正在计算两个线段( RatKernel::Segment_2
型)的平面平分线,它可以由抛物线弧,光线和线段组成 .
使用 Arr_conic_traits_2<RatKernel, AlgKernel, NtTraits>
类我可以很容易地创建抛物线弧的部分,这不是问题 . 如reference中所述,弧的支撑曲线必须具有以下形式: rx^2 + sy^2 + txy + ux + vy + w = 0
其中所有六个系数都需要是有理数 . 但是,弧的 endpoints 可以是带有代数坐标的 Point_2
.
问题出现在光线(无论如何必须被限制到非常长的区段,因为圆锥形特征类仅支持有界曲线)和区段,因为为了将它们连接到抛物线弧,它们还需要具有代数 endpoints . 这意味着支撑曲线(一条线)也会有代数系数,但这不受支持 .
我真的需要平分线的所有部分彼此连接,因为用合理的段来近似段部分(从而使平分线部分断开)似乎在其他计算中引起错误 .
一个想法是使用几乎平坦的曲线近似这些段平分线部分;问题是我只有两个 endpoints ,我可以在中间创建第三个点并稍微移动它(因此它可以很容易地具有有理坐标),这样通过这三个点的曲线就不会是平坦的 .
有三个点(两个强有力的代数)我需要创建一个满足它们并且具有合理系数的曲线 . 这可能吗?有更好的解决方案吗?
P.S . :使用另一个排列类如 Arr_algebraic_segment_traits_2
将允许我使用无界光线,但是如果我理解正确的话,所有曲线的 endpoints 都需要将x坐标作为整数,这甚至是一个更大的问题 .
1 回答
毕竟尝试使用
Arr_algebraic_segment_traits_2
. 由该特征处理的曲线是零个多项式集的图 . 限制是系数必须是整数,这意味着也可以处理具有有理系数的多项式 . 点的坐标是实数 .要构造实数并将其用作坐标,请执行以下操作: