Initial version of the documentation.

This commit is contained in:
Ron Wein 2006-08-03 09:41:46 +00:00
parent 38b7c42bd6
commit 795a405ef9
13 changed files with 1199 additions and 81 deletions

2
.gitattributes vendored
View File

@ -437,6 +437,8 @@ Developers_manual/doc_tex/Developers_manual/fig/reference_counting.pdf -text svn
Developers_manual/doc_tex/Developers_manual/fig/use_real.eps -text svneol=unset#application/postscript
Developers_manual/doc_tex/Developers_manual/fig/use_real.gif -text svneol=unset#image/gif
Developers_manual/doc_tex/Developers_manual/fig/use_real.pdf -text svneol=unset#application/pdf
Envelope_2/doc_tex/Envelope_2/fig/min_diag.eps -text svneol=unset#application/postscript
Envelope_2/doc_tex/Envelope_2/fig/min_diag.fig -text svneol=unset#application/octet-stream
Envelope_2/examples/Envelope_2/ex_envelope_segments.cpp -text
Envelope_3/doc_tex/Envelope_3/fig/compare_over_curve.fig -text svneol=unset#application/octet-stream
Envelope_3/doc_tex/Envelope_3/fig/compare_over_curve.pstex -text svneol=unset#application/postscript

View File

@ -0,0 +1,13 @@
\begin{ccPkgDescription}{2D Envelopes\label{Pkg:Envelope2}}
\ccPkgHowToCiteCgal{cgal:w-e2-06}
\ccPkgSummary{
This package consits of functions that computes the lower (or upper)
envelope of a set of arbitrary curves in 2D. The output is
represented as an envelope diagram, namely a subdivision of the
$x$-axis into intervals, such that the identity of the curves that
induce the envelope on each interval is unique.}
\ccPkgDependsOn{\ccRef[2D Arrangements]{Pkg:Arrangement2}}
\ccPkgIntroducedInCGAL{3.3}
\ccPkgLicense{\ccLicenseQPL}
\end{ccPkgDescription}

View File

@ -0,0 +1,79 @@
A continuous curve $C$ in $\reals^2$ is called {\em $x$-monotone} if
every vertical line intersects it at a single point at most. For
example, the circle $x^2 + y^2 = 1$ is {\em not} $xy$-monotone as the
vertical line $x = 0$ intersects it at $(0, -1)$ and at $(0, 1)$;
however, it is possible to split the circle into an upper part and a
lower part, such that both these parts are $x$-monotone.
An $x$-monotone curve can be represented as a univariate function
$y = C(x)$, defined over some continuous range $R_C \subseteq \reals$.
Given a set $\calC = \{ C_1, C_2, \ldots, C_n \}$ of $x$-monotone
curves, their {\em lower envelope} is defined as the point-wise minimum of
all curves. Namely, the lower envelope of the set $\calC$ can be
defined as the following function:
\begin{eqnarray*}
\calL_{\calC} (x) = \min_{1 \leq k \leq n}{\overline{C}_k (x)} \ ,
\end{eqnarray*}
where we define $\overline{C}_k(x) = C_k(x)$ for $x \in R_{C_k}$,
and $\overline{C}_k(x) = \infty$ otherwise.
Similarly, the {\em upper envelope} of $\calC$ is the point-wise maximum of
the $x$-monotone curves in the set:
\begin{eqnarray*}
\calU_{\calC} (x) = \max_{1 \leq k \leq n}{\underline{C}_k (x)} \ ,
\end{eqnarray*}
where in this case $\underline{C}_k(x) = -\infty$ for $x \nin R_{C_k}$.
Given a set of $x$-monotone curves $\calC$, the {\em minimization
diagram} of $\calC$ is a subdivision of the $x$-axis into cells,
such that the identity of the curves that induce the lower envelope
over a specific cell of the subdivision (an edge or a vertex) is the
same. In non-degenerate situation, an edge --- which represents a
continuous interval on the $x$-axis --- is induced by a single
curve (or by no curves at all, if there are no $x$-monotone curves
defined over the interval), and a vertex is induced by a single curve
and corresponds to one of its endpoints, or by two curves and
corresponds to their intersection point.
The {\em maximization diagram} is symmetrically defined for upper envelopes.
In the rest of this chapter, we refer to both these diagrams as
{\em envelope diagrams}.
Lower and upper envelopes can be efficiently computed using a
divide-and-conquer approach. First note that the envelope diagram for
a single $x$-monotone curve $C_k$ is trivial to compute: we project
the boundary of its range of definition $R_{C_k}$ onto the $x$-axis
and label the features it induces accordingly. Given a set
$\hat{\calC}$ of (non necessarily $x$-monotone) curves in $\reals^2$,
we start by subdividing each curve into a finite number of weakly
$x$-monotone curves\footnote{To handle degenerate inputs, we consider
vertical segments as {\em weakly} $x$-monotone.}, obtaining the set
$\calC$. We continue by splitting the set into two disjoint subsets
$\calC_1$ and $\calC_2$, and we compute their envelope diagrams
recursively. We finally have to merge the diagrams, and we do this in
linear time by traversing both diagrams in parallel.
\begin{figure}[t]
\begin{ccTexOnly}
\begin{center}
\epsfig{figure=Envelope_2/fig/min_diag.eps,width=5in,silent=}
\end{center}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<p><center>
<img src="./fig/min_diag.gif" border=0 alt="The minimization diagram">
</center>
\end{ccHtmlOnly}
\caption{The lower envelope of eight line segments, labeled
$A, \ldots, H$. The minimization diagram is shown at the bottom, where
each diagram vertex points to the point associated with it, and the
labels of the segment that induce a diagram edge are displayed below
this edge. Note that there exists one edge that represents an overlap
and there are also a few edges that represent empty
intervals.\label{env2_fig:min_diag}}
\end{figure}
\section{Examples}
%=================
\ccIncludeExampleCode{../examples/Envelope_2/ex_envelope_segments.cpp}

