\begin{ccRefConcept}{RandomPolygonTraits_2}
\ccCreationVariable{t}

\ccDefinition

The concept \ccRefName\ describes the requirements for the traits
class used by the function \ccc{random_polygon_2}.
\ccIndexSubitem[C]{random_polygon_2}{traits requirements}

\ccHasModels

The \cgal\ kernels.

\ccTypes
\ccNestedType{FT}{ The coordinate type of the points of the polygon 
                   ({\em i.e.}, a field type)}
\ccNestedType{Point_2}{The point type of the polygon.}
\ccNestedType{Orientation_2}
      {Predicate object type that determines the orientation of three points.
       It must provide \ccc{Orientation operator()(Point_2 p, Point_2 q,
                                                   Point_2 r)} that
       returns \ccStyle{LEFT_TURN}, if $r$ lies to the left of the oriented
       line $l$ defined by $p$ and $q$, returns \ccStyle{RIGHT_TURN} if $r$
       lies to the right of $l$, and returns \ccStyle{COLLINEAR} if $r$ lies
       on $l$.}
\ccNestedType{Less_xy_2} 
       {Binary predicate object type comparing \ccc{Point_2}s lexicographically.
        It must provide \ccc{bool operator()(Point_2 p, Point_2 q)} that 
        returns \ccc{true} iff $p <_{xy} q$.
        We have $p<_{xy}q$, iff $p_x < q_x$ or $p_x = q_x$ and $p_y < q_y$,
        where $p_x$ and $p_y$ denote the $x$ and $y$ coordinates of point $p$,
        resp.
       }
                        

\ccOperations

The following two member functions returning instances of the above predicate
object types are required.

\ccMemberFunction{ Less_xy_2 less_xy_2_object();}{}
\ccMemberFunction{ Orienation_2 orientation_2_object();}{}


\end{ccRefConcept}
