mirror of https://github.com/CGAL/cgal
applied fixed from Ron
This commit is contained in:
parent
e9bc3893a0
commit
e4ce8764c8
|
|
@ -10,20 +10,22 @@ the status line respectively.
|
|||
With the help of the concept's methods one is able
|
||||
to compute the local topology of the curve
|
||||
at the given vertical line $x = x_0$ for some finite $x_0$.
|
||||
A status line an $x_0$ smaller than any $x$-coordinate of a curve's
|
||||
status lines captures the topology of the curve when approaching $x = -\infty$.
|
||||
An analogue arguments holds for $x_0$ larger than any $x$-coordinate
|
||||
A status line at any $x_0$ smaller than any $x$-coordinate of a curve's
|
||||
$x$-critical points captures the topology of the curve when
|
||||
approaching $x = -\infty$.
|
||||
An analogue argument holds for $x_0$ larger than any $x$-coordinate
|
||||
of a curve's status lines and $x = +\infty$.
|
||||
%at the given vertical line.
|
||||
%Note that vertical lines at $x = \pm\infty$ are not allowed, since different
|
||||
%events (curve ends going to infinity with different non-horizontal asymptotes)
|
||||
%would have equal $y$-coordinate ($\pm\infty$), which confuses more than it
|
||||
%helps.
|
||||
Note in addition that curve ends approaching the vertical asymptote
|
||||
introduce an event (depending on whether approaching $+\infty$ or $-\infty$ -
|
||||
but the event with coordinates $(x,-\infty)$, resp. $(x,+\infty)$, occur
|
||||
only once, if they occur, and they imply not to be associated with
|
||||
an instance of \ccc{Algebraic_real_2}.
|
||||
|
||||
%Note in addition that curve ends approaching the vertical asymptote
|
||||
%introduce an event (depending on whether approaching $+\infty$ or $-\infty$ -
|
||||
%but the event with coordinates $(x,-\infty)$, resp. $(x,+\infty)$, occur
|
||||
%only once, if they occur, and they imply not to be associated with
|
||||
%an instance of \ccc{Algebraic_real_2}.
|
||||
|
||||
\ccTypes
|
||||
|
||||
|
|
@ -35,7 +37,7 @@ an instance of \ccc{Algebraic_real_2}.
|
|||
\ccNestedType{Algebraic_real_2}{A model of the concept
|
||||
\ccc{AlgebraicKernel_d_2::Algebraic_real_2}.}
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
\ccCreationVariable{sl}
|
||||
\ccAccessFunctions
|
||||
|
||||
\ccMethod{Algebraic_real_1 x();}{
|
||||
|
|
@ -81,12 +83,12 @@ an instance of \ccc{Algebraic_real_2}.
|
|||
from left and right. A vertical line being component of the curve is ignored.
|
||||
}
|
||||
|
||||
\ccMethod{bool has_f_fy_intersection();}{
|
||||
\ccMethod{bool has_x_critical_point();}{
|
||||
returns \ccc{true} if the curve $f$ has an intersection with $f_y$ at $x$
|
||||
}
|
||||
|
||||
\ccMethod{bool is_event();}{
|
||||
returns \ccc{true} if one of \ccc{has_f_fy_intersection()} or
|
||||
returns \ccc{true} if one of \ccc{has_x_critical_point()} or
|
||||
\ccc{covers_line()} evaluates to \ccc{true}.
|
||||
}
|
||||
|
||||
|
|
@ -100,7 +102,7 @@ of events must be finite.}
|
|||
\ccDefinition
|
||||
|
||||
The \ccc{AlgebraicKernel_d_2::CurveAnalysis_2}
|
||||
concept is meant to provide tools to analyse a single
|
||||
concept is meant to provide tools to analyze a single
|
||||
curve. An analysis is meant to describe the curve's interesting points and how
|
||||
they are connected. The analysis searches for {\it events}. Events only
|
||||
occur at a finite number of $x$-coordinates. Each such coordinate defines
|
||||
|
|
@ -108,8 +110,11 @@ a \ccc{StatusLine_1} of an event. These coordinates also define open
|
|||
{\it intervals} on the $x$-axis. Different
|
||||
\ccc{StatusLine_1} at values within one
|
||||
such interval only differ in the values of the \ccc{Algebraic_real_2} entries.
|
||||
Topological information are equal for all $x$-coordinate inside such an
|
||||
open interval.
|
||||
Topological information is equal for all $x$-coordinate inside such an
|
||||
open interval. If there a $n$ $x$-coordinate that have an event point, we
|
||||
see at most $2n+1$ topologically different status lines, that is, $n$ for
|
||||
the the events, and $n+1$ for the intervals between events (and before the
|
||||
first, and after the last event).
|
||||
|
||||
\ccRefines{
|
||||
\ccc{DefaultConstructible, CopyConstructible, Assignable}
|
||||
|
|
@ -132,7 +137,7 @@ open interval.
|
|||
\ccc{CurveAnalysis_2::StatusLine_1}.}
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{fo}
|
||||
\ccCreationVariable{ca}
|
||||
|
||||
\ccConstructor{CurveAnalysis_2(Polynomial_2 p);}
|
||||
{constructs an analysis for the curve defined by p.
|
||||
|
|
@ -166,11 +171,13 @@ open interval.
|
|||
|
||||
\ccMethod{Status_line_1 status_line_at_event(size_type i);}{
|
||||
returns an instance of \ccc{StatusLine_1} at the $i$-th event
|
||||
\ccPrecond{$0 \leq i < $ \ccc{number_of_status_lines_with_event()}}
|
||||
}
|
||||
|
||||
\ccMethod{Status_line_1 status_line_of_interval(size_type i);}{
|
||||
returns an instance of \ccc{StatusLine_1} of the $i$-th interval
|
||||
between $x$-events.
|
||||
\ccPrecond{$0 \leq i \leq $ \ccc{number_of_status_lines_with_event()}}
|
||||
}
|
||||
|
||||
\ccMethod{Status_line_1 status_line_for_x(Algebraic_real_1 x,
|
||||
|
|
@ -216,7 +223,7 @@ i.e., also to access $y$-coordinates at given $x$.
|
|||
}
|
||||
|
||||
In our $y$-per-$x$-view we imagine the parameter space to be slightly
|
||||
``heigher'' than ``width'' and so we distinguish three aympototic behaviours
|
||||
``heigher'' than ``width'' and so we distinguish three aymptotic behaviors
|
||||
of arcs. Horizontal, vertical, and none of them. This member covers
|
||||
all non-vertical asymptotic values. We do not introduce a special one
|
||||
for vertical asympototes as the respective $x$-coordinates are already defined
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ not allowed.
|
|||
\ccc{AlgebraicKernel_d_2::AlgebraicReal_2}.}
|
||||
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
\ccCreationVariable{sl}
|
||||
\ccAccessFunctions
|
||||
|
||||
\ccMethod{Algebraic_real_1 x();}{
|
||||
|
|
@ -42,8 +42,9 @@ not allowed.
|
|||
returns the $y$-position of the $k$-th event of the $c$-th
|
||||
(0 or 1) curve in the sequence of events. Note that each event
|
||||
is formed by the first, the second, or both curves.
|
||||
\ccPrecond{$0 \leq k < \mbox{number of arcs defined for the curve at x()}$}
|
||||
The precondition can be checked by queried first the corresponding status
|
||||
\ccPrecond{
|
||||
$0 \leq k < $ \ccc{number_of_events()}}
|
||||
The precondition can be checked by quering first the corresponding status
|
||||
line of the curve's analysis.
|
||||
}
|
||||
|
||||
|
|
@ -51,33 +52,36 @@ not allowed.
|
|||
returns the multiplicity of intersection defined at event with position $j$.
|
||||
May return $0$ in case multiplicity is unknown.
|
||||
\ccPrecond{There is an intersection of both curves at $j$-th event.}
|
||||
\ccPrecond{$0 \leq j < \mbox{num\_events()}$}
|
||||
\ccPrecond{$0 \leq j < $\ccc{number_of_events()}}
|
||||
}
|
||||
|
||||
\ccMethod{std::pair< size_type, size_type > curves_at_event(size_type j);}{
|
||||
returns a pair of \ccc{size_type} indicating whether event $j$ is formed by
|
||||
which arc numbers of the first and the second curve, or $-1$, if the
|
||||
corresponding curve is not involved.
|
||||
\ccPrecond{$0 \leq j < \mbox{num\_events()}$}
|
||||
\ccPrecond{$0 \leq j < $\ccc{number\_of_events()}}
|
||||
}
|
||||
|
||||
Note that this interface mainly rewrites $\{f,g,x\}^n$ in a different way -
|
||||
using \ccc{size_type}. Actually the CPVL has to compute this sequence, but for
|
||||
the interface it is nicer to have it already here to avoid conversion objects
|
||||
(introducing additional constructor calls, cache-misses, lookup and so on) in
|
||||
the next layer on top (CK). Obviously, the \ccc{size_type}s
|
||||
can be computed in a generic
|
||||
way from a sequence, so that it makes sense to offer a default implementation
|
||||
providing such conversion. There is no need to document this fact on the
|
||||
conceptual view.
|
||||
%Note that this interface mainly rewrites $\{f,g,x\}^n$ in a different way -
|
||||
%using \ccc{size_type}. Actually the CPVL has to compute this sequence, but for
|
||||
%the interface it is nicer to have it already here to avoid conversion objects
|
||||
%(introducing additional constructor calls, cache-misses, lookup and so on) in
|
||||
%the next layer on top (CK). Obviously, the \ccc{size_type}s
|
||||
%can be computed in a generic
|
||||
%way from a sequence, so that it makes sense to offer a default implementation
|
||||
%providing such conversion. There is no need to document this fact on the
|
||||
%conceptual view.
|
||||
|
||||
\ccMethod{bool is_event();}{
|
||||
returns \ccc{true} if a curve has an event or in case there is an
|
||||
intersection of both curves.
|
||||
returns \ccc{true} if the status line contains an event point. Namely, if
|
||||
one of the curves has an event, or if the two curves intersect, at a point
|
||||
whose $x$-coordinate is sl.x().
|
||||
}
|
||||
|
||||
\ccMethod{bool is_intersection();}{
|
||||
returns \ccc{true} if there is an intersection of both curves.
|
||||
returns \ccc{true} if the status line contains an intersection point.
|
||||
Namely, if the two curves intersect at a point whose $x$-coordinate
|
||||
is sl.x().
|
||||
}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
@ -98,7 +102,7 @@ These coordinates also define open {\it intervals}
|
|||
on the $x$-axis. \ccc{StatusLine_1}
|
||||
at values in between one such interval
|
||||
differ only in the values of the \ccc{Algebraic_real_2} entries. Topological
|
||||
information are equal.
|
||||
information is equal.
|
||||
|
||||
\ccRefines{
|
||||
\ccc{DefaultConstructible, CopyConstructible, Assignable}
|
||||
|
|
@ -121,7 +125,7 @@ information are equal.
|
|||
\ccc{CurvePairAnalysis::CurveAnalysis_2}.}
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{fo}
|
||||
\ccCreationVariable{cpa}
|
||||
|
||||
\ccConstructor{CurvePairAnalysis_2(Curve_analysis_2 ca1, Curve_analysis_2 ca2);}
|
||||
{constructs an analysis for the curve-pair defined by analysis given by
|
||||
|
|
@ -154,25 +158,26 @@ coprime.}
|
|||
}
|
||||
|
||||
\ccMethod{size_type number_of_status_lines_with_event();}{
|
||||
returns number of status lines that encode an event
|
||||
returns number of status lines that contain an event point.
|
||||
}
|
||||
|
||||
|
||||
\ccMethod{size_type event_of_curve_analysis(size_type i, bool c);}{
|
||||
Given the $i$-th event of the curve pair
|
||||
this method returns the id of the event of the corresponding curve
|
||||
analysis $c$ (0 or 1), or $-1$, if the curve has no event at this coordinate.
|
||||
analysis $c$ (0 or 1), or $-1$, if the curve has no event
|
||||
at this coordinate.
|
||||
}
|
||||
|
||||
\ccMethod{Status_line status_line_at_event(size_type i);}{
|
||||
returns an instance of \ccc{StatusLine_1} at the $i$-th event
|
||||
\ccPrecond{$0 \leq i < \mbox{num\_status\_lines\_with\_event()}$}
|
||||
\ccPrecond{$0 \leq i < $\ccc{num\_status\_lines\_with\_event()}}
|
||||
}
|
||||
|
||||
\ccMethod{Status_line status_line_of_interval(size_type i);}{
|
||||
returns an instance of \ccc{StatusLine_1} of the $i$-th interval
|
||||
between $x$-events.
|
||||
\ccPrecond{$0 \leq i leq \mbox{num\_status\_lines\_with\_event()}$}
|
||||
\ccPrecond{$0 \leq i \leq $\ccc{num\_status\_lines\_with\_event()}}
|
||||
}
|
||||
|
||||
\ccMethod{Status_line status_line_for_x(Algebraic_real_1 x,
|
||||
|
|
@ -180,7 +185,7 @@ coprime.}
|
|||
returns status\_line\_at\_event(i), if $x$ hits $i$-th event, otherwise
|
||||
returns status\_line\_of\_interval(i), where $i$ is the id of the interval
|
||||
$x$ lies in.
|
||||
If $pertub$ is CGAL::NEGATIVE (CGAL::POSITIVE) and $x$ states
|
||||
If $perturb$ is CGAL::NEGATIVE (CGAL::POSITIVE) and $x$ states
|
||||
an event, then status\_line\_of\_interval(i)
|
||||
(status\_line\_of\_interval(i+1)) is returned.
|
||||
\ccPrecond{$x$ is finite}
|
||||
|
|
|
|||
Loading…
Reference in New Issue