View File

@ -0,0 +1,638 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: min_diag.fig
%%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5
%%CreationDate: Thu Aug 3 12:34:18 2006
%%For: wein@cgal (Ron Wein,,09-576985,)
%%BoundingBox: 0 0 347 248
%Magnification: 0.7000
%%EndComments
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/col-1 {0 setgray} bind def
/col0 {0.000 0.000 0.000 srgb} bind def
/col1 {0.000 0.000 1.000 srgb} bind def
/col2 {0.000 1.000 0.000 srgb} bind def
/col3 {0.000 1.000 1.000 srgb} bind def
/col4 {1.000 0.000 0.000 srgb} bind def
/col5 {1.000 0.000 1.000 srgb} bind def
/col6 {1.000 1.000 0.000 srgb} bind def
/col7 {1.000 1.000 1.000 srgb} bind def
/col8 {0.000 0.000 0.560 srgb} bind def
/col9 {0.000 0.000 0.690 srgb} bind def
/col10 {0.000 0.000 0.820 srgb} bind def
/col11 {0.530 0.810 1.000 srgb} bind def
/col12 {0.000 0.560 0.000 srgb} bind def
/col13 {0.000 0.690 0.000 srgb} bind def
/col14 {0.000 0.820 0.000 srgb} bind def
/col15 {0.000 0.560 0.560 srgb} bind def
/col16 {0.000 0.690 0.690 srgb} bind def
/col17 {0.000 0.820 0.820 srgb} bind def
/col18 {0.560 0.000 0.000 srgb} bind def
/col19 {0.690 0.000 0.000 srgb} bind def
/col20 {0.820 0.000 0.000 srgb} bind def
/col21 {0.560 0.000 0.560 srgb} bind def
/col22 {0.690 0.000 0.690 srgb} bind def
/col23 {0.820 0.000 0.820 srgb} bind def
/col24 {0.500 0.190 0.000 srgb} bind def
/col25 {0.630 0.250 0.000 srgb} bind def
/col26 {0.750 0.380 0.000 srgb} bind def
/col27 {1.000 0.500 0.500 srgb} bind def
/col28 {1.000 0.630 0.630 srgb} bind def
/col29 {1.000 0.750 0.750 srgb} bind def
/col30 {1.000 0.880 0.880 srgb} bind def
/col31 {1.000 0.840 0.000 srgb} bind def
end
save
newpath 0 248 moveto 0 0 lineto 347 0 lineto 347 248 lineto closepath clip newpath
-84.0 381.8 translate
1 -1 scale
/cp {closepath} bind def
/ef {eofill} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth} bind def
/tr {translate} bind def
/tnt {dup dup currentrgbcolor
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
bind def
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul srgb} bind def
/DrawEllipse {
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y tr xrad yrad sc 0 0 1 startangle endangle arc
closepath
savematrix setmatrix
} def
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
10 setmiterlimit
0 slj 0 slc
0.04409 0.04409 sc
%
% Fig objects follow
%
%
% here starts figure with depth 70
% Polyline
0 slj
0 slc
7.500 slw
n 2580 7425 m 2475 7425 2475 8220 105 arcto 4 {pop} repeat
2475 8325 9120 8325 105 arcto 4 {pop} repeat
9225 8325 9225 7530 105 arcto 4 {pop} repeat
9225 7425 2580 7425 105 arcto 4 {pop} repeat
cp gs col6 0.50 tnt ef gr gs col16 s gr
% here ends figure;
%
% here starts figure with depth 55
% Ellipse
7.500 slw
n 2014 3150 101 101 0 360 DrawEllipse gs col7 s gr
% Ellipse
n 9664 8550 101 101 0 360 DrawEllipse gs col7 s gr
% here ends figure;
%
% here starts figure with depth 50
% Polyline
0 slj
0 slc
7.500 slw
gs clippath
3195 3743 m 3195 3585 l 3105 3585 l 3105 3743 l 3105 3743 l 3150 3623 l 3195 3743 l cp
eoclip
n 3150 7200 m
3150 3600 l gs col15 s gr gr
% arrowhead
n 3195 3743 m 3150 3623 l 3105 3743 l col15 s
% Polyline
n 3600 6840 m
3600 6750 l gs col15 s gr
% Polyline
n 4050 6840 m
4050 6750 l gs col15 s gr
% Polyline
n 4500 6840 m
4500 6750 l gs col15 s gr
% Polyline
n 4950 6840 m
4950 6750 l gs col15 s gr
% Polyline
n 5400 6840 m
5400 6750 l gs col15 s gr
% Polyline
n 5850 6840 m
5850 6750 l gs col15 s gr
% Polyline
n 6300 6840 m
6300 6750 l gs col15 s gr
% Polyline
n 6750 6840 m
6750 6750 l gs col15 s gr
% Polyline
n 7200 6840 m
7200 6750 l gs col15 s gr
% Polyline
n 7650 6840 m
7650 6750 l gs col15 s gr
% Polyline
n 8100 6840 m
8100 6750 l gs col15 s gr
% Polyline
n 8550 6840 m
8550 6750 l gs col15 s gr
% Polyline
gs clippath
8902 6795 m 9060 6795 l 9060 6705 l 8902 6705 l 8902 6705 l 9022 6750 l 8902 6795 l cp
eoclip
n 2700 6750 m
9045 6750 l gs col15 s gr gr
% arrowhead
n 8902 6795 m 9022 6750 l 8902 6705 l col15 s
% Polyline
n 3150 6300 m
3060 6300 l gs col15 s gr
% Polyline
n 3150 5850 m
3060 5850 l gs col15 s gr
% Polyline
n 3150 5400 m
3060 5400 l gs col15 s gr
% Polyline
n 3150 4950 m
3060 4950 l gs col15 s gr
% Polyline
n 3150 4500 m
3060 4500 l gs col15 s gr
% Polyline
n 3150 4050 m
3060 4050 l gs col15 s gr
% Polyline
15.000 slw
n 3167 6307 m
4067 5407 l gs col8 s gr
% Polyline
n 3619 5794 m
4947 4467 l gs col8 s gr
% Polyline
7.500 slw
[60] 0 sd
gs clippath
3195 6478 m 3195 6285 l 3105 6285 l 3105 6478 l 3105 6478 l 3150 6328 l 3195 6478 l cp
eoclip
n 3150 7875 m
3150 6300 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 3195 6478 m 3150 6328 l 3105 6478 l col0 s
% Polyline
[60] 0 sd
gs clippath
3645 6028 m 3645 5835 l 3555 5835 l 3555 6028 l 3555 6028 l 3600 5878 l 3645 6028 l cp
eoclip
n 3600 7875 m
3600 5850 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 3645 6028 m 3600 5878 l 3555 6028 l col0 s
% Polyline
[60] 0 sd
gs clippath
4095 5578 m 4095 5385 l 4005 5385 l 4005 5578 l 4005 5578 l 4050 5428 l 4095 5578 l cp
eoclip
n 4050 7875 m
4050 5400 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 4095 5578 m 4050 5428 l 4005 5578 l col0 s
% Polyline
[60] 0 sd
gs clippath
4545 5128 m 4545 4935 l 4455 4935 l 4455 5128 l 4455 5128 l 4500 4978 l 4545 5128 l cp
eoclip
n 4500 7875 m
4500 4950 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 4545 5128 m 4500 4978 l 4455 5128 l col0 s
% Polyline
[60] 0 sd
gs clippath
4995 6028 m 4995 5835 l 4905 5835 l 4905 6028 l 4905 6028 l 4950 5878 l 4995 6028 l cp
eoclip
n 4950 7875 m
4950 5850 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 4995 6028 m 4950 5878 l 4905 6028 l col0 s
% Polyline
[60] 0 sd
gs clippath
5445 5578 m 5445 5385 l 5355 5385 l 5355 5578 l 5355 5578 l 5400 5428 l 5445 5578 l cp
eoclip
n 5400 7875 m
5400 5400 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 5445 5578 m 5400 5428 l 5355 5578 l col0 s
% Polyline
[60] 0 sd
gs clippath
6345 6028 m 6345 5835 l 6255 5835 l 6255 6028 l 6255 6028 l 6300 5878 l 6345 6028 l cp
eoclip
n 6300 7875 m
6300 5850 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 6345 6028 m 6300 5878 l 6255 6028 l col0 s
% Polyline
[60] 0 sd
gs clippath
6795 5578 m 6795 5385 l 6705 5385 l 6705 5578 l 6705 5578 l 6750 5428 l 6795 5578 l cp
eoclip
n 6750 7875 m
6750 5400 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 6795 5578 m 6750 5428 l 6705 5578 l col0 s
% Polyline
[60] 0 sd
gs clippath
7245 6028 m 7245 5835 l 7155 5835 l 7155 6028 l 7155 6028 l 7200 5878 l 7245 6028 l cp
eoclip
n 7200 7875 m
7200 5850 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 7245 6028 m 7200 5878 l 7155 6028 l col0 s
% Polyline
[60] 0 sd
gs clippath
7695 6028 m 7695 5835 l 7605 5835 l 7605 6028 l 7605 6028 l 7650 5878 l 7695 6028 l cp
eoclip
n 7650 7875 m
7650 5850 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 7695 6028 m 7650 5878 l 7605 6028 l col0 s
% Polyline
[60] 0 sd
gs clippath
8145 6928 m 8145 6735 l 8055 6735 l 8055 6928 l 8055 6928 l 8100 6778 l 8145 6928 l cp
eoclip
n 8100 7875 m
8100 6750 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 8145 6928 m 8100 6778 l 8055 6928 l col0 s
% Polyline
[60] 0 sd
gs clippath
8595 6433 m 8595 6240 l 8505 6240 l 8505 6433 l 8505 6433 l 8550 6283 l 8595 6433 l cp
eoclip
n 8550 7830 m
8550 6255 l gs col0 s gr gr
[] 0 sd
% arrowhead
n 8595 6433 m 8550 6283 l 8505 6433 l col0 s
% Polyline
30.000 slw
n 3600 4500 m
6300 5850 l gs col8 s gr
% Polyline
n 4950 5850 m
5850 4950 l gs col8 s gr
% Polyline
n 6750 5400 m
6750 4050 l gs col8 s gr
% Polyline
n 8100 6750 m
8100 4500 l gs col8 s gr
% Polyline
n 7200 5850 m
8550 4950 l gs col8 s gr
% Polyline
n 7650 5850 m
8550 6300 l gs col8 s gr
% Polyline
7.500 slw
gs clippath
3448 7905 m 3615 7905 l 3615 7845 l 3448 7845 l 3448 7845 l 3568 7875 l 3448 7905 l cp
3302 7845 m 3135 7845 l 3135 7905 l 3302 7905 l 3302 7905 l 3182 7875 l 3302 7845 l cp
eoclip
n 3150 7875 m
3600 7875 l gs col22 s gr gr
% arrowhead
n 3302 7845 m 3182 7875 l 3302 7905 l 3302 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 3448 7905 m 3568 7875 l 3448 7845 l 3448 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
3898 7905 m 4065 7905 l 4065 7845 l 3898 7845 l 3898 7845 l 4018 7875 l 3898 7905 l cp
3752 7845 m 3585 7845 l 3585 7905 l 3752 7905 l 3752 7905 l 3632 7875 l 3752 7845 l cp
eoclip
n 3600 7875 m
4050 7875 l gs col22 s gr gr
% arrowhead
n 3752 7845 m 3632 7875 l 3752 7905 l 3752 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 3898 7905 m 4018 7875 l 3898 7845 l 3898 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
4348 7905 m 4515 7905 l 4515 7845 l 4348 7845 l 4348 7845 l 4468 7875 l 4348 7905 l cp
4202 7845 m 4035 7845 l 4035 7905 l 4202 7905 l 4202 7905 l 4082 7875 l 4202 7845 l cp
eoclip
n 4050 7875 m
4500 7875 l gs col22 s gr gr
% arrowhead
n 4202 7845 m 4082 7875 l 4202 7905 l 4202 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 4348 7905 m 4468 7875 l 4348 7845 l 4348 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
4843 7905 m 5010 7905 l 5010 7845 l 4843 7845 l 4843 7845 l 4963 7875 l 4843 7905 l cp
4697 7845 m 4530 7845 l 4530 7905 l 4697 7905 l 4697 7905 l 4577 7875 l 4697 7845 l cp
eoclip
n 4545 7875 m
4995 7875 l gs col22 s gr gr
% arrowhead
n 4697 7845 m 4577 7875 l 4697 7905 l 4697 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 4843 7905 m 4963 7875 l 4843 7845 l 4843 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
5248 7905 m 5415 7905 l 5415 7845 l 5248 7845 l 5248 7845 l 5368 7875 l 5248 7905 l cp
5102 7845 m 4935 7845 l 4935 7905 l 5102 7905 l 5102 7905 l 4982 7875 l 5102 7845 l cp
eoclip
n 4950 7875 m
5400 7875 l gs col22 s gr gr
% arrowhead
n 5102 7845 m 4982 7875 l 5102 7905 l 5102 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 5248 7905 m 5368 7875 l 5248 7845 l 5248 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
6553 7905 m 6720 7905 l 6720 7845 l 6553 7845 l 6553 7845 l 6673 7875 l 6553 7905 l cp
6407 7845 m 6240 7845 l 6240 7905 l 6407 7905 l 6407 7905 l 6287 7875 l 6407 7845 l cp
eoclip
n 6255 7875 m
6705 7875 l gs col22 s gr gr
% arrowhead
n 6407 7845 m 6287 7875 l 6407 7905 l 6407 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 6553 7905 m 6673 7875 l 6553 7845 l 6553 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
7003 7905 m 7170 7905 l 7170 7845 l 7003 7845 l 7003 7845 l 7123 7875 l 7003 7905 l cp
6857 7845 m 6690 7845 l 6690 7905 l 6857 7905 l 6857 7905 l 6737 7875 l 6857 7845 l cp
eoclip
n 6705 7875 m
7155 7875 l gs col22 s gr gr
% arrowhead
n 6857 7845 m 6737 7875 l 6857 7905 l 6857 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 7003 7905 m 7123 7875 l 7003 7845 l 7003 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
7498 7905 m 7665 7905 l 7665 7845 l 7498 7845 l 7498 7845 l 7618 7875 l 7498 7905 l cp
7352 7845 m 7185 7845 l 7185 7905 l 7352 7905 l 7352 7905 l 7232 7875 l 7352 7845 l cp
eoclip
n 7200 7875 m
7650 7875 l gs col22 s gr gr
% arrowhead
n 7352 7845 m 7232 7875 l 7352 7905 l 7352 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 7498 7905 m 7618 7875 l 7498 7845 l 7498 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
7948 7905 m 8115 7905 l 8115 7845 l 7948 7845 l 7948 7845 l 8068 7875 l 7948 7905 l cp
7802 7845 m 7635 7845 l 7635 7905 l 7802 7905 l 7802 7905 l 7682 7875 l 7802 7845 l cp
eoclip
n 7650 7875 m
8100 7875 l gs col22 s gr gr
% arrowhead
n 7802 7845 m 7682 7875 l 7802 7905 l 7802 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 7948 7905 m 8068 7875 l 7948 7845 l 7948 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
8398 7905 m 8565 7905 l 8565 7845 l 8398 7845 l 8398 7845 l 8518 7875 l 8398 7905 l cp
8252 7845 m 8085 7845 l 8085 7905 l 8252 7905 l 8252 7905 l 8132 7875 l 8252 7845 l cp
eoclip
n 8100 7875 m
8550 7875 l gs col22 s gr gr
% arrowhead
n 8252 7845 m 8132 7875 l 8252 7905 l 8252 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 8398 7905 m 8518 7875 l 8398 7845 l 8398 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
6148 7905 m 6315 7905 l 6315 7845 l 6148 7845 l 6148 7845 l 6268 7875 l 6148 7905 l cp
5552 7845 m 5385 7845 l 5385 7905 l 5552 7905 l 5552 7905 l 5432 7875 l 5552 7845 l cp
eoclip
n 5400 7875 m
6300 7875 l gs col22 s gr gr
% arrowhead
n 5552 7845 m 5432 7875 l 5552 7905 l 5552 7845 l cp gs col22 1.00 shd ef gr col22 s
% arrowhead
n 6148 7905 m 6268 7875 l 6148 7845 l 6148 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
2998 7905 m 3165 7905 l 3165 7845 l 2998 7845 l 2998 7845 l 3118 7875 l 2998 7905 l cp
eoclip
n 2520 7875 m
3150 7875 l gs col22 s gr gr
% arrowhead
n 2998 7905 m 3118 7875 l 2998 7845 l 2998 7905 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
gs clippath
8702 7845 m 8535 7845 l 8535 7905 l 8702 7905 l 8702 7905 l 8582 7875 l 8702 7845 l cp
eoclip
n 8550 7875 m
9180 7875 l gs col22 s gr gr
% arrowhead
n 8702 7845 m 8582 7875 l 8702 7905 l 8702 7845 l cp gs col22 1.00 shd ef gr col22 s
% Polyline
n 2025 3150 m 9675 3150 l 9675 8550 l 2025 8550 l
cp gs col0 s gr
/Times-Italic ff 254.00 scf sf
3285 5985 m
gs 1 -1 sc (A) col8 sh gr
/Times-Italic ff 254.00 scf sf
4725 4455 m
gs 1 -1 sc (B) col8 sh gr
/Times-Italic ff 254.00 scf sf
3780 4500 m
gs 1 -1 sc (C) col8 sh gr
/Times-Italic ff 254.00 scf sf
5580 4950 m
gs 1 -1 sc (D) col8 sh gr
/Times-Italic ff 254.00 scf sf
6525 4545 m
gs 1 -1 sc (E) col8 sh gr
/Times-Italic ff 254.00 scf sf
7470 5535 m
gs 1 -1 sc (F) col8 sh gr
/Times-Italic ff 254.00 scf sf
8325 6120 m
gs 1 -1 sc (G) col8 sh gr
/Times-Italic ff 254.00 scf sf
7830 4635 m
gs 1 -1 sc (H) col8 sh gr
/Times-Italic ff 190.50 scf sf
3330 8100 m
gs 1 -1 sc (A) col21 sh gr
/Times-Italic ff 190.50 scf sf
3690 8100 m
gs 1 -1 sc (A,B) col21 sh gr
/Times-Italic ff 190.50 scf sf
4230 8100 m
gs 1 -1 sc (B) col21 sh gr
/Times-Italic ff 190.50 scf sf
4680 8100 m
gs 1 -1 sc (C) col21 sh gr
/Times-Italic ff 190.50 scf sf
5760 8100 m
gs 1 -1 sc (C) col21 sh gr
/Times-Italic ff 190.50 scf sf
5085 8100 m
gs 1 -1 sc (D) col21 sh gr
/Times-Italic ff 190.50 scf sf
7335 8100 m
gs 1 -1 sc (F) col21 sh gr
/Times-Italic ff 190.50 scf sf
7785 8100 m
gs 1 -1 sc (G) col21 sh gr
/Times-Italic ff 190.50 scf sf
8235 8100 m
gs 1 -1 sc (G) col21 sh gr
% here ends figure;
%
% here starts figure with depth 40
% Ellipse
7.500 slw
n 3600 5850 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 3150 6300 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4050 5400 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4950 5850 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 6300 5850 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 6750 5400 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 7200 5850 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 7650 5850 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 8550 6300 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 8100 6750 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 5400 5400 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4495 4950 50 50 0 360 DrawEllipse gs col4 1.00 shd ef gr gs col0 s gr
% Ellipse
n 3150 7870 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 3595 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4045 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4495 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 4945 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 5395 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 6295 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 6745 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 7195 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 7645 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 8095 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% Ellipse
n 8545 7875 50 50 0 360 DrawEllipse gs col11 1.00 shd ef gr gs col0 s gr
% here ends figure;
$F2psEnd
rs
showpage
%%Trailer
%EOF

