applied fixed from Ron

This commit is contained in:
Eric Berberich 2008-04-09 08:54:13 +00:00
parent e9bc3893a0
commit e4ce8764c8
2 changed files with 52 additions and 40 deletions

View File

@ -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

View File

@ -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}