有没有办法创建一个 Traits class 来参数化 Envelope_diagram_2,其中 X 单调曲线可以是线段、射线或二次曲线?

Is there a way to create a Traits class to parametrise Envelope_diagram_2 where the X monotone curves can be segments, rays or conic curves?

我正在使用 CGAL-4.9.1 的 Envelope_3 包,我需要计算一个上包络,其中生成的包络图 (Envelope_diagram_2<EnvTraits>) 可能具有三种不同类型的边缘:

Envelope_Traits_3提供的三个模型还不够
因此,我需要创建自己的 EnvTraits(必须是概念 Envelope_Traits_3 的模型)。

现在,我做了一个类似于已经提供的 Env_sphere_traits_3<ConicTraits> 模型的东西,我可以使用它来处理抛物线弧和线段(我只使用直弧)。

问题的出现是因为我还需要能够使用Rays。我怎么能这样做?是否有我可以扩展的特征 class(就像我现在使用 Arr_conic_traits_2 所做的那样)提供 X_monotone_curve_2 可以是我需要的三种类型?


我找到了Arr_polycurve_traits_2class,希望它可以让不同类型的曲线存储为子曲线,但实际上它只允许存储同类的多曲线(线性、贝塞尔曲线、圆锥曲线、圆形...)。

您需要的是 EnvelopeTraits_3 概念和 ArrangementOpenBoundaryTraits_2 概念的模型。在“2D Arrangements”包提供的所有特征 类 中,只有模板 Arr_linear_traits_2Arr_rational_function_traits_2Arr_algebraic_segment_traits_2 的实例是后来概念的模型。

我建议你开发类似 Env_your_object_traits_3<AlgebraicTraits_2> 的东西,其中模板参数 AlgebraicTraits_2 可以替换为 Arr_algebraic_segment_traits_2.

的实例

Efi