View File

@ -0,0 +1,200 @@
#FIG 3.2 Produced by xfig version 3.2.5-alpha5
Landscape
Center
Metric
A4
70.00
Single
-2
1200 2
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 3600 5850 50 50 3600 5850 3650 5850
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 3150 6300 50 50 3150 6300 3200 6300
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 4050 5400 50 50 4050 5400 4100 5400
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 4950 5850 50 50 4950 5850 5000 5850
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 6300 5850 50 50 6300 5850 6350 5850
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 6750 5400 50 50 6750 5400 6800 5400
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 7200 5850 50 50 7200 5850 7250 5850
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 7650 5850 50 50 7650 5850 7700 5850
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 8550 6300 50 50 8550 6300 8600 6300
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 8100 6750 50 50 8100 6750 8150 6750
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 5400 5400 50 50 5400 5400 5450 5400
1 3 0 1 0 4 40 -1 20 0.000 1 0.0000 4495 4950 50 50 4495 4950 4545 4950
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 3150 7870 50 50 3150 7870 3200 7870
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 3595 7875 50 50 3595 7875 3645 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 4045 7875 50 50 4045 7875 4095 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 4495 7875 50 50 4495 7875 4545 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 4945 7875 50 50 4945 7875 4995 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 5395 7875 50 50 5395 7875 5445 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 6295 7875 50 50 6295 7875 6345 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 6745 7875 50 50 6745 7875 6795 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 7195 7875 50 50 7195 7875 7245 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 7645 7875 50 50 7645 7875 7695 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 8095 7875 50 50 8095 7875 8145 7875
1 3 0 1 0 11 40 -1 20 0.000 1 0.0000 8545 7875 50 50 8545 7875 8595 7875
1 3 0 1 7 7 55 -1 -1 0.000 1 0.0000 2014 3150 101 101 2014 3150 2115 3150
1 3 0 1 7 7 55 -1 -1 0.000 1 0.0000 9664 8550 101 101 9664 8550 9765 8550
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 1 0 2
0 0 1.00 90.00 120.00
3150 7200 3150 3600
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3600 6840 3600 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
4050 6840 4050 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
4500 6840 4500 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
4950 6840 4950 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
5400 6840 5400 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
5850 6840 5850 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
6300 6840 6300 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
6750 6840 6750 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
7200 6840 7200 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
7650 6840 7650 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
8100 6840 8100 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
8550 6840 8550 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 1 0 2
0 0 1.00 90.00 120.00
2700 6750 9045 6750
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 6300 3060 6300
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 5850 3060 5850
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 5400 3060 5400
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 4950 3060 4950
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 4500 3060 4500
2 1 0 1 15 7 50 -1 -1 0.000 0 0 -1 0 0 2
3150 4050 3060 4050
2 1 0 2 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
3167 6307 4067 5407
2 1 0 2 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
3619 5794 4947 4467
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
3150 7875 3150 6300
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
3600 7875 3600 5850
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
4050 7875 4050 5400
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
4500 7875 4500 4950
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
4950 7875 4950 5850
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
5400 7875 5400 5400
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
6300 7875 6300 5850
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
6750 7875 6750 5400
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
7200 7875 7200 5850
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
7650 7875 7650 5850
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
8100 7875 8100 6750
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
0 0 1.00 90.00 150.00
8550 7830 8550 6255
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
3600 4500 6300 5850
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
4950 5850 5850 4950
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
6750 5400 6750 4050
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
8100 6750 8100 4500
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
7200 5850 8550 4950
2 1 0 3 8 7 50 -1 -1 0.000 0 0 -1 0 0 2
7650 5850 8550 6300
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
3150 7875 3600 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
3600 7875 4050 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
4050 7875 4500 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
4545 7875 4995 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
4950 7875 5400 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
6255 7875 6705 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
6705 7875 7155 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
7200 7875 7650 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
7650 7875 8100 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
8100 7875 8550 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 1 2
1 1 1.00 60.00 120.00
1 1 1.00 60.00 120.00
5400 7875 6300 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 1 0 2
1 1 1.00 60.00 120.00
2520 7875 3150 7875
2 1 0 1 22 7 50 -1 -1 0.000 0 0 -1 0 1 2
1 1 1.00 60.00 120.00
8550 7875 9180 7875
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
2025 3150 9675 3150 9675 8550 2025 8550 2025 3150
2 4 0 1 16 6 70 -1 30 0.000 0 0 7 0 0 5
9225 8325 2475 8325 2475 7425 9225 7425 9225 8325
4 0 8 50 -1 3 16 0.0000 0 195 165 3285 5985 A\001
4 0 8 50 -1 3 16 0.0000 0 195 180 4725 4455 B\001
4 0 8 50 -1 3 16 0.0000 0 195 180 3780 4500 C\001
4 0 8 50 -1 3 16 0.0000 0 195 210 5580 4950 D\001
4 0 8 50 -1 3 16 0.0000 0 195 165 6525 4545 E\001
4 0 8 50 -1 3 16 0.0000 0 195 165 7470 5535 F\001
4 0 8 50 -1 3 16 0.0000 0 195 210 8325 6120 G\001
4 0 8 50 -1 3 16 0.0000 0 195 195 7830 4635 H\001
4 0 21 50 -1 3 12 0.0000 0 120 120 3330 8100 A\001
4 0 21 50 -1 3 12 0.0000 0 150 285 3690 8100 A,B\001
4 0 21 50 -1 3 12 0.0000 0 120 120 4230 8100 B\001
4 0 21 50 -1 3 12 0.0000 0 120 135 4680 8100 C\001
4 0 21 50 -1 3 12 0.0000 0 120 135 5760 8100 C\001
4 0 21 50 -1 3 12 0.0000 0 120 135 5085 8100 D\001
4 0 21 50 -1 3 12 0.0000 0 120 120 7335 8100 F\001
4 0 21 50 -1 3 12 0.0000 0 120 135 7785 8100 G\001
4 0 21 50 -1 3 12 0.0000 0 120 135 8235 8100 G\001

