\begin{ccRefClass} {Triangle_3<R>}

\ccDefinition  An object $t$ of the class \ccRefName\ is a triangle in
the three-dimensional Euclidean space $\E^3$. As the triangle is not
a full-dimensional object there is only a test whether a point lies on
the triangle or not.
 
\ccCreation
\ccCreationVariable{t}

\ccHidden \ccConstructor{Triangle_3();}
             {introduces an uninitialized variable \ccVar.}

\ccHidden \ccConstructor{Triangle_3(const Triangle_3<R> &u);}
 	    {copy constructor.}

\ccConstructor{Triangle_3(const Point_3<R> &p, 
	                     const Point_3<R> &q, 
	                     const Point_3<R> &r);}
            {introduces a triangle \ccVar\ with vertices $p$, $q$ and $r$.}

\ccOperations

\ccHidden \ccMethod{Triangle_3<R> & operator=(const Triangle_3<R> &t2);}
        {Assignment.}

\ccMethod{bool operator==(const Triangle_3<R> &t2) const;}
       {Test for equality: two triangles t and $t_2$ are equal, iff there 
        exists a cyclic permutation of the vertices of $t2$, such that 
        they are equal to the vertices of~\ccVar.}

\ccMethod{bool operator!=(const Triangle_3<R> &t2) const;}
       {Test for inequality.}

\ccMethod{Point_3<R> vertex(int i) const;}
       {returns the i'th vertex modulo 3  of~\ccVar.}

\ccMethod{Point_3<R> operator[](int i) const;}
       {returns \ccStyle{vertex(int i)}.}

\ccMethod{Plane_3<R> supporting_plane();}
       {returns the supporting plane of \ccVar, with same
       orientation.}

\ccPredicates

\ccMethod{bool is_degenerate() const;}
       {{\ccVar} is degenerate if its vertices are collinear.}

\ccMethod{bool has_on(const Point_3<R> &p) const;}
       {A point is on \ccVar, if it is on a vertex, an edge or the
        face of \ccVar.}

\ccHeading{Miscellaneous}

\ccMethod{FT squared_area() const;}
       {returns a square of the area of \ccVar.}

\ccMethod{Bbox_3 bbox() const;}
       {returns a bounding box containing \ccVar.}

\ccMethod{Triangle_3<R>  transform(const Aff_transformation_3<R> &at) const;}
       {returns the triangle obtained by applying $at$ on the three
        vertices of~\ccVar.}

\ccSeeAlso
\ccRefConceptPage{Kernel::Triangle_3} \\

\end{ccRefClass} 
