2017-07-21 11 views
0

IはCGAL-4.9.1のEnvelope_3パッケージを使用していると私は、上部エンベロープ得られた包絡線図(Envelope_diagram_2<EnvTraits>)は3種類のエッジ有することができる計算する必要がありますTraitsクラスを作成してparametrise Envelope_diagram_2にする方法はありますか?X単調曲線はセグメント、光線、円錐曲線になりますか?

  • セグメント
  • 光線を
  • 放物線弧(円錐弧)Envelope_Traits_3

3に設けられたモデルは、このために十分ではありません。
私はEnvTraitsというコンセプトのモデル(Envelope_Traits_3のモデルである必要があります)を作成する必要があります。

今のところ私は、すでに提供されているEnv_sphere_traits_3<ConicTraits>モデルのようなものを作っています。これは、放物線とセグメント(私はちょうど直線アークを使用しています)を自由に使い分けることができます。

私もRaysを使用できる必要があるため、問題が発生します。どうすればこのことができますか?私が必要とする3つのタイプになることができるX_monotone_curve_2を提供するTraitsクラスがありますか(ちょうど今私が今行っているようにArr_conic_traits_2)?


、それは異なるタイプの曲線がsubcurvesとして格納されることを可能にするであろうことを期待し、Arr_polycurve_traits_2クラスを発見したが、それは実際には円錐、同じ種類(直線、ベジェの全てであるポリカーブを格納することができ円形...)。

答えて

0

EnvelopeTraits_3の概念とArrangementOpenBoundaryTraits_2という概念のモデルが必要です。 「2D配列」パッケージによって提供されるすべての形質クラスの中で、テンプレートArr_linear_traits_2,Arr_rational_function_traits_2、およびArr_algebraic_segment_traits_2のインスタンスは、後の概念のモデルです。

Env_your_object_traits_3<AlgebraicTraits_2>のようなものを開発することをお勧めします。テンプレートパラメータAlgebraicTraits_2は、Arr_algebraic_segment_traits_2のインスタンスに置き換えることができます。

Efi

+0

ありがとうございました。 'Arr_algebraic_segment_traits'の問題は、2つの可変多項式の係数が今のところ整数にしかなり得ないことです。 今のところ、私は 'Arr_conic_traits'を使用し、非常に長いセグメント(上のエンベロープが最も遠い線分のボロノイ図を計算するのに使われる)として線を表現して、結果の図を描くときにカットされると考えました。 –

+0

彼らはまた有権者でもよいし、少なくとも、有権者がいるならば、それらを整数に変換することもできる。円錐では、状況は似ています。 –

+0

ドキュメントには、 _ "typesa' leda :: integer' _and_ 'CORE :: BigInt' _がサポートされています。また、' CGAL :: Sqrt_extension' _インスタンスは整数型のいずれかでインスタンス化されています"_ 私は係数として整数だけを使用できることを理解しました。有理数を整数に変換するとどういう意味ですか?それが精度を失うことはありませんか? –

関連する問題