View File

@ -0,0 +1,32 @@
\RCSdef{\EnvelopePlnRefRev}{$Id$}
\RCSdefDate{\EnvelopePlnRefDate}{$Date$}
\ccParDims
\ccUserChapter{Envelopes of Curves in 2D}
%\input{Envelope_2/PkgDescription.tex}
\begingroup
\label{chapter_Envelope_2}
\ccChapterAuthor{Ron Wein}
\lcTex{%
\newlength{\widthExtra}\setlength{\widthExtra}{1.1cm}
\newlength{\widthLineReal}\setlength{\widthLineReal}{\linewidth}
\addtolength{\widthLineReal}{-\widthExtra}
\newlength{\minipageSpace}\setlength{\minipageSpace}{0.2cm}
\newlength{\widthLeft}
\newlength{\widthRight}
}
\newcommand{\reals}{\mathbb{R}}
\newcommand{\calC}{{\cal C}}
\newcommand{\calL}{{\cal L}}
\newcommand{\calU}{{\cal U}}
\newcommand{\eps}{{\varepsilon}}
\newcommand{\Cpp}{{C}{\tt ++}}
\input{Envelope_2/envelope}
\endgroup

View File

@ -0,0 +1,27 @@
% ===============================================================
\section*{Introduction}
\label{env2_ref_sec:intro}
% ========================
This package consits of functions that compute the lower (or upper)
envelope of a set of arbitrary curves in 2D. The output is
represented as an envelope diagram, namely a subdivision of the
$x$-axis into intervals, such that the identity of the curves that
induce the envelope over each interval is unique.
\subsection*{Functions}
\ccRefIdfierPage{CGAL::lower_envelope_2}\\
\ccRefIdfierPage{CGAL::upper_envelope_2}\\
\ccRefIdfierPage{CGAL::lower_envelope_x_monotone_2}\\
\ccRefIdfierPage{CGAL::upper_envelope_x_monotone_2}
\subsection*{Concepts}
\ccRefConceptPage{EnvelopeDiagram_1}
\subsection*{Classes}
\ccRefIdfierPage{CGAL::Env_default_diagram_1<Traits>}

