construct interior vertex

This commit is contained in:
Ophir Setter 2008-08-28 07:43:34 +00:00
parent 8bd571a638
commit f88aacb40a
7 changed files with 329 additions and 0 deletions

1
.gitattributes vendored
View File

@ -1327,6 +1327,7 @@ Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Compare_y_
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Compare_y_at_x_right_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Compare_y_near_boundary_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Construct_arc_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Construct_interior_vertex_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Construct_max_vertex_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Construct_min_vertex_2.tex -text
Curved_kernel_via_analysis_2/doc_tex/Curved_kernel_via_analysis_2_ref/Construct_point_2.tex -text

View File

@ -0,0 +1,194 @@
% +------------------------------------------------------------------------+
% | Reference manual page: Construct_interior_vertex_2.tex
% +------------------------------------------------------------------------+
% | 27.03.2008 Author
% | Package: Curved_kernel_via_analysis_2
% |
\RCSdef{\RCSConstructmaxvertexRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
\RCSdefDate{\RCSConstructmaxvertexDate}{$Date: 2007-09-07 17:29:10 +0200 (Fri, 07 Sep 2007) $}
% |
\ccRefPageBegin
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+
\begin{ccRefFunctionObjectClass}[CGALi::Curved_kernel_via_analysis_2_Functors::]{Construct_interior_vertex_2} %% add template arg's if necessary
\ccRefLabel{Construct_interior_vertex_2}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
%The function object class \ccRefName\ does this and that.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccInclude)
\ccInclude{CGAL/Curved_kernel_via_analysis_2/Curved_kernel_via_analysis_2_functors.h}
%END-AUTO(\ccInclude)
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)
Functor constructing an interior point of on an arc.
%END-AUTO(\ccDefinition)
\ccParameters
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccParameters)
template$<$ \\
class \ccc{CurvedKernelViaAnalysis_2}$>$ \\
class \ccc{Construct_interior_vertex_2};
%END-AUTO(\ccParameters)
\ccInheritsFrom
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccInheritsFrom)
\ccc{Curved_kernel_via_analysis_2_functor_base<CurvedKernelViaAnalysis_2>}
%END-AUTO(\ccInheritsFrom)
\ccIsModel
\ccTypes
%\ccCreation
%\ccCreationVariable{a} %% choose variable name
%% \ccIncludeExampleCode{Curved_kernel_via_analysis_2/Construct_max_vertex_2.C}
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
\ccNestedType{Curved_kernel_via_analysis_2}
{
this instance' first template parameter
}
\ccGlue
\ccNestedType{Base}
{
the base type
}
\ccGlue
\ccNestedType{Curve_2}
{
the curve type
}
\ccGlue
\ccNestedType{Point_2}
{
the point type
}
\ccGlue
\ccNestedType{Arc_2}
{
the arc type
}
\ccGlue
\ccNestedType{Curve_analysis_2}
{
type of curve analaysis
}
\ccGlue
\ccNestedType{X_coordinate_1}
{
the x-coordinate type
}
\ccGlue
\ccNestedType{result_type}
{
the result type
}
\ccGlue
\ccNestedType{Curve_kernel_2}
{
[inherited] \\
type of curve kernel
}
\ccGlue
%END-AUTO(\ccTypes)
\ccHeading{Variables}
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccHeading{Variables})
\ccVariable{Curved_kernel_via_analysis_2* _m_curved_kernel;}
{
[protected, inherited] \\
stores pointer to \ccc{Curved_kernel_via_analysis_2}
}
\ccGlue
%END-AUTO(\ccHeading{Variables})
\ccCreation
\ccCreationVariable{a} %% choose variable name for \ccMethod below
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccCreation)
\ccConstructor{Construct_interior_vertex_2(Curved_kernel_via_analysis_2 * kernel);}
{
Standard constructor.
}
\ccGlue
\begin{description}
\item[Parameters:]
\begin{description}
\item[kernel]The kernel \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
\ccOperations
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)
\ccMethod{result_type operator()(const Arc_2& cv) const;}
{
Get an interior point on the arc.
}
\ccGlue
\begin{description}
\item[Parameters:]
\begin{description}
\item[arc]The arc. \end{description}
\end{description}
\begin{description}
\item[Returns:]A point on the interior of the arc.\end{description}
\ccGlue
\ccMethod{Curved_kernel_via_analysis_2* _ckva() const;}
{
[protected, inherited] \\
Return pointer to curved kernel.
}
\ccGlue
\begin{description}
\item[Returns:]Pointer to stored kernel \end{description}
\ccGlue
%END-AUTO(\ccOperations)
\end{ccRefFunctionObjectClass}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
\ccRefPageEnd
% EOF
% +------------------------------------------------------------------------+

View File

