- add constructor arc(three Point_3)

- constructors for supporting line/circle/plane
- various bug fixes
This commit is contained in:
Monique Teillaud 2008-09-16 09:49:46 +00:00
parent 1cd9d75dd7
commit 8b2f9cba73
5 changed files with 75 additions and 71 deletions

View File

@ -12,12 +12,12 @@
\ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo
\ccConstructor{Circular_arc_3(const SphericalKernel::Circle_3 &c)}
\ccConstructor{Circular_arc_3(const Circle_3<SphericalKernel> &c)}
{Constructs an arc from a full circle.}
\ccConstructor{Circular_arc_3(const SphericalKernel::Circle_3 &c,
const SphericalKernel::Circular_arc_point_3 &p1,
const SphericalKernel::Circular_arc_point_3 &p2)}
\ccConstructor{Circular_arc_3(const Circle_3<SphericalKernel> &c,
const Circular_arc_point_3<SphericalKernel> &p1,
const Circular_arc_point_3<SphericalKernel> &p2)}
{Constructs the circular arc supported by \ccc{c}, whose source and target
are respectively \ccc{p1} and \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{c}. \ccc{p1} and \ccc{p2}
@ -32,16 +32,29 @@ In this definition, we say that a plane is \textit{positive} if its
equation is of the form $ax+by+cz+d=0$ with $(a,b,c)>(0,0,0)$
(i.e. $(a>0) || (a==0) \&\& (b>0) || (a==0)\&\&(b==0)\&\&(c>0)$).
\ccConstructor{Circular_arc_3(const Point_3<SphericalKernel> &p,
const Point_3<SphericalKernel> &q,
const Point_3<SphericalKernel> &r)}
{Constructs an arc that is supported by the circle of type
\ccc{Circle_3<SphericalKernel>} passing through the points \ccc{p},
\ccc{q} and \ccc{r}. The source and target are respectively \ccc{p}
and \ccc{r}, when traversing the supporting circle in the
counterclockwise direction in the \textit{positive} plane containing
the circle.
Note that, depending on the orientation of the point triple
\ccc{(p,q,r)}, \ccc{q} may not lie on the arc.
\ccPrecond{\ccc{p}, \ccc{q}, and \ccc{r} are not collinear.}}
\ccAccessFunctions
\ccThree{SphericalKernel::Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo
\ccMethod{SphericalKernel::Circle_3 supporting_circle();}{}
\ccMethod{Circle_3<SphericalKernel> supporting_circle();}{}
\ccMethod{SphericalKernel::Circular_arc_point_3 source();}{}
\ccMethod{Circular_arc_point_3<SphericalKernel> source();}{}
\ccGlue
\ccMethod{SphericalKernel::Circular_arc_point_3 target();}{}
\ccMethod{Circular_arc_point_3<SphericalKernel> target();}{}
When the methods \ccc{source} and \ccc{target} return the same point, then
the arc is in fact a full circle. %\footnote{so far, arcs of zero length are

View File

@ -12,7 +12,7 @@
\ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo
\ccConstructor{Circular_arc_point_3(const SphericalKernel::Point_3 &q)}{}
\ccConstructor{Circular_arc_point_3(const Point_3<SphericalKernel> &q)}{}
\ccConstructor{Circular_arc_point_3(const SphericalKernel::Root_for_spheres_2_3 &r)}{}

View File

@ -9,7 +9,11 @@
A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Plane_3 operator()
(SphericalKernel::Polynomial_1_3);}
(const SphericalKernel::Circular_arc_3 &a);}
{Constructs the plane containing the arc.}
\ccMemberFunction{SphericalKernel::Plane_3 operator()
(const SphericalKernel::Polynomial_1_3 &p);}
{Constructs a plane from an equation.}
\ccSeeAlso
@ -27,8 +31,8 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Sphere_3 operator()
(SphericalKernel::Polynomial_2_3);}
{Constructs a circle from an equation.}
(const SphericalKernel::Polynomial_2_3 &p);}
{Constructs a sphere from an equation.}
\ccSeeAlso
@ -45,7 +49,11 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Line_3 operator()
(SphericalKernel::Polynomials_for_lines_3);}
(const SphericalKernel::Line_arc_3 &s);}
{Constructs the line containing the segment.}
\ccMemberFunction{SphericalKernel::Line_3 operator()
(const SphericalKernel::Polynomials_for_lines_3 &p);}
{Constructs a line from an equation.}
\ccSeeAlso
@ -59,7 +67,11 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Circle_3 operator()
(SphericalKernel::Polynomials_for_circles_3);}
(const SphericalKernel::Circular_arc_3 &a);}
{Constructs the circle containing the arc.}
\ccMemberFunction{SphericalKernel::Circle_3 operator()
(const SphericalKernel::Polynomials_for_circles_3 &p);}
{Constructs a circle from an equation.}
\ccSeeAlso
@ -88,12 +100,11 @@ A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Line_arc_3 operator()
(const SphericalKernel::Line_3 &l,
const SphericalKernel::Circular_arc_point_3 &p1,
const SphericalKernel::Circular_arc_point_3 &p2);}
const SphericalKernel::Circular_arc_point_3 &p,
const SphericalKernel::Circular_arc_point_3 &q);}
{Constructs the line segment supported by \ccc{l}, whose source
is \ccc{p1} and whose target is \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{l}.
\ccc{p1} and \ccc{p2} are different.}}
is \ccc{p} and whose target is \ccc{q}.
\ccPrecond{\ccc{p} and \ccc{q} lie on \ccc{l} and are different.}}
%\ccMemberFunction{SphericalKernel::Line_arc_3 operator()
% (const SphericalKernel::Line_3 &l,
@ -106,8 +117,8 @@ is \ccc{p1} and whose target is \ccc{p2}.
{}
\ccMemberFunction{SphericalKernel::Line_arc_3 operator()
(const SphericalKernel::Point_3 &p1,
const SphericalKernel::Point_3 &p2);}
(const SphericalKernel::Point_3 &p,
const SphericalKernel::Point_3 &q);}
{}
\end{ccRefFunctionObjectConcept}
@ -122,12 +133,11 @@ A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Circular_arc_3 operator()
(const SphericalKernel::Circle_3 &c,
const SphericalKernel::Circular_arc_point_3 &p1,
const SphericalKernel::Circular_arc_point_3 &p2);}
const SphericalKernel::Circular_arc_point_3 &p,
const SphericalKernel::Circular_arc_point_3 &q);}
{Constructs the circular arc supported by \ccc{c}, whose source and target
are respectively \ccc{p1} and \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{c}. \ccc{p1} and \ccc{p2}
are different.}}
are respectively \ccc{p} and \ccc{q}.
\ccPrecond{\ccc{p} and \ccc{q} lie on \ccc{c} and they are different.}}
The circular arc constructed from a circle, a source, and a target, is
defined as the set of points of the circle that lie between the source
@ -138,6 +148,20 @@ In this definition, we say that a plane is \textit{positive} if its
equation is of the form $ax+by+cz+d=0$ with $(a,b,c)>(0,0,0)$
(i.e. $(a>0) || (a==0) \&\& (b>0) || (a==0)\&\&(b==0)\&\&(c>0)$).
\ccConstructor{SphericalKernel::Circular_arc_3 operator()
(const SphericalKernel::Point_3 &p,
const SphericalKernel::Point_3 &q,
const SphericalKernel::Point_3 &r);}
{Constructs an arc that is supported by the circle of type
\ccc{SphericalKernel::Circle_3} passing through the points \ccc{p},
\ccc{q} and \ccc{r}. The source and target are respectively \ccc{p}
and \ccc{r}, when traversing the supporting circle in the
counterclockwise direction in the \textit{positive} plane containing
the circle.
Note that, depending on the orientation of the point triple
\ccc{(p,q,r)}, \ccc{q} may not lie on the arc.
\ccPrecond{\ccc{p}, \ccc{q}, and \ccc{r} are not collinear.}}
\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{SphericalKernel::ConstructCircularMinVertex_3}