View File

@ -0,0 +1,27 @@
% +------------------------------------------------------------------------+
% | Reference manual page: lower_envelope_2.tex
% +------------------------------------------------------------------------+
% |
% | Package: Envelope_2
% |
% +------------------------------------------------------------------------+
\ccRefPageBegin
\begin{ccRefFunction}{lower_envelope_2}
\ccInclude{CGAL/envelope_2.h}
\ccFunction{template<class InputIterator, class EnvelopeDiagram>
void lower_envelope_2 (InputIterator begin, InputIterator end,
EnvelopeDiagram& diag);}
{Computes the lower envelope of a set of curves in $\reals^2$,
as given by the range \ccc{[begin, end)}. The lower envelope is
represented using the output minimization diagram \ccc{diag},
which must be a model of the \ccc{EnvelopeDiagram_1} concept.
\ccPrecond{The value-type of \ccc{InputIterator} is
\ccc{EnvelopeDiagram::Traits_2::Curve_2}.}}
\end{ccRefFunction}
\ccRefPageEnd

View File

@ -0,0 +1,28 @@
% +------------------------------------------------------------------------+
% | Reference manual page: lower_envelope_x_monotone_2.tex
% +------------------------------------------------------------------------+
% |
% | Package: Envelope_2
% |
% +------------------------------------------------------------------------+
\ccRefPageBegin
\begin{ccRefFunction}{lower_envelope_x_monotone_2}
\ccInclude{CGAL/envelope_2.h}
\ccFunction{template<class InputIterator, class EnvelopeDiagram>
void lower_envelope_x_monotone_2
(InputIterator begin, InputIterator end,
EnvelopeDiagram& diag);}
{Computes the lower envelope of a set of $x$-monotone curves in $\reals^2$,
as given by the range \ccc{[begin, end)}. The lower envelope is
represented using the output minimization diagram \ccc{diag},
which must be a model of the \ccc{EnvelopeDiagram_1} concept.
\ccPrecond{The value-type of \ccc{InputIterator} is
\ccc{EnvelopeDiagram::Traits_2::X_monotone_curve_2}.}}
\end{ccRefFunction}
\ccRefPageEnd