@ -269,6 +269,12 @@ functor
functor
}
\ccGlue
\ccNestedType{Construct_interior_vertex_2}
{
[inherited] \\
functor
}
\ccGlue
\ccNestedType{Compare_x_near_boundary_2}
{
[inherited] \\
@ -535,6 +541,12 @@ returns instance of functor
returns instance of functor
}
\ccGlue
\ccMethod{Construct_interior_vertex_2 construct_max_vertex_2_object() const;}
{
[inherited] \\
returns instance of functor
}
\ccGlue
\ccMethod{Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const;}
{
[inherited] \\

View File

@ -119,6 +119,11 @@ functor
functor
}
\ccGlue
\ccNestedType{Construct_interior_vertex_2}
{
functor
}
\ccGlue
\ccNestedType{Compare_x_near_boundary_2}
{
functor
@ -245,6 +250,11 @@ returns instance of functor
returns instance of functor
}
\ccGlue
\ccMethod{Construct_max_vertex_2 construct_interior_vertex_2_object() const;}
{
returns instance of functor
}
\ccGlue
\ccMethod{Compare_x_near_boundary_2 compare_x_near_boundary_2_object() const;}
{
returns instance of functor

View File

@ -37,6 +37,7 @@ kernel.
\ccRefIdfierPage{Parameter_space_in_y_2}\\
\ccRefIdfierPage{Construct_min_vertex_2}\\
\ccRefIdfierPage{Construct_max_vertex_2}\\
\ccRefIdfierPage{Construct_interior_vertex_2}\\
\ccRefIdfierPage{Compare_x_near_boundary_2}\\
\ccRefIdfierPage{Compare_y_near_boundary_2}\\
\ccRefIdfierPage{Compare_y_at_x_2}\\

View File

@ -25,6 +25,7 @@
\input{Curved_kernel_via_analysis_2_ref/Parameter_space_in_y_2}
\input{Curved_kernel_via_analysis_2_ref/Construct_min_vertex_2}
\input{Curved_kernel_via_analysis_2_ref/Construct_max_vertex_2}
\input{Curved_kernel_via_analysis_2_ref/Construct_interior_vertex_2}
\input{Curved_kernel_via_analysis_2_ref/Compare_x_near_boundary_2}
\input{Curved_kernel_via_analysis_2_ref/Compare_y_near_boundary_2}
\input{Curved_kernel_via_analysis_2_ref/Compare_y_at_x_2}

View File

@ -707,6 +707,114 @@ public:
}
};
/*!\brief
* Functor constructing an interior point of on an arc.
*/
template < class CurvedKernelViaAnalysis_2 >
class Construct_interior_vertex_2 : public
Curved_kernel_via_analysis_2_functor_base< CurvedKernelViaAnalysis_2 > {
public:
//! this instance' first template parameter
typedef CurvedKernelViaAnalysis_2 Curved_kernel_via_analysis_2;
//! the base type
typedef
Curved_kernel_via_analysis_2_functor_base< Curved_kernel_via_analysis_2 >
Base;
CGAL_CKvA_2_GRAB_BASE_FUNCTOR_TYPES;
//! the result type
typedef Point_2 result_type;
/*!\brief
* Standard constructor
*
* \param kernel The kernel
*/
Construct_interior_vertex_2(Curved_kernel_via_analysis_2 *kernel) :
Base(kernel) {
}
/*!\brief
* Get an interior point on the arc.
*
* \param arc The arc.
* \return A point on the interior of the arc.
*/
result_type operator()(const Arc_2& arc) const {
typedef typename Curved_kernel_via_analysis_2::Curve_2 Curve_analysis_2;
typedef typename Curved_kernel_via_analysis_2::Curve_kernel_2
Algebraic_curve_kernel_2;
typedef typename Algebraic_curve_kernel_2::Boundary Boundary;
typedef typename Algebraic_curve_kernel_2::X_coordinate_1 X_coordinate_1;
typedef CGAL::Polynomial<Boundary> Poly_rat_1;
typedef CGAL::Polynomial< Poly_rat_1 > Poly_rat_2;
typedef CGAL::Polynomial_traits_d< Poly_rat_1 > PT_rat_1;
typedef CGAL::Polynomial_traits_d< Poly_rat_2 > PT_rat_2;
typedef CGAL::Fraction_traits< Poly_rat_2 > FT_2;
if (!arc.is_vertical())
{
Boundary x_coord = arc.boundary_in_x_range_interior();
int arcno = arc.arcno();
const Curve_analysis_2& ca = arc.curve();
Point_2 p = Curved_kernel_via_analysis_2::instance().
construct_point_on_arc_2_object()
(X_coordinate_1(x_coord), ca, arcno, arc);
return p;
}
Boundary y_coord = 0;
if (arc.is_finite(ARR_MIN_END))
{
if (arc.is_finite(ARR_MAX_END))
{
// We need torefine the interval because there is a chance that
// the low of the upper point is below the high of the lower point.
y_coord = Curved_kernel_via_analysis_2::instance().kernel().
boundary_between_y_2_object() (arc.curve_end(ARR_MIN_END).xy(),
arc.curve_end(ARR_MAX_END).xy());
}
else
{
y_coord = Curved_kernel_via_analysis_2::instance().kernel().
upper_boundary_y_2_object() (arc.curve_end(ARR_MIN_END).xy());
}
}
else
{
if (arc.is_finite(ARR_MAX_END))
{
y_coord = Curved_kernel_via_analysis_2::instance().kernel().
lower_boundary_y_2_object()(arc.curve_end(ARR_MAX_END).xy());
}
}
/*! \todo Try to remove this polynomial stuff */
typename PT_rat_1::Construct_polynomial cp1;
Poly_rat_2 poly2 = typename PT_rat_2::Construct_polynomial()
(cp1(-y_coord), cp1(Boundary(1)));
typename FT_2::Denominator_type dummy;
typename FT_2::Numerator_type curve_poly;
typename FT_2::Decompose() (poly2, curve_poly, dummy);
Curve_analysis_2 curve(curve_poly);
Point_2 p = Curved_kernel_via_analysis_2::instance().
construct_point_on_arc_2_object()(arc.x(), curve, 0, arc);
return p;
}
};
/*!\brief
* Functor that compares x-coordinates of two interior points
*/
@ -2384,6 +2492,8 @@ public:
construct_min_vertex_2_object);
CGAL_CKvA_2_functor_cons(Construct_max_vertex_2,
construct_max_vertex_2_object);
CGAL_CKvA_2_functor_cons(Construct_interior_vertex_2,
construct_interior_vertex_2_object);
CGAL_CKvA_2_functor_pred(Compare_x_near_boundary_2,
compare_x_near_boundary_2_object);
CGAL_CKvA_2_functor_pred(Compare_y_near_boundary_2,