- 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()}{} \ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo \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.} {Constructs an arc from a full circle.}
\ccConstructor{Circular_arc_3(const SphericalKernel::Circle_3 &c, \ccConstructor{Circular_arc_3(const Circle_3<SphericalKernel> &c,
const SphericalKernel::Circular_arc_point_3 &p1, const Circular_arc_point_3<SphericalKernel> &p1,
const SphericalKernel::Circular_arc_point_3 &p2)} const Circular_arc_point_3<SphericalKernel> &p2)}
{Constructs the circular arc supported by \ccc{c}, whose source and target {Constructs the circular arc supported by \ccc{c}, whose source and target
are respectively \ccc{p1} and \ccc{p2}. are respectively \ccc{p1} and \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{c}. \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)$ 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)$). (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 \ccAccessFunctions
\ccThree{SphericalKernel::Circular_arc_point_3}{ca.is_x_monotone()}{} \ccThree{SphericalKernel::Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo \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 \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 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 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()}{} \ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo \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)}{} \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: A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Plane_3 operator() \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.} {Constructs a plane from an equation.}
\ccSeeAlso \ccSeeAlso
@ -27,8 +31,8 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide: A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Sphere_3 operator() \ccMemberFunction{SphericalKernel::Sphere_3 operator()
(SphericalKernel::Polynomial_2_3);} (const SphericalKernel::Polynomial_2_3 &p);}
{Constructs a circle from an equation.} {Constructs a sphere from an equation.}
\ccSeeAlso \ccSeeAlso
@ -45,7 +49,11 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide: A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Line_3 operator() \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.} {Constructs a line from an equation.}
\ccSeeAlso \ccSeeAlso
@ -59,7 +67,11 @@ A model \ccVar\ of this type must provide:
A model \ccVar\ of this type must provide: A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Circle_3 operator() \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.} {Constructs a circle from an equation.}
\ccSeeAlso \ccSeeAlso
@ -88,12 +100,11 @@ A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Line_arc_3 operator() \ccMemberFunction{SphericalKernel::Line_arc_3 operator()
(const SphericalKernel::Line_3 &l, (const SphericalKernel::Line_3 &l,
const SphericalKernel::Circular_arc_point_3 &p1, const SphericalKernel::Circular_arc_point_3 &p,
const SphericalKernel::Circular_arc_point_3 &p2);} const SphericalKernel::Circular_arc_point_3 &q);}
{Constructs the line segment supported by \ccc{l}, whose source {Constructs the line segment supported by \ccc{l}, whose source
is \ccc{p1} and whose target is \ccc{p2}. is \ccc{p} and whose target is \ccc{q}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{l}. \ccPrecond{\ccc{p} and \ccc{q} lie on \ccc{l} and are different.}}
\ccc{p1} and \ccc{p2} are different.}}
%\ccMemberFunction{SphericalKernel::Line_arc_3 operator() %\ccMemberFunction{SphericalKernel::Line_arc_3 operator()
% (const SphericalKernel::Line_3 &l, % (const SphericalKernel::Line_3 &l,
@ -106,8 +117,8 @@ is \ccc{p1} and whose target is \ccc{p2}.
{} {}
\ccMemberFunction{SphericalKernel::Line_arc_3 operator() \ccMemberFunction{SphericalKernel::Line_arc_3 operator()
(const SphericalKernel::Point_3 &p1, (const SphericalKernel::Point_3 &p,
const SphericalKernel::Point_3 &p2);} const SphericalKernel::Point_3 &q);}
{} {}
\end{ccRefFunctionObjectConcept} \end{ccRefFunctionObjectConcept}
@ -122,12 +133,11 @@ A model \ccVar\ of this type must provide:
\ccMemberFunction{SphericalKernel::Circular_arc_3 operator() \ccMemberFunction{SphericalKernel::Circular_arc_3 operator()
(const SphericalKernel::Circle_3 &c, (const SphericalKernel::Circle_3 &c,
const SphericalKernel::Circular_arc_point_3 &p1, const SphericalKernel::Circular_arc_point_3 &p,
const SphericalKernel::Circular_arc_point_3 &p2);} const SphericalKernel::Circular_arc_point_3 &q);}
{Constructs the circular arc supported by \ccc{c}, whose source and target {Constructs the circular arc supported by \ccc{c}, whose source and target
are respectively \ccc{p1} and \ccc{p2}. are respectively \ccc{p} and \ccc{q}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{c}. \ccc{p1} and \ccc{p2} \ccPrecond{\ccc{p} and \ccc{q} lie on \ccc{c} and they are different.}}
are different.}}
The circular arc constructed from a circle, a source, and a target, is 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 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)$ 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)$). (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} \end{ccRefFunctionObjectConcept}
\begin{ccRefFunctionObjectConcept}{SphericalKernel::ConstructCircularMinVertex_3} \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.} {Returns the sphere having the supporting circle of \ccc{a} as diameter.}
\end{ccRefFunctionObjectConcept} \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()}{} \ccThree{Circular_arc_point_3}{ca.is_x_monotone()}{}
\ccThreeToTwo \ccThreeToTwo
\ccConstructor{Line_arc_3(const SphericalKernel::Line_3 &l, \ccConstructor{Line_arc_3(const Line_3<SphericalKernel> &l,
const SphericalKernel::Circular_arc_point_3 &p1, const Circular_arc_point_3<SphericalKernel> &p1,
const SphericalKernel::Circular_arc_point_3 &p2)} const Circular_arc_point_3<SphericalKernel> &p2)}
{Construct the line segment supported by \ccc{l}, whose source {Construct the line segment supported by \ccc{l}, whose source
is \ccc{p1}, and whose target is \ccc{p2}. is \ccc{p1}, and whose target is \ccc{p2}.
\ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{l}. \ccPrecond{\ccc{p1} and \ccc{p2} lie on \ccc{l}.
\ccc{p1} and \ccc{p2} are different.}} \ccc{p1} and \ccc{p2} are different.}}
\ccConstructor{Line_arc_3(const SphericalKernel::Line_3 &l, \ccConstructor{Line_arc_3(const Line_3<SphericalKernel> &l,
const SphericalKernel::Point_3 &p1, const Point_3<SphericalKernel> &p1,
const SphericalKernel::Point_3 &p2)} const Point_3<SphericalKernel> &p2)}
{Same.} {Same.}
\ccConstructor{Line_arc_3(const SphericalKernel::Segment_3 &s)} \ccConstructor{Line_arc_3(const Segment_3<SphericalKernel> &s)}
{} {}
\ccAccessFunctions \ccAccessFunctions
\ccThree{SphericalKernel::Circular_arc_point_3}{ca.is_x_monotone()}{} \ccThree{Circular_arc_point_3<SphericalKernel>}{ca.is_x_monotone()}{}
\ccThreeToTwo \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 \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 {Constructs the minimum vertex according to the lexicographic ordering
of coordinates.} of coordinates.}
\ccGlue \ccGlue
\ccMethod{SphericalKernel::Circular_arc_point_3 max();} \ccMethod{Circular_arc_point_3<SphericalKernel> max();}
{Same for the maximum vertex.} {Same for the maximum vertex.}
\ccQueryFunctions \ccQueryFunctions