View File

@ -0,0 +1,17 @@
\RCSdef{\EnvelopePlnRefRev}{$Revision$}
\RCSdefDate{\EnvelopePlnRefDate}{$Date$}
\clearpage
\ccRefChapter{Envelopes of Curves in 2D}
\label{chapterEnvelope2Ref}
\ccChapterAuthor{Ron Wein}
\newcommand{\reals}{\mathbb{R}}
\input{Envelope_3_ref/intro}
\input{Envelope_3_ref/lower_envelope_2}
\input{Envelope_3_ref/upper_envelope_2}
\input{Envelope_3_ref/lower_envelope_x_monotone_2}
\input{Envelope_3_ref/upper_envelope_x_monotone_2}
%\input{Envelope_3_ref/EnvelopeDiagram}
%\input{Envelope_3_ref/Env_default_diagram}

View File

@ -0,0 +1,27 @@
% +------------------------------------------------------------------------+
% | Reference manual page: upper_envelope_2.tex
% +------------------------------------------------------------------------+
% |
% | Package: Envelope_2
% |
% +------------------------------------------------------------------------+
\ccRefPageBegin
\begin{ccRefFunction}{upper_envelope_2}
\ccInclude{CGAL/envelope_2.h}
\ccFunction{template<class InputIterator, class EnvelopeDiagram>
void upper_envelope_2 (InputIterator begin, InputIterator end,
EnvelopeDiagram& diag);}
{Computes the upper envelope of a set of curves in $\reals^2$,
as given by the range \ccc{[begin, end)}. The upper envelope is
represented using the output maximization diagram \ccc{diag},
which must be a model of the \ccc{EnvelopeDiagram_1} concept.
\ccPrecond{The value-type of \ccc{InputIterator} is
\ccc{EnvelopeDiagram::Traits_2::Curve_2}.}}
\end{ccRefFunction}
\ccRefPageEnd

