% +------------------------------------------------------------------------+ % | Reference manual page: VisibilityComplexTraits.tex % +------------------------------------------------------------------------+ % | Last revision: 09.07.2002 % | Author : Pierre Angelier % | Maintainer: Laurent Rineau % | Package: Visibility_complex % +------------------------------------------------------------------------+ \ccRefPageBegin % +----------------------------------------------------------------------------+ \begin{ccRefConcept}{VisibilityComplexTraits} \label{pageVisibilityComplexTraitsRef} % +----------------------------------------------------------------------------+ \ccDefinition The concept \ccRefName\ describes the set of requirements to be fulfilled by any class used to instantiate the first template parameter of the classes \ccc{Visibility_complex_2} and \ccc{Visibility_complex_antichain}. This concept provides the types of the geometric primitives used in the visiblity complex and some function object types for the required predicates on those primitives. % +----------------------------------------------------------------------------+ % +----------------------------------------------------------------------------+ \ccTypes \ccThree{VisibilityComplexTraits::Is_upward_directed }{}{} \ccThreeToTwo \ccNestedType{Point_2}{point type.} \ccGlue \ccNestedType{Segment_2}{segment type.} \ccGlue \ccNestedType{Disk}{disk type.} \ccGlue \ccNestedType{Bitangent_2}{model of the \ccc{Bitangent} concept. } \ccGlue \ccNestedType{Arc_2}{model of the \ccc{Arc} concept. } % +----------------------------------------------------------------------------+ \ccNestedType{Orientation_object}{Must provide the operator \ccc{Orientation operator()(Bitangent_2 a, Bitangent_2 b)}, which returns \ccc{LEFTURN, RIGHTTURN, COLLINEAR} depending on the sign, \ccc{POSITIVE, NEGATIVE, ZERO} of the determinant $\det(\vec{a},\vec{b})$ of the two underlying vectors of the bitangents $a$ and $b$.} \ccGlue \ccNestedType{Is_upward_directed}{Must provide the operator \ccc{bool operator()(Bitangent_2 d)}, which returns true iff. the angle of the bitangent belongs to $[0,\pi)$. } \ccGlue \ccNestedType{Compare_extreme_yx}{Let \ccc{FT extreme(bool x, C c)} be a function returning the maximal (resp. minimal) $y$-coordinate of $c$ if $x$ is false (resp. true). The type $C$ can be either \ccc{Disk} or \ccc{Bitangent_2}. \\ The type \ccc{Compare_extreme_yx} must provide an operator \ccc{Comparison_result operator()(bool x , C a , bool y , D b)} which returns the comparison result between the \ccc{compare(x,a)} and \ccc{extreme(y,b)}. The types $C$ and $D$ can be either \ccc{Disk} or \ccc{Bitangent}. } \ccNestedType{Is_point}{Must provide the operator \ccc{bool operator()(Disk d)}, which returns true iff. $d$ is a point.} \ccGlue \ccNestedType{Equal_as_segments}{Must provide the operator \ccc{bool operator()(Bitangent_2 a, Bitangent_2 b)}, which returns true iff. the underlying segments of $a$ and $b$ are equal.} \ccGlue \ccNestedType{Do_intersect}{Must provide the four operators \ccc{bool operator()(C a, D b)}-- where the types $C, D$ are either \ccc{Disk} or \ccc{Bitangent_2}-- which return true iff. $a$ and $b$ intersect.} % +----------------------------------------------------------------------------+ % +----------------------------------------------------------------------------+ \ccCreation \ccCreationVariable{traits} \ccConstructor{VisibilityComplexTraits();} {default constructor.} % +----------------------------------------------------------------------------+ % +----------------------------------------------------------------------------+ \ccHasModels \ccRefIdfierPage{CGAL::Visibility_complex_point_traits} \\ \ccRefIdfierPage{CGAL::Visibility_complex_segment_traits} \\ \ccRefIdfierPage{CGAL::Visibility_complex_polygon_traits} \\ \ccRefIdfierPage{CGAL::Visibility_complex_circle_traits} % +----------------------------------------------------------------------------+ % +----------------------------------------------------------------------------+ \end{ccRefConcept} \ccRefPageEnd % +----------------------------------------------------------------------------+