View File

@ -14,36 +14,3 @@ In addition, an object \ccVar\ of this type must provide:
{Returns the sphere having the supporting circle of \ccc{a} as diameter.}
\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{SphericalKernel::ConstructSupportingPlane_3}
\ccCreationVariable{fo}
An object \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Plane_3
operator()(const SphericalKernel::Circular_arc_3 & c);}
{Returns the plane containing the arc.}
\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{SphericalKernel::ConstructSupportingLine_3}
\ccCreationVariable{fo}
An object \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Line_3
operator()(const SphericalKernel::Line_arc_3 & l);}
{Returns the line containing the segment.}
\end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{SphericalKernel::ConstructSupportingCircle_3}
\ccCreationVariable{fo}
An object \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Circle_3
operator()(const SphericalKernel::Circular_arc_3 & c);}
{Returns the circle containing the arc.}
\end{ccRefFunctionObjectConcept}

View File

@ -12,38 +12,38 @@
\ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo
\ccConstructor{Line_arc_3(const SphericalKernel::Line_3 &l,
const SphericalKernel::Circular_arc_point_3 &p1,
const SphericalKernel::Circular_arc_point_3 &p2)}
\ccConstructor{Line_arc_3(const Line_3<SphericalKernel> &l,
const Circular_arc_point_3<SphericalKernel> &p1,
const Circular_arc_point_3<SphericalKernel> &p2)}
{Construct the line segment supported by \ccc{l}, whose source
is \ccc{p1}, and whose target is \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{l}.
\ccc{p1} and \ccc{p2} are different.}}
\ccConstructor{Line_arc_3(const SphericalKernel::Line_3 &l,
const SphericalKernel::Point_3 &p1,
const SphericalKernel::Point_3 &p2)}
\ccConstructor{Line_arc_3(const Line_3<SphericalKernel> &l,
const Point_3<SphericalKernel> &p1,
const Point_3<SphericalKernel> &p2)}
{Same.}
\ccConstructor{Line_arc_3(const SphericalKernel::Segment_3 &s)}
\ccConstructor{Line_arc_3(const Segment_3<SphericalKernel> &s)}
{}
\ccAccessFunctions
\ccThree{SphericalKernel::Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThree{Circular_arc_point_3<SphericalKernel>}{ca.is_x_monotone()}{}
\ccThreeToTwo
\ccMethod{SphericalKernel::Line_3 supporting_line();}{}
\ccMethod{Line_3<SphericalKernel> supporting_line();}{}
\ccMethod{SphericalKernel::Circular_arc_point_3 source();}{}
\ccMethod{Circular_arc_point_3<SphericalKernel> source();}{}
\ccGlue
\ccMethod{SphericalKernel::Circular_arc_point_3 target();}{}
\ccMethod{Circular_arc_point_3<SphericalKernel> target();}{}
\ccMethod{SphericalKernel::Circular_arc_point_3 min();}
\ccMethod{Circular_arc_point_3<SphericalKernel> min();}
{Constructs the minimum vertex according to the lexicographic ordering
of coordinates.}
\ccGlue
\ccMethod{SphericalKernel::Circular_arc_point_3 max();}
\ccMethod{Circular_arc_point_3<SphericalKernel> max();}
{Same for the maximum vertex.}
\ccQueryFunctions