View File

@ -0,0 +1,28 @@
% +------------------------------------------------------------------------+
% | Reference manual page: upper_envelope_x_monotone_2.tex
% +------------------------------------------------------------------------+
% |
% | Package: Envelope_2
% |
% +------------------------------------------------------------------------+
\ccRefPageBegin
\begin{ccRefFunction}{upper_envelope_x_monotone_2}
\ccInclude{CGAL/envelope_2.h}
\ccFunction{template<class InputIterator, class EnvelopeDiagram>
void upper_envelope_x_monotone_2
(InputIterator begin, InputIterator end,
EnvelopeDiagram& diag);}
{Computes the upper envelope of a set of $x$-monotone curves in $\reals^2$,
as given by the range \ccc{[begin, end)}. The upper envelope is
represented using the output maximization diagram \ccc{diag},
which must be a model of the \ccc{EnvelopeDiagram_1} concept.
\ccPrecond{The value-type of \ccc{InputIterator} is
\ccc{EnvelopeDiagram::Traits_2::X_monotone_curve_2}.}}
\end{ccRefFunction}
\ccRefPageEnd

View File

@ -1,81 +1,81 @@
//! \file examples/Example_2/ex_envelope_segments.cpp
// Constructing the lower envelope of a set of segments.
#include <CGAL/Gmpq.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arr_consolidated_curve_data_traits_2.h>
#include <CGAL/Env_default_diagram_1.h>
#include <CGAL/envelope_2.h>
#include <list>
#include <iostream>
typedef CGAL::Gmpq Number_type;
typedef CGAL::Cartesian<Number_type> Kernel;
typedef CGAL::Arr_segment_traits_2<Kernel> Segment_traits_2;
typedef Segment_traits_2::X_monotone_curve_2 Segment_2;
typedef CGAL::Arr_consolidated_curve_data_traits_2
<Segment_traits_2, char> Traits_2;
typedef Traits_2::Point_2 Point_2;
typedef Traits_2::X_monotone_curve_2 Labeled_segment_2;
typedef CGAL::Env_default_diagram_1<Traits_2> Diagram_1;
int main ()
{
// Consrtuct the input segments and label them 'A' ... 'H'.
std::list<Labeled_segment_2> segments;
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (0, 1),
Point_2 (2, 3)), 'A'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (1, 2),
Point_2 (4, 5)), 'B'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (1, 5),
Point_2 (7, 2)), 'C'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (4, 2),
Point_2 (6, 4)), 'D'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (8, 3),
Point_2 (8, 5)), 'E'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (9, 2),
Point_2 (12, 4)), 'F'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (10, 2),
Point_2 (12, 1)), 'G'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (11, 0),
Point_2 (11, 5)), 'H'));
// Compute the minimization diagram that represents their lower envelope.
Diagram_1 min_diag;
lower_envelope_x_monotone_2 (segments.begin(), segments.end(),
min_diag);
// Print the minimization diagram.
Diagram_1::Edge_const_handle e = min_diag.leftmost();
Diagram_1::Vertex_const_handle v;
Diagram_1::Curve_const_iterator cit;
while (e != min_diag.rightmost())
{
std::cout << "Edge:";
if (! e->is_empty())
{
for (cit = e->curves_begin(); cit != e->curves_end(); ++cit)
std::cout << ' ' << cit->data().front();
}
else
std::cout << "[empty]";
std::cout << std::endl;
v = e->right();
std::cout << "Vertex (" << v->point() << "):";
for (cit = v->curves_begin(); cit != v->curves_end(); ++cit)
std::cout << ' ' << cit->data().front();
std::cout << std::endl;
e = v->right();
}
CGAL_assertion (e->is_empty());
std::cout << "Edge: [empty]" << std::endl;
return (0);
}
//! \file examples/Example_2/ex_envelope_segments.cpp
// Constructing the lower envelope of a set of segments.
#include <CGAL/Gmpq.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Arr_segment_traits_2.h>
#include <CGAL/Arr_consolidated_curve_data_traits_2.h>
#include <CGAL/Env_default_diagram_1.h>
#include <CGAL/envelope_2.h>
#include <list>
#include <iostream>
typedef CGAL::Gmpq Number_type;
typedef CGAL::Cartesian<Number_type> Kernel;
typedef CGAL::Arr_segment_traits_2<Kernel> Segment_traits_2;
typedef Segment_traits_2::X_monotone_curve_2 Segment_2;
typedef CGAL::Arr_consolidated_curve_data_traits_2
<Segment_traits_2, char> Traits_2;
typedef Traits_2::Point_2 Point_2;
typedef Traits_2::X_monotone_curve_2 Labeled_segment_2;
typedef CGAL::Env_default_diagram_1<Traits_2> Diagram_1;
int main ()
{
// Consrtuct the input segments and label them 'A' ... 'H'.
std::list<Labeled_segment_2> segments;
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (0, 1),
Point_2 (2, 3)), 'A'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (1, 2),
Point_2 (4, 5)), 'B'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (1, 5),
Point_2 (7, 2)), 'C'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (4, 2),
Point_2 (6, 4)), 'D'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (8, 3),
Point_2 (8, 6)), 'E'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (9, 2),
Point_2 (12, 4)), 'F'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (10, 2),
Point_2 (12, 1)), 'G'));
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (11, 0),
Point_2 (11, 5)), 'H'));
// Compute the minimization diagram that represents their lower envelope.
Diagram_1 min_diag;
lower_envelope_x_monotone_2 (segments.begin(), segments.end(),
min_diag);
// Print the minimization diagram.
Diagram_1::Edge_const_handle e = min_diag.leftmost();
Diagram_1::Vertex_const_handle v;
Diagram_1::Curve_const_iterator cit;
while (e != min_diag.rightmost())
{
std::cout << "Edge:";
if (! e->is_empty())
{
for (cit = e->curves_begin(); cit != e->curves_end(); ++cit)
std::cout << ' ' << cit->data().front();
}
else
std::cout << "[empty]";
std::cout << std::endl;
v = e->right();
std::cout << "Vertex (" << v->point() << "):";
for (cit = v->curves_begin(); cit != v->curves_end(); ++cit)
std::cout << ' ' << cit->data().front();
std::cout << std::endl;
e = v->right();
}
CGAL_assertion (e->is_empty());
std::cout << "Edge: [empty]" << std::endl;
return (0);
}