mirror of https://github.com/CGAL/cgal
Initial revision
This commit is contained in:
parent
e249619e14
commit
1a80bc0e41
|
|
@ -1,4 +1,15 @@
|
|||
* text=auto !eol
|
||||
Old_Packages/Doc23/doc_tex/kernel/IsoCuboid.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrlinthree.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrlintwo.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrthree.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrthree2.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrtwo.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/arrtwo2.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/compare1.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/compare2.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/transvecthree.gif svneol=native#unset
|
||||
Old_Packages/Doc23/doc_tex/kernel/transvectwo.gif svneol=native#unset
|
||||
Old_Packages/Stl_port/stlport/bug/algorithm svneol=native#unset
|
||||
Old_Packages/Stl_port/stlport/bug/bitset svneol=native#unset
|
||||
Old_Packages/Stl_port/stlport/bug/cassert svneol=native#unset
|
||||
|
|
@ -277,6 +288,20 @@ Packages/Installation/doc_tex/installation/Fig/c-simp.ipe -text
|
|||
Packages/Installation/doc_tex/installation/Fig/g-simp.ipe -text
|
||||
Packages/Installation/doc_tex/installation/Fig/l-simp.ipe -text
|
||||
Packages/Interval_arithmetic/src/Interval_arithmetic/workaround_4_ms.obj -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/IsoCuboid.eps -text
|
||||
Packages/Kernel_23/doc_tex/kernel/IsoCuboid.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrlinthree.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrlintwo.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrthree.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrthree2.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrtwo.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/arrtwo2.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/compare1.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/compare1.ipe -text
|
||||
Packages/Kernel_23/doc_tex/kernel/compare2.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/compare2.ipe -text
|
||||
Packages/Kernel_23/doc_tex/kernel/transvecthree.gif -text svneol=unset#unset
|
||||
Packages/Kernel_23/doc_tex/kernel/transvectwo.gif -text svneol=unset#unset
|
||||
Packages/Manual_tools/src/mstring.doc -text
|
||||
Packages/Matrix_search/doc_tex/Optimisation/Optimisation_ref/MatrixSearch_pcenter1.gif svneol=native#unset
|
||||
Packages/Matrix_search/doc_tex/Optimisation/Optimisation_ref/MatrixSearch_pcenter2.gif svneol=native#unset
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
2.7 (26 Sep 2000)
|
||||
|
||||
- links for Cartesian and intersection suppressed in many places (certainly
|
||||
not all where necessary)
|
||||
- orientation and opposite are not linked anymore
|
||||
- spacing for Kernel fixed (uses \ccAdditionalRefSkip length - thanks to Susan)
|
||||
- operators now show up in the postscript version again with Vector/Point (don't
|
||||
know the exact reason for this problem related to operator Layout
|
||||
|
||||
2.6 (07 Sep 2000)
|
||||
|
||||
- circumcenter page fixed
|
||||
- ray (Ray_2<R>, Ray_3<R>) .... A segment (Segment_2<R>, Segment_3<R>)
|
||||
in kernel_geometry.tex
|
||||
|
||||
2.5 (17 Aug 2000)
|
||||
|
||||
- ccCreationVariable set to fo for Kernel::FunctionObjects
|
||||
- ccSeeAlso added in a number of places
|
||||
- rational_rotation_approximation documented
|
||||
- dimension fixes in 3D functionality: _2 replaced by _3
|
||||
(copy and paste errors)
|
||||
- html does not work for operator* !!!??? no fix yet!
|
||||
|
||||
2.4 (10 Aug 2000)
|
||||
|
||||
- converted to RefManual
|
||||
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: IsoCuboid.eps
|
||||
%%Creator: fig2dev Version 3.2.3 Patchlevel
|
||||
%%CreationDate: Tue Aug 8 14:12:52 2000
|
||||
%%For: stschirr@mpii01807 (Stefan Schirra)
|
||||
%%BoundingBox: 0 0 258 136
|
||||
%%Magnification: 0.5000
|
||||
%%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 136 moveto 0 0 lineto 258 0 lineto 258 136 lineto closepath clip newpath
|
||||
-6.0 217.0 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
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
$F2psBegin
|
||||
%%Page: 1 1
|
||||
10 setmiterlimit
|
||||
0.03000 0.03000 sc
|
||||
% Polyline
|
||||
7.500 slw
|
||||
n 3000 4200 m 6600 4200 l 6600 6600 l 3000 6600 l
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
n 3000 4200 m
|
||||
4800 3000 l gs col0 s gr
|
||||
% Polyline
|
||||
n 6600 4200 m
|
||||
8400 3000 l gs col0 s gr
|
||||
% Polyline
|
||||
n 6600 6600 m
|
||||
8400 5400 l gs col0 s gr
|
||||
% Polyline
|
||||
n 4800 3000 m
|
||||
8400 3000 l gs col0 s gr
|
||||
% Polyline
|
||||
n 8400 3000 m
|
||||
8400 5400 l gs col0 s gr
|
||||
% Polyline
|
||||
15.000 slw
|
||||
[15 68] 68 sd
|
||||
n 4800 3000 m
|
||||
4800 5400 l gs col0 s gr [] 0 sd
|
||||
% Polyline
|
||||
[15 68] 68 sd
|
||||
n 4800 5400 m
|
||||
8400 5400 l gs col0 s gr [] 0 sd
|
||||
% Polyline
|
||||
7.500 slw
|
||||
gs clippath
|
||||
2129 5716 m 2095 5666 l 1969 5750 l 2086 5709 l 2002 5800 l cp
|
||||
eoclip
|
||||
n 300 6900 m
|
||||
2100 5700 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 2002 5800 m 2086 5709 l 1969 5750 l col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
1230 5010 m 1170 5010 l 1170 5162 l 1200 5042 l 1230 5162 l cp
|
||||
eoclip
|
||||
n 1200 7200 m
|
||||
1200 5025 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 1230 5162 m 1200 5042 l 1170 5162 l col0 s
|
||||
% Polyline
|
||||
gs clippath
|
||||
2415 6330 m 2415 6270 l 2263 6270 l 2383 6300 l 2263 6330 l cp
|
||||
eoclip
|
||||
n 225 6300 m
|
||||
2400 6300 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
n 2263 6330 m 2383 6300 l 2263 6270 l col0 s
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
6900 4350 m
|
||||
gs 1 -1 sc (6) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
2700 6900 m
|
||||
gs 1 -1 sc (0) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
6900 6900 m
|
||||
gs 1 -1 sc (1) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
4950 5250 m
|
||||
gs 1 -1 sc (3) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
2700 4350 m
|
||||
gs 1 -1 sc (4) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
4500 3000 m
|
||||
gs 1 -1 sc (5) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
8550 3000 m
|
||||
gs 1 -1 sc (7) col0 sh gr
|
||||
/Times-Roman ff 450.00 scf sf
|
||||
8550 5250 m
|
||||
gs 1 -1 sc (2) col0 sh gr
|
||||
/Times-Italic ff 360.00 scf sf
|
||||
1800 5700 m
|
||||
gs 1 -1 sc (y) col0 sh gr
|
||||
/Times-Italic ff 360.00 scf sf
|
||||
2175 6600 m
|
||||
gs 1 -1 sc (x) col0 sh gr
|
||||
/Times-Italic ff 360.00 scf sf
|
||||
900 5175 m
|
||||
gs 1 -1 sc (z) col0 sh gr
|
||||
% Polyline
|
||||
15.000 slw
|
||||
[15 68] 68 sd
|
||||
n 3000 6600 m
|
||||
4800 5400 l gs col0 s gr [] 0 sd
|
||||
$F2psEnd
|
||||
rs
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
|
|
@ -0,0 +1,257 @@
|
|||
\begin{ccRefClass}{Aff_transformation_2<R>}
|
||||
|
||||
\ccInclude{CGAL/Aff_transformation_2.h}
|
||||
|
||||
\ccDefinition
|
||||
The class \ccRefName\ represents two-dimensioanl affine transformations.
|
||||
The general form of an affine transformation is based on homogeneous
|
||||
representation of points. Thereby all transformations can be realized by
|
||||
matrix multiplication.
|
||||
|
||||
Since the general form is based on the homogeneous representation, a
|
||||
transformation matrix multiplication by a scalar does not change
|
||||
the represented transformation. Therefore, any transformation represented
|
||||
by a matrix with rational entries can be represented by a
|
||||
transformation matrix with integer entries as well by multiplying
|
||||
the matrix with the common denominator of the rational entries.
|
||||
Hence it is sufficient to have number type \ccStyle{R::RT} for the entries
|
||||
of an affine transformation.
|
||||
|
||||
{\cgal} offers several specialized affine transformations.
|
||||
Different constructors are provided to create them.
|
||||
They are parameterized with a symbolic name to
|
||||
denote the transformation type, followed by additional parameters.
|
||||
The symbolic name tags solve ambiguities in the function
|
||||
overloading and they make the code more readable, i.e.\ what type
|
||||
of transformation is created.
|
||||
|
||||
Since two-dimensional points have three
|
||||
homogeneous coordinates we have a $3\times 3$ matrix ($m_{ij}$).
|
||||
Following C-style, the indices start at zero.
|
||||
|
||||
If the homogeneous representations are normalized such that the
|
||||
homogenizing coordinate is 1, then the upper left $2\times 2$ matrix realizes
|
||||
linear transformations and in the matrix form of a translation, the
|
||||
translation vector $(v_0,$ $v_1,$ $1)$ appears in the last column of the
|
||||
matrix. In the normalized case, entry $hw$ is always 1.
|
||||
Entries $m_{20}$ and $m_{21}$ are always zero and therefore do not appear in
|
||||
the constructors.
|
||||
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{t}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(const Identity_transformation& );}
|
||||
{introduces an identity transformation.}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(const Translation,
|
||||
const Vector_2<R> &v);}
|
||||
{introduces a translation by a vector $v$.}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(const Rotation,
|
||||
const Direction_2<R> &d,
|
||||
const R::RT &num,
|
||||
const R::RT &den = RT(1));}
|
||||
{approximates the rotation over the angle indicated by direction
|
||||
$d$, such that the differences between the sines and cosines
|
||||
of the rotation given by d and the approximating rotation
|
||||
are at most $num/den$ each.
|
||||
\ccPrecond $num/den>0$. }
|
||||
|
||||
\ccConstructor{Aff_transformation_2(const Rotation,
|
||||
const R::RT &sine_rho,
|
||||
const R::RT &cosine_rho,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a rotation by the angle \ccStyle{rho}.
|
||||
\ccPrecond
|
||||
\ccTexHtml{$\mbox{\it sine\_rho}^2 + \mbox{\it cosine\_rho}^2 == hw^2$}{<MATH><i>sine_rho</i><SUP>2</SUP> + <i>cosine_rho</i><SUP>2</SUP> ==
|
||||
<i>hw</i><SUP>2</SUP></MATH>}.}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(const Scaling,
|
||||
const R::RT &s,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a scaling by a scale factor $s/hw$.}
|
||||
|
||||
\newsavebox{\arrtwo}
|
||||
\newsavebox{\arrlintwo}
|
||||
\newsavebox{\transvectwo}
|
||||
|
||||
\savebox{\arrtwo}{\small $\left(\begin{array}{ccc}
|
||||
m_{00} & m_{01} & m_{02}\\
|
||||
m_{10} & m_{11} & m_{12}\\
|
||||
0 & 0 & hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\savebox{\arrlintwo}{\small $\left(\begin{array}{cc}
|
||||
m_{00} & m_{01}\\
|
||||
m_{10} & m_{11}
|
||||
\end{array}\right)$}
|
||||
|
||||
\savebox{\transvectwo}{\small $\left(\begin{array}{c}
|
||||
m_{02}\\
|
||||
m_{12}
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(
|
||||
const R::RT &m00, const R::RT &m01, const R::RT &m02,
|
||||
const R::RT &m10, const R::RT &m11, const R::RT &m12,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a general affine transformation in the
|
||||
\ccTexHtml{$3 \times 3$ matrix form \usebox{\arrtwo}.}%
|
||||
{3x3 matrix <IMG ALIGN=CENTER SRC=arrtwo.gif> .}
|
||||
The sub-matrix \ccTexHtml{$1\over hw$\usebox{\arrlintwo}}%
|
||||
{<MATH><i>hw</i><SUP>-1</SUP></MATH> <IMG ALIGN=CENTER
|
||||
SRC=arrlintwo.gif>} contains the scaling and rotation
|
||||
information, the vector \ccTexHtml{$1\over hw$
|
||||
\usebox{\transvectwo}}{<MATH><i>hw</i><SUP>-1</SUP></MATH>
|
||||
<IMG ALIGN=CENTER SRC=transvectwo.gif>}
|
||||
contains the translational part of the transformation.}
|
||||
|
||||
\savebox{\arrtwo}{\small $\left(\begin{array}{ccc}
|
||||
m_{00} & m_{01} & 0\\
|
||||
m_{10} & m_{11} & 0\\
|
||||
0 & 0 & hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccConstructor{Aff_transformation_2(
|
||||
const R::RT &m00, const R::RT &m01,
|
||||
const R::RT &m10, const R::RT &m11,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a general linear transformation
|
||||
\ccTexHtml{\usebox{\arrtwo},}{<IMG ALIGN=CENTER SRC=arrtwo2.gif> ,}
|
||||
i.e.\ there is no translational part.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
|
||||
The main thing to do with transformations is to apply them on
|
||||
geometric objects. Each class \ccStyle{Class_2<R>} representing
|
||||
a geometric object has a member function:
|
||||
|
||||
\ccStyle{Class_2<R> transform(Aff_transformation_2<R> t)}.
|
||||
|
||||
|
||||
The transformation classes provide a member function \ccStyle{transform()}
|
||||
for points, vectors, directions, and lines:
|
||||
|
||||
\ccMethod{Point_2<R> transform(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Vector_2<R> transform(const Vector_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Direction_2<R> transform(const Direction_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Line_2<R> transform(const Line_2<R> &p) const;}
|
||||
{}
|
||||
|
||||
\cgal\ provides function operators for these member functions:
|
||||
|
||||
\ccMethod{Point_2<R> operator()(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Vector_2<R> operator()(const Vector_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Direction_2<R> operator()(const Direction_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Line_2<R> operator()(const Line_2<R> &p) const;}
|
||||
{}
|
||||
|
||||
\ccHeading{Miscellaneous}
|
||||
|
||||
\ccMethod{Aff_transformation_2<R> operator*(const Aff_transformation_2<R> &s) const;}{composes two affine transformations.}
|
||||
|
||||
\ccMethod{Aff_transformation_2<R> inverse() const;}
|
||||
{gives the inverse transformation.}
|
||||
|
||||
%\ccMethod{Aff_transformation_2<R> transpose() const;}
|
||||
% {returns the affine transformation defined by transposing
|
||||
% the linear transformation in \ccVar\ and setting the
|
||||
% translational part to zero.}
|
||||
|
||||
\ccMethod{bool is_even() const;}
|
||||
{returns \ccStyle{true}, if the transformation is not reflecting,
|
||||
i.e.\ the determinant of the involved linear transformation is
|
||||
non-negative.}
|
||||
|
||||
\ccMethod{bool is_odd() const;}
|
||||
{returns \ccStyle{true}, if the transformation is reflecting.}
|
||||
|
||||
|
||||
%\ccMethod{Aff_transformation_2<R> general_form() const;}
|
||||
% {returns the affine transformation in matrix form.}
|
||||
|
||||
The matrix entries of a matrix representation of a
|
||||
\ccStyle{Aff_transformation_2<R>}
|
||||
can be accessed trough the following member functions:
|
||||
|
||||
\ccMethod{FT cartesian(int i, int j) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{FT m(int i, int j) const;}
|
||||
{returns entry $m_{ij}$ in a matrix representation in which $m_{22}$ is 1.}
|
||||
|
||||
\ccMethod{RT homogeneous(int i, int j) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{RT hm(int i, int j) const;}
|
||||
{returns entry $m_{ij}$ in some fixed matrix representation.}
|
||||
|
||||
|
||||
For affine transformations no I/O operators are defined.
|
||||
|
||||
%\ccImplementation
|
||||
%Depending on the constructor we have different internal representations.
|
||||
%This approach uses less memory and the transformation can be applied
|
||||
%faster.
|
||||
%
|
||||
%Affine transformations offer no \ccStyle{transform()} member function
|
||||
%for complex objects because they are defined in terms of points vectors and
|
||||
%directions. As the internal representation of a complex object
|
||||
%is private the transformation code should go there.
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Identity_transformation},
|
||||
\ccc{Rotation},
|
||||
\ccc{Scaling},
|
||||
\ccc{Translation} \\
|
||||
\ccc{rational_rotation_approximation}
|
||||
|
||||
\ccExample
|
||||
|
||||
\begin{cprog}
|
||||
typedef Cartesian<double> RepClass;
|
||||
typedef Aff_transformation_2<RepClass> Transformation;
|
||||
typedef Point_2<RepClass> Point;
|
||||
typedef Vector_2<RepClass> Vector;
|
||||
typedef Direction_2<RepClass> Direction;
|
||||
|
||||
Transformation rotate(ROTATION, sin(pi), cos(pi));
|
||||
Transformation rational_rotate(ROTATION,Direction(1,1), 1, 100);
|
||||
Transformation translate(TRANSLATION, Vector(-2, 0));
|
||||
Transformation scale(SCALING, 3);
|
||||
|
||||
Point q(0, 1);
|
||||
q = rational_rotate(q);
|
||||
|
||||
Point p(1, 1);
|
||||
|
||||
p = rotate(p);
|
||||
|
||||
p = translate(p);
|
||||
|
||||
p = scale(p);
|
||||
\end{cprog}
|
||||
|
||||
The same would have been achieved with
|
||||
|
||||
\begin{cprog}
|
||||
|
||||
Transformation transform = scale * (translate * rotate);
|
||||
p = transform(Point(1.0, 1.0));
|
||||
\end{cprog}
|
||||
\end{ccRefClass}
|
||||
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
\begin{ccRefClass}{Aff_transformation_3<R>}
|
||||
\ccInclude{CGAL/Aff_transformation_3.h}
|
||||
|
||||
\ccDefinition
|
||||
The class \ccRefName\ represents three-dimensioanl affine transformations.
|
||||
The general form of an affine transformation is based on homogeneous
|
||||
representation of points. Thereby all transformations can be realized by
|
||||
matrix multiplication.
|
||||
|
||||
Since the general form is based on the homogeneous representation, a
|
||||
transformation matrix multiplication by a scalar does not change
|
||||
the represented transformation. Therefore, any transformation represented
|
||||
by a matrix with rational entries can be represented by a
|
||||
transformation matrix with integer entries as well by multiplying
|
||||
the matrix with the common denominator of the rational entries.
|
||||
Hence it is sufficient to have number type \ccStyle{R::RT} for the entries
|
||||
of an affine transformation.
|
||||
|
||||
{\cgal} offers several specialized affine transformations.
|
||||
Different constructors are provided to create them.
|
||||
They are parameterized with a symbolic name to
|
||||
denote the transformation type, followed by additional parameters.
|
||||
The symbolic name tags solve ambiguities in the function
|
||||
overloading and they make the code more readable, i.e.\ what type
|
||||
of transformation is created.
|
||||
|
||||
In three-dimensional space we have a $4\times 4$ matrix ($m_{ij}$).
|
||||
Entries $m_{30}$, $m_{31}$, and $m_{32}$ are always zero and
|
||||
therefore do not appear in the constructors.
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{t}
|
||||
|
||||
\ccConstructor{Aff_transformation_3(const Identity_transformation& );}
|
||||
{introduces an identity transformation.}
|
||||
|
||||
|
||||
\ccConstructor{Aff_transformation_3(const Translation,
|
||||
const Vector_3<R> &v);}
|
||||
{introduces a translation by a vector $v$.}
|
||||
|
||||
\ccConstructor{Aff_transformation_3(const Scaling,
|
||||
const R::RT &s,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a scaling by a scale factor $s/hw$.}
|
||||
|
||||
\newsavebox{\arrthree}
|
||||
\newsavebox{\arrlinthree}
|
||||
\newsavebox{\transvecthree}
|
||||
|
||||
\savebox{\arrthree}{\small $\left(\begin{array}{cccc}
|
||||
m_{00} & m_{01} & m_{02} & m_{03}\\
|
||||
m_{10} & m_{11} & m_{12} & m_{13}\\
|
||||
m_{20} & m_{21} & m_{22} & m_{23}\\
|
||||
0 & 0 & 0 & hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\savebox{\arrlinthree}{\small $\left(\begin{array}{ccc}
|
||||
m_{00} & m_{01} & m_{02}\\
|
||||
m_{10} & m_{11} & m_{12}\\
|
||||
m_{20} & m_{21} & m_{22}\\
|
||||
\end{array}\right)$}
|
||||
|
||||
\savebox{\transvecthree}{\small $\left(\begin{array}{c}
|
||||
m_{03}\\
|
||||
m_{13}\\
|
||||
m_{23}
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccConstructor{Aff_transformation_3(
|
||||
const R::RT &m00, const R::RT &m01, const R::RT &m02, const R::RT &m03,
|
||||
const R::RT &m10, const R::RT &m11, const R::RT &m12, const R::RT &m13,
|
||||
const R::RT &m20, const R::RT &m21, const R::RT &m22, const R::RT &m23,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a general affine transformation of the matrix
|
||||
form \ccTexHtml{\usebox{\arrthree}.}{<IMG ALIGN=CENTER
|
||||
SRC=arrthree.gif> .} The part \ccTexHtml{$1\over hw$
|
||||
\usebox{\arrlinthree}}{<MATH><i>hw</i><SUP>-1</SUP></MATH>
|
||||
<IMG ALIGN=CENTER SRC=arrlinthree.gif>}
|
||||
defines the scaling and rotational part of the transformation,
|
||||
while the vector \ccTexHtml{$1\over hw$\usebox{\transvecthree}}%
|
||||
{<MATH><i>hw</i><SUP>-1</SUP></MATH> <IMG ALIGN=CENTER
|
||||
SRC=transvecthree.gif>} contains the translational part.}
|
||||
|
||||
\savebox{\arrthree}{\small $\left(\begin{array}{cccc}
|
||||
m_{00} & m_{01} & m_{02} & 0\\
|
||||
m_{10} & m_{11} & m_{12} & 0\\
|
||||
m_{20} & m_{21} & m_{22} & 0\\
|
||||
0 & 0 & 0 &hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccConstructor{Aff_transformation_3(
|
||||
const R::RT &m00, const R::RT &m01, const R::RT& m02,
|
||||
const R::RT &m10, const R::RT &m11, const R::RT& m12,
|
||||
const R::RT &m20, const R::RT &m21, const R::RT& m22,
|
||||
const R::RT &hw = RT(1));}
|
||||
{introduces a general linear transformation of the
|
||||
matrix form \ccTexHtml{\usebox{\arrthree},}{<IMG ALIGN=CENTER
|
||||
SRC=arrthree2.gif> ,} i.e.\ an affine transformation without
|
||||
translational part.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
|
||||
Each class \ccStyle{Class_3<R>} representing
|
||||
a geometric object in 3D has a member function:
|
||||
|
||||
\ccStyle{Class_3<R> transform(Aff_transformation_3<R> t)}.
|
||||
|
||||
|
||||
The transformation classes provide a member function \ccStyle{transform()}
|
||||
for points, vectors, directions, and planes:
|
||||
|
||||
\ccMethod{Point_3<R> transform(const Point_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Vector_3<R> transform(const Vector_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Direction_3<R> transform(const Direction_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Plane_3<R> transform(const Plane_3<R> &p) const;}
|
||||
{}
|
||||
|
||||
\cgal\ provides four function operators for these member functions:
|
||||
|
||||
\ccMethod{Point_3<R> operator()(const Point_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Vector_3<R> operator()(const Vector_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Direction_3<R> operator()(const Direction_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{Plane_3<R> operator()(const Plane_3<R> &p) const;}
|
||||
{}
|
||||
|
||||
|
||||
\ccMethod{Aff_transformation_3<R>
|
||||
operator*(const Aff_transformation_3<R> &s) const;}
|
||||
{composes two affine transformations.}
|
||||
|
||||
\ccMethod{Aff_transformation_3<R> inverse() const;}
|
||||
{gives the inverse transformation.}
|
||||
|
||||
%\ccMethod{Aff_transformation_3<R> transpose() const;}
|
||||
% {returns the affine transformation defined by transposing
|
||||
% the linear transformation in \ccVar\ and setting the
|
||||
% translational part to zero.}
|
||||
|
||||
\ccMethod{bool is_even() const;}
|
||||
{returns \ccStyle{true}, if the transformation is not reflecting,
|
||||
i.e.\ the determinant of the involved linear transformation is
|
||||
non-negative.}
|
||||
|
||||
\ccMethod{bool is_odd() const;}
|
||||
{returns \ccStyle{true}, if the transformation is reflecting.}
|
||||
|
||||
|
||||
%\ccMethod{Aff_transformation_3<R> general_form() const;}
|
||||
% {returns the affine transformation in matrix form.}
|
||||
|
||||
The matrix entries of a matrix representation of a \ccStyle{Aff_transformation_3<R>}
|
||||
can be accessed trough the following member functions:
|
||||
|
||||
\ccMethod{FT cartesian(int i, int j) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{FT m(int i, int j) const;}
|
||||
{returns entry $m_{ij}$ in a matrix representation in which $m_{33}$ is 1.}
|
||||
|
||||
\ccMethod{RT homogeneous(int i, int j) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{RT hm(int i, int j) const;}
|
||||
{returns entry $m_{ij}$ in some fixed matrix representation.}
|
||||
|
||||
For affine transformations no I/O operators are defined.
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Identity_transformation},
|
||||
\ccc{Scaling},
|
||||
\ccc{Translation}
|
||||
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
\begin{ccRefClass} {Bbox_2}
|
||||
\ccInclude{CGAL/Bbox_2.h}
|
||||
|
||||
\ccDefinition An object \ccStyle{b} of the class \ccRefName\ is a bounding
|
||||
box in the two-dimensional Euclidean plane $\E^2$. This class is not templated.
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{b}
|
||||
|
||||
\ccConstructor{Bbox_2(double x_min, double y_min,
|
||||
double x_max, double y_max);}
|
||||
{introduces a bounding box \ccVar\ with lower left corner at
|
||||
\ccStyle{(xmin, ymin)} and with upper right corner at
|
||||
\ccStyle{(xmax, ymax)}.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
|
||||
\ccHidden\ccMethod{bool operator==(const Bbox_2 &c) const;}
|
||||
{Test for equality.}
|
||||
|
||||
\ccHidden\ccMethod{bool operator!=(const Bbox_2 &q) const;}
|
||||
{Test for inequality.}
|
||||
|
||||
\ccMethod{double xmin() const;}{}
|
||||
\ccGlue
|
||||
\ccMethod{double ymin() const;}{}
|
||||
\ccGlue
|
||||
\ccMethod{double xmax() const;}{}
|
||||
\ccGlue
|
||||
\ccMethod{double ymax() const;}{}
|
||||
|
||||
\ccMethod{Bbox_2 operator+(const Bbox_2 &c) const;}
|
||||
{returns a bounding box of \ccVar\ and \ccStyle{c}.}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{do_overlap}
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
\begin{ccRefClass} {Bbox_3}
|
||||
\ccInclude{CGAL/Bbox_3.h}
|
||||
|
||||
\ccDefinition An object \ccStyle{b} of the class \ccRefName\ is a bounding
|
||||
box in the three-dimensional Euclidean space $\E^3$.
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{b}
|
||||
|
||||
|
||||
\ccConstructor{Bbox_3(double x_min, double y_min, double z_min,
|
||||
double x_max, double y_max, double z_max);}
|
||||
{introduces a bounding box \ccVar\ with lexicographically
|
||||
smallest corner point at \ccStyle{(xmin, ymin, zmin)}
|
||||
lexicographically largest corner point at
|
||||
\ccStyle{(xmax, ymax, zmax)}.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
|
||||
\ccHidden\ccMethod{bool operator==(const Bbox_3 &c) const;}
|
||||
{Test for equality.}
|
||||
|
||||
\ccHidden\ccMethod{bool operator!=(const Bbox_3 &q) const;}
|
||||
{Test for inequality.}
|
||||
|
||||
\ccMethod{double xmin() const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{double ymin() const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{double zmin() const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{double xmax() const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{double ymax() const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{double zmax() const;}
|
||||
{}
|
||||
|
||||
|
||||
\ccMethod{Bbox_3 operator+(const Bbox_3 &c) const;}
|
||||
{returns a bounding box of \ccVar\ and \ccStyle{c}.}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{do_overlap}
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
\begin{ccRefEnum}{Bounded_side}
|
||||
\ccInclude{CGAL/enum.h}
|
||||
|
||||
\ccGlobalEnum{enum Bounded_side {ON_UNBOUNDED_SIDE, ON_BOUNDARY, ON_BOUNDED_SIDE};
|
||||
}
|
||||
|
||||
\ccRefLabel{ON_UNBOUNDED_SIDE} %% add label for table-of-contents in intro.tex.
|
||||
\ccRefLabel{ON_BOUNDED_SIDE} %% add label for table-of-contents in intro.tex.
|
||||
\ccRefLabel{ON_BOUNDARY} %% add label for table-of-contents in intro.tex.
|
||||
\ccHtmlCrossLink{ON_UNBOUNDED_SIDE} %% add further rules for cross referencing links
|
||||
\ccHtmlCrossLink{ON_BOUNDED_SIDE} %% add further rules for cross referencing links
|
||||
\ccHtmlCrossLink{ON_BOUNDARY} %% add further rules for cross referencing links
|
||||
\ccHtmlIndexC[enum_tags]{ON_UNBOUNDED_SIDE} %% add further index entries
|
||||
\ccHtmlIndexC[enum_tags]{ON_BOUNDED_SIDE} %% add further index entries
|
||||
\ccHtmlIndexC[enum_tags]{ON_BOUNDARY} %% add further index entries
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Has_on_bounded_side_2},
|
||||
\ccc{Kernel::Has_on_bounded_side_3}
|
||||
\end{ccRefEnum}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
\begin{ccRefConstant}{CLOCKWISE}
|
||||
\ccGlobalVariable{const Orientation CLOCKWISE = NEGATIVE;}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{COUNTERCLOCKWISE},
|
||||
\ccc{COLLINEAR}
|
||||
\end{ccRefConstant}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
\begin{ccRefConstant}{COLLINEAR}
|
||||
\ccGlobalVariable{const Orientation COLLINEAR = ZERO;}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{CLOCKWISE},
|
||||
\ccc{COUNTERCLOCKWISE}
|
||||
\end{ccRefConstant}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
\begin{ccRefConstant}{COPLANAR}
|
||||
\ccGlobalVariable{const Orientation COPLANAR = ZERO;}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{NEGATIVE},
|
||||
\ccc{POSITIVE}
|
||||
\end{ccRefConstant}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
\begin{ccRefConstant}{COUNTERCLOCKWISE}
|
||||
\ccGlobalVariable{const Orientation COUNTERCLOCKWISE = POSITIVE;}
|
||||
\end{ccRefConstant}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
\begin{ccRefClass}{Cartesian<FieldNumberType>}
|
||||
\ccInclude{CGAL/Cartesian.h}
|
||||
|
||||
\ccDefinition
|
||||
A model for a \ccc{Kernel} using Cartesian coordinates to represent the
|
||||
geometric objects.
|
||||
|
||||
\ccRefines
|
||||
\ccc{Kernel}
|
||||
|
||||
\ccTypes
|
||||
\ccTypedef{typedef FieldNumberType FT;}{}
|
||||
\ccGlue
|
||||
\ccTypedef{typedef FieldNumberType RT;}{}
|
||||
|
||||
\ccImplementation
|
||||
This model of a kernel uses reference counting.
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Simple_cartesian<FieldNumberType>}, \ccc{Homogeneous<RingNumberType>}
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
\begin{ccRefClass}{Circle_2<R>}
|
||||
\ccInclude{CGAL/Circle_2.h}
|
||||
|
||||
\ccDefinition
|
||||
|
||||
An object of type \ccRefName\ is a circle in the
|
||||
two-dimensional Euclidean plane $\E^2$. The circle is oriented, i.e.\
|
||||
its boundary has clockwise or counterclockwise \ccHtmlNoLinksFrom{orientation}. The
|
||||
boundary splits $\E^2$ into a positive and a negative side, where the
|
||||
positive side is to the left of the boundary. The boundary further
|
||||
splits $\E^2$ into a bounded and an unbounded side. Note that the
|
||||
circle can be degenerated, i.e.\ the squared radius may be zero.
|
||||
|
||||
|
||||
% -----------------------------------------------------------------------------
|
||||
\ccCreation
|
||||
\ccCreationVariable{c}
|
||||
|
||||
\ccHidden
|
||||
\ccConstructor{ Circle_2( );}{
|
||||
introduces an uninitialized variable \ccVar\ of type
|
||||
\ccClassTemplateName.}
|
||||
|
||||
\ccConstructor{ Circle_2( Point_2<R> const& center,
|
||||
R::FT const& squared_radius,
|
||||
Orientation const& ori = COUNTERCLOCKWISE);}{
|
||||
introduces a variable \ccVar\ of type \ccClassTemplateName.
|
||||
It is initialized to the circle with center \ccc{center},
|
||||
squared radius \ccc{squared_radius} and \ccHtmlNoLinksFrom{orientation}
|
||||
\ccc{ori}.
|
||||
\ccPrecond \ccc{ori} $\neq$ \ccc{COLLINEAR}, and further,
|
||||
\ccc{squared_radius} $\geq$ 0.}
|
||||
|
||||
\ccConstructor{ Circle_2( Point_2<R> const& p,
|
||||
Point_2<R> const& q,
|
||||
Point_2<R> const& r);}{
|
||||
introduces a variable \ccVar\ of type \ccClassTemplateName.
|
||||
It is initialized to the unique circle which passes through
|
||||
the points \ccc{p}, \ccc{q} and \ccc{r}. The \ccHtmlNoLinksFrom{orientation} of
|
||||
the circle is the \ccHtmlNoLinksFrom{orientation} of the point triple \ccc{p},
|
||||
\ccc{q}, \ccc{r}.
|
||||
\ccPrecond \ccc{p}, \ccc{q}, and \ccc{r} are not collinear.}
|
||||
|
||||
\ccConstructor{ Circle_2( Point_2<R> const& p,
|
||||
Point_2<R> const& q,
|
||||
Orientation const& ori
|
||||
= COUNTERCLOCKWISE);}{
|
||||
introduces a variable \ccVar\ of type \ccClassTemplateName.
|
||||
It is initialized to the circle with diameter
|
||||
$\ccTexHtml{\overline{pq}}{pq}$
|
||||
and \ccHtmlNoLinksFrom{orientation} \ccc{ori}.
|
||||
\ccPrecond \ccc{ori} $\neq$ \ccc{COLLINEAR}.}
|
||||
|
||||
\ccConstructor{ Circle_2( Point_2<R> const& center,
|
||||
Orientation const& ori
|
||||
= COUNTERCLOCKWISE);}{
|
||||
introduces a variable \ccVar\ of type \ccClassTemplateName.
|
||||
It is initialized to the circle with center \ccc{center}, squared
|
||||
radius zero and \ccHtmlNoLinksFrom{orientation} \ccc{ori}.
|
||||
\ccPrecond \ccc{ori} $\neq$ \ccc{COLLINEAR}.
|
||||
\ccPostcond \ccVar.\ccc{is_degenerate()} = \ccc{true}.}
|
||||
|
||||
\ccHidden
|
||||
\ccConstructor{ Circle_2( Circle_2<R> const&);}{
|
||||
copy constructor.}
|
||||
|
||||
\ccHidden
|
||||
\ccMemberFunction{ Circle_2<R>& operator = ( Circle_2<R> const&);}{
|
||||
assignment.}
|
||||
|
||||
% -----------------------------------------------------------------------------
|
||||
\ccAccessFunctions
|
||||
|
||||
\ccMemberFunction{Point_2<R> const& center( ) const;}{
|
||||
returns the center of \ccVar.}
|
||||
\ccGlue
|
||||
\ccMemberFunction{ R::FT const& squared_radius( ) const;}{
|
||||
returns the squared radius of \ccVar.}
|
||||
\ccGlue
|
||||
\ccMemberFunction{ Orientation const& orientation( ) const;}{
|
||||
returns the \ccHtmlNoLinksFrom{orientation} of \ccVar.}
|
||||
|
||||
% -----------------------------------------------------------------------------
|
||||
|
||||
\ccHidden\ccMemberFunction{ bool operator == ( Circle_2<R> const& circle2) const;}{
|
||||
returns \ccc{true}, iff \ccVar\ and \ccc{circle2} are equal,
|
||||
i.e.\ if they have the same center, same squared radius and
|
||||
same \ccHtmlNoLinksFrom{orientation}.}
|
||||
|
||||
\ccHidden\ccMemberFunction{ bool operator != ( Circle_2<R> const& circle2) const;}{
|
||||
returns \ccc{true}, iff \ccVar\ and \ccc{circle2} are not equal.}
|
||||
|
||||
% -----------------------------------------------------------------------------
|
||||
\ccPredicates
|
||||
|
||||
\ccMemberFunction{ bool is_degenerate( ) const;}{
|
||||
returns \ccc{true}, iff \ccVar\ is degenerate, i.e.\
|
||||
if \ccVar\ has squared radius zero.}
|
||||
|
||||
\ccMemberFunction{ Oriented_side
|
||||
oriented_side( Point_2<R> const& p) const;}{
|
||||
returns either the constant \ccc{ON_ORIENTED_BOUNDARY},
|
||||
\ccc{ON_POSITIVE_SIDE}, or \ccc{ON_NEGATIVE_SIDE},
|
||||
iff \ccc{p} lies on the boundary, properly on the
|
||||
positive side, or properly on the negative side
|
||||
of \ccVar, resp.}
|
||||
|
||||
\ccMemberFunction{ Bounded_side
|
||||
bounded_side( Point_2<R> const& p) const;}{
|
||||
returns \ccc{ON_BOUNDED_SIDE},
|
||||
\ccc{ON_BOUNDARY}, or \ccc{ON_UNBOUNDED_SIDE}
|
||||
iff \ccc{p} lies properly inside, on the boundary, or properly
|
||||
outside of \ccVar, resp.}
|
||||
|
||||
%\ccMemberFunction{ bool has_on_positive_side( Point const& p) const;}{
|
||||
% returns \ccc{true}, iff \ccc{p} lies properly on the
|
||||
% positive side of \ccVar.}
|
||||
%
|
||||
%\ccMemberFunction{ bool has_on_negative_side( Point const& p) const;}{
|
||||
% returns \ccc{true}, iff \ccc{p} lies properly on the
|
||||
% negative side of \ccVar.}
|
||||
%
|
||||
%\ccMemberFunction{ bool has_on_boundary( Point const& p) const;}{
|
||||
% returns \ccc{true}, iff \ccc{p} lies on the boundary
|
||||
% of \ccVar.}
|
||||
%
|
||||
%\ccMemberFunction{ bool has_on_bounded_side( Point const& p) const;}{
|
||||
% returns \ccc{true}, iff \ccc{p} lies properly inside \ccVar.}
|
||||
%
|
||||
%\ccMemberFunction{ bool
|
||||
% has_on_unbounded_side( Point const& p) const;}{
|
||||
% returns \ccc{true}, iff \ccc{p} lies properly outside of \ccVar.}
|
||||
\ccMethod{bool has_on_positive_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_negative_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_boundary(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_bounded_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_unbounded_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
|
||||
% -----------------------------------------------------------------------------
|
||||
\ccHeading{Miscellaneous}
|
||||
|
||||
\ccMemberFunction{ Circle_2<R> opposite() const;}{
|
||||
returns the circle with the same center and squared radius as
|
||||
\ccVar\, but with \ccHtmlNoLinksFrom{opposite} \ccHtmlNoLinksFrom{orientation}.}
|
||||
|
||||
|
||||
\ccMemberFunction{ Circle_2<R> orthogonal_transform(
|
||||
Aff_transformation_2<R> const& at) const;}{
|
||||
returns the circle obtained by applying $at$ on \ccVar.
|
||||
\ccPrecond \ccc{at} is an orthogonal transformation.}
|
||||
|
||||
\ccMemberFunction{ Bbox_2 bbox() const;}{
|
||||
returns a bounding box containing \ccVar.}
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
\begin{ccRefEnum}{Comparison_result}
|
||||
\ccInclude{CGAL/enum.h}
|
||||
|
||||
\ccGlobalEnum{enum Comparison_result { SMALLER, EQUAL, LARGER };}
|
||||
|
||||
\ccRefLabel{SMALLER}
|
||||
\ccRefLabel{EQUAL}
|
||||
\ccRefLabel{LARGER}
|
||||
\ccHtmlCrossLink{SMALLER}
|
||||
\ccHtmlCrossLink{EQUAL}
|
||||
\ccHtmlCrossLink{LARGER}
|
||||
\ccHtmlIndexC[enum_tags]{SMALLER}
|
||||
\ccHtmlIndexC[enum_tags]{EQUAL}
|
||||
\ccHtmlIndexC[enum_tags]{LARGER}
|
||||
|
||||
\end{ccRefEnum}
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
\begin{ccRefConstant}{DEGENERATE}
|
||||
\ccGlobalVariable{const Orientation DEGENERATE = ZERO;}
|
||||
\end{ccRefConstant}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
\begin{ccRefClass} {Direction_2<R>}
|
||||
\ccInclude{CGAL/Direction_2.h}
|
||||
|
||||
\ccDefinition
|
||||
An object of the class \ccRefName\ is a vector in the two-dimensional
|
||||
vector space $\R^2$ where we forget about its length. They can be
|
||||
viewed as unit vectors, although there is no normalization internally,
|
||||
since this is error prone. Directions are used whenever the length of
|
||||
a vector does not matter.
|
||||
They also characterize a set of parallel oriented lines that have the same
|
||||
orientations.
|
||||
For example, you can ask for the direction
|
||||
orthogonal to an oriented plane, or the direction of an oriented line.
|
||||
Further, they can be used to indicate angles. The slope of a direction
|
||||
is \ccStyle{dy()/dx()}.
|
||||
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{d}
|
||||
|
||||
|
||||
\ccHidden \ccConstructor{Direction_2();}
|
||||
{introduces an uninitialized direction \ccVar.}
|
||||
|
||||
\ccHidden \ccConstructor{Direction_2(const Direction_2<R> &d);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccConstructor{Direction_2(const Vector_2<R> &v);}
|
||||
{introduces the direction \ccVar\ of vector $v$.}
|
||||
|
||||
\ccConstructor{Direction_2(const R::RT &x, const R::RT &y);}
|
||||
{introduces a direction \ccVar\ passing through the origin
|
||||
and the point with Cartesian coordinates $(x, y)$.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
%\ccSetTwoOfThreeColumns{5cm}{4cm}
|
||||
\ccSetThreeColumns{Direction_2<R> & }{}{\hspace*{7.8cm}}
|
||||
|
||||
\ccHidden \ccMethod{Direction_2<R> & operator=(const Direction_2<R> &e);}
|
||||
{Assignment.}
|
||||
|
||||
\ccMethod{R::RT delta(int i) const;}
|
||||
{returns values, such that \ccVar \ccc{== Direction_2<R>(delta(0),delta(1))}.
|
||||
\ccPrecond: $0 \leq i \leq 1$.}
|
||||
|
||||
\ccMethod{R::RT dx() const;}
|
||||
{returns \ccc{delta(0)}.}
|
||||
|
||||
\ccMethod{R::RT dy() const;}
|
||||
{returns \ccc{delta(1)}.}
|
||||
|
||||
There is a total order on directions. We compare the angles between the
|
||||
positive $x$-axis and the directions in counterclockwise order.
|
||||
|
||||
\ccMethod{bool operator==(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator!=(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator<(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator>(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator<=(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator>=(const Direction_2<R> &e) const;}
|
||||
{}
|
||||
|
||||
Furthermore, we have
|
||||
|
||||
\ccMethod{bool counterclockwise_in_between(const Direction_2<R> &d1,
|
||||
const Direction_2<R> &d2) const;}
|
||||
{returns true, iff \ccVar\ is not equal to \ccc{d1}, and
|
||||
while rotating counterclockwise starting at \ccc{d1},
|
||||
\ccVar\ is reached strictly before \ccc{d2} is reached.
|
||||
Note that true is returned if \ccc{d1} == \ccc{d2}, unless
|
||||
also \ccVar\ == \ccc{d1}.
|
||||
}
|
||||
|
||||
|
||||
\ccMethod{Direction_2<R> operator-() const;}
|
||||
{The direction opposite to \ccVar.}
|
||||
|
||||
\ccHeading{Miscellaneous}
|
||||
|
||||
\ccMethod{Vector_2<R> vector() const;}
|
||||
{returns a vector that has the same direction as \ccVar.}
|
||||
|
||||
\ccMethod{Direction_2<R> transform(const Aff_transformation_2<R> &t) const;}
|
||||
{returns the direction obtained by applying $t$ on \ccVar.}
|
||||
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
\begin{ccRefClass}{Direction_3<R>}
|
||||
\ccInclude{CGAL/Direction_3.h}
|
||||
|
||||
\ccDefinition
|
||||
An object of the class \ccRefName\ is a vector in the three-dimensional
|
||||
vector space $\R^3$ where we forget about their length. They can be
|
||||
viewed as unit vectors, although there is no normalization internally,
|
||||
since this is error prone. Directions are used whenever the length of
|
||||
a vector does not matter.
|
||||
They also characterize a set of parallel lines that have the same orientation
|
||||
or the direction normal to parallel planes that have the same orientation.
|
||||
For example, you can ask for the direction
|
||||
orthogonal to an oriented plane, or the direction of an oriented line.
|
||||
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{d}
|
||||
|
||||
|
||||
\ccHidden \ccConstructor{Direction_3();}
|
||||
{introduces an uninitialized direction \ccVar.}
|
||||
|
||||
\ccHidden \ccConstructor{Direction_3(const Direction_3<R> &d);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccConstructor{Direction_3(const Vector_3<R> &v);}
|
||||
{introduces a direction \ccVar\ initialised with the
|
||||
direction of vector $v$.}
|
||||
|
||||
\ccConstructor{Direction_3(const R::RT &x, const R::RT &y, const R::RT &z);}
|
||||
{introduces a direction \ccVar\ initialised with the direction
|
||||
from the origin to the point with Cartesian coordinates $(x, y, z)$.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
%\ccSetTwoOfThreeColumns{5cm}{4cm}
|
||||
\ccSetThreeColumns{Direction_3<R> & }{}{\hspace*{7.8cm}}
|
||||
|
||||
\ccHidden \ccMethod{Direction_3<R> & operator=(const Direction_3<R> &e);}
|
||||
{Assignment.}
|
||||
|
||||
\ccMethod{R::RT delta(int i) const;}
|
||||
{returns values, such that \ccVar \ccc{== Direction_2<R>(delta(0),delta(1),delta(2))}.
|
||||
\ccPrecond: $0 \leq i \leq 2$.}
|
||||
|
||||
\ccMethod{R::RT dx() const;}
|
||||
{returns \ccc{delta(0)}.}
|
||||
\ccGlue
|
||||
\ccMethod{R::RT dy() const;}
|
||||
{returns \ccc{delta(1)}.}
|
||||
\ccGlue
|
||||
\ccMethod{R::RT dz() const;}
|
||||
{returns \ccc{delta(2)}.}
|
||||
|
||||
|
||||
\ccMethod{bool operator==(const Direction_3<R> &e) const;}
|
||||
{Test for equality.}
|
||||
\ccGlue
|
||||
\ccMethod{bool operator!=(const Direction_3<R> &e) const;}
|
||||
{Test for inequality.}
|
||||
|
||||
|
||||
\ccMethod{Direction_3<R> operator-() const;}
|
||||
{The direction opposite to \ccVar.}
|
||||
|
||||
\ccMethod{Vector_3<R> vector() const;}
|
||||
{returns a vector that has the same direction as \ccVar.}
|
||||
|
||||
\ccMethod{Direction_3<R> transform(const Aff_transformation_3<R> &t) const;}
|
||||
{returns the direction obtained by applying $t$ on \ccVar.}
|
||||
|
||||
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefConcept}{FieldNumberType}
|
||||
|
||||
A number type representing field elements, i.e., must be closed under
|
||||
operations $+$, $-$, $*$ and also under division operation $/$.
|
||||
|
||||
\ccRefines
|
||||
\ccc{CopyConstructable}, \ccc{Assignable}, \ccc{RingNumberType}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel}, \ccc{R}
|
||||
\end{ccRefConcept}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
\begin{ccRefClass}{Homogeneous<RingNumberType>}
|
||||
\ccInclude{CGAL/Homogeneous.h}
|
||||
|
||||
\ccDefinition
|
||||
A model for a \ccc{Kernel} using homogeneous coordinates to represent the
|
||||
geometric objects.
|
||||
|
||||
\ccRefines
|
||||
\ccc{Kernel}
|
||||
|
||||
\ccTexHtml{\ccSetThreeColumns{typedef Quotient<RingNumberType>}{}{\hspace*{8.5cm}}}{}
|
||||
\ccTypes
|
||||
\ccTypedef{typedef Quotient<RingNumberType> FT;}{}
|
||||
\ccGlue
|
||||
\ccTypedef{typedef RingNumberType RT;}{}
|
||||
|
||||
\ccImplementation
|
||||
This model of a kernel uses reference counting.
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Cartesian<FieldNumberType>}, \ccc{Simple_cartesian<FieldNumberType>}
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefClass}{Identity_transformation}
|
||||
\ccInclude{CGAL/aff_transformation_tags.h}
|
||||
|
||||
\ccDefinition
|
||||
Tag class for affine transformations.
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Aff_transformation_2},
|
||||
\ccc{Aff_transformation_3}
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
\begin{ccRefClass} {Iso_cuboid_3<R>}
|
||||
\ccInclude{CGAL/Iso_cuboid_3.h}
|
||||
|
||||
\ccDefinition An object $s$ of the data type \ccRefName\ is a
|
||||
cuboid in the Euclidean plane $\E^3$ with sides parallel to the $x$ and
|
||||
$y$ axis of the coordinate system.
|
||||
|
||||
Although they are represented in a canonical form by only two
|
||||
vertices, namely the lexicographically smallest and largest vertex
|
||||
with respect to Cartesian $xyz$ coordinates, we provide
|
||||
functions for ``accessing'' the other vertices as well.
|
||||
|
||||
Iso-oriented cuboids and bounding boxes are quite similar. The
|
||||
difference however is that bounding boxes have always double coordinates,
|
||||
whereas the coordinate type of an iso-oriented cuboid is chosen by
|
||||
the user.
|
||||
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{c}
|
||||
|
||||
|
||||
\ccHidden \ccConstructor{Iso_cuboid_3();}
|
||||
{introduces an uninitialized variable \ccVar.}
|
||||
|
||||
\ccHidden \ccConstructor{Iso_cuboid_3(const Iso_cuboid_3<R> &u);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccConstructor{Iso_cuboid_3(const Point_3<R> &p,
|
||||
const Point_3<R> &q);}
|
||||
{introduces an iso-oriented cuboid \ccVar\ with diagonal
|
||||
opposite vertices $p$ and $q$. Note that the object is
|
||||
brought in the canonical form.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
\ccHidden \ccMethod{Iso_cuboid_3<R> & operator=(const Iso_cuboid_3<R> &q);}
|
||||
{Assignment.}
|
||||
|
||||
\ccMethod{bool operator==(const Iso_cuboid_3<R> &c2) const;}
|
||||
{Test for equality: two iso-oriented cuboid are equal, iff their
|
||||
lower left and their upper right vertices are equal.}
|
||||
|
||||
\ccMethod{bool operator!=(const Iso_cuboid_3<R> &c2) const;}
|
||||
{Test for inequality.}
|
||||
|
||||
\ccMethod{Point_3<R> vertex(int i) const;}
|
||||
{returns the i'th vertex modulo 8 of \ccVar.
|
||||
starting with the lower left vertex.}
|
||||
|
||||
\ccMethod{Point_3<R> operator[](int i) const;}
|
||||
{returns \ccStyle{vertex(i)}, as indicated in the figure below:
|
||||
\lcTex{\epsfxsize=6cm\epsffile{IsoCuboid.eps}}}
|
||||
|
||||
\begin{ccHtmlOnly}
|
||||
<center>
|
||||
<img border=0 src=./IsoCuboid.gif align=center alt="vertex order of an iso-cuboid">
|
||||
</center>
|
||||
\end{ccHtmlOnly}
|
||||
|
||||
|
||||
\ccMethod{Point_3<R> min() const;}
|
||||
{returns the smallest vertex of \ccVar\ (= \ccStyle{vertex(0)}).}
|
||||
|
||||
|
||||
\ccMethod{Point_3<R> max() const;}
|
||||
{returns the largest vertex of \ccVar\ (= \ccStyle{vertex(7)}).}
|
||||
\ccMethod{ FT xmin() const;}{returns smallest Cartesian $x$-coordinate in \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{ FT ymin() const;}{returns smallest Cartesian $y$-coordinate in \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{ FT zmin() const;}{returns smallest Cartesian $z$-coordinate in \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{ FT xmax() const;}{returns largest Cartesian $x$-coordinate in \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{ FT ymax() const;}{returns largest Cartesian $y$-coordinate in \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{ FT zmax() const;}{returns largest Cartesian $z$-coordinate in \ccVar.}
|
||||
|
||||
\ccPredicates
|
||||
|
||||
\ccMethod{bool is_degenerate() const;}
|
||||
{%the iso-oriented cuboid
|
||||
\ccVar\ is degenerate, if all vertices
|
||||
are collinear.}
|
||||
|
||||
\ccMethod{Bounded_side bounded_side(const Point_3<R> &p) const;}
|
||||
{returns either \ccStyle{ON_UNBOUNDED_SIDE},
|
||||
\ccStyle{ON_BOUNDED_SIDE}, or the constant
|
||||
\ccStyle{ON_BOUNDARY},
|
||||
depending on where point $p$ is.}
|
||||
|
||||
\ccMethod{bool has_on_boundary(const Point_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_bounded_side(const Point_3<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_unbounded_side(const Point_3<R> &p) const;}
|
||||
{}
|
||||
|
||||
\ccHeading{Miscellaneous}
|
||||
|
||||
\ccMethod{Bbox bbox() const;}
|
||||
{returns a bounding box containing \ccVar. }
|
||||
|
||||
\ccMethod{Iso_cuboid_3<R> transform(const Aff_transformation_3<R> &t) const;}
|
||||
{returns the iso-oriented cuboid obtained by applying $t$ on
|
||||
the smallest and the largest of \ccVar.
|
||||
\ccPrecond The angle at a rotation must be a multiple of $\pi/2$,
|
||||
otherwise the resulting cuboid does not have the same size.
|
||||
Note that rotating about an arbitrary angle can even result in
|
||||
a degenerate iso-oriented cuboid.}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
\begin{ccRefClass} {Iso_rectangle_2<R>}
|
||||
\ccInclude{CGAL/Iso_rectangle_2.h}
|
||||
|
||||
\ccDefinition An object $s$ of the data type \ccRefName\ is a
|
||||
rectangle in the Euclidean plane $\E^2$ with sides parallel to the $x$ and
|
||||
$y$ axis of the coordinate system.
|
||||
|
||||
Although they are represented in a canonical form by only two
|
||||
vertices, namely the lower left and the upper right vertex, we provide
|
||||
functions for ``accessing'' the other vertices as well. The vertices
|
||||
are returned in counterclockwise order.
|
||||
|
||||
Iso-oriented rectangles and bounding boxes are quite similar. The
|
||||
difference however is that bounding boxes have always double coordinates,
|
||||
whereas the coordinate type of an iso-oriented rectangle is chosen by
|
||||
the user.
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{r}
|
||||
|
||||
|
||||
\ccHidden \ccConstructor{Iso_rectangle_2();}
|
||||
{introduces an uninitialized variable \ccVar.}
|
||||
|
||||
\ccHidden \ccConstructor{Iso_rectangle_2(const Iso_rectangle_2<R> &u);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccConstructor{Iso_rectangle_2(const Point_2<R> &p,
|
||||
const Point_2<R> &q);}
|
||||
{introduces an iso-oriented rectangle \ccVar\ with diagonal
|
||||
opposite vertices $p$ and $q$. Note that the object is
|
||||
brought in the canonical form.}
|
||||
|
||||
|
||||
\ccOperations
|
||||
\ccHidden \ccMethod{Iso_rectangle_2<R> & operator=(const Iso_rectangle_2<R> &q);}
|
||||
{Assignment.}
|
||||
|
||||
\ccMethod{bool operator==(const Iso_rectangle_2<R> &r2) const;}
|
||||
{Test for equality: two iso-oriented rectangles are equal, iff their
|
||||
lower left and their upper right vertices are equal.}
|
||||
|
||||
\ccMethod{bool operator!=(const Iso_rectangle_2<R> &r2) const;}
|
||||
{Test for inequality.}
|
||||
|
||||
\ccMethod{Point_2<R> vertex(int i) const;}
|
||||
{returns the i'th vertex modulo 4 of \ccVar\ in counterclockwise order,
|
||||
starting with the lower left vertex.}
|
||||
|
||||
\ccMethod{Point_2<R> operator[](int i) const;}
|
||||
{returns \ccStyle{vertex(i)}.}
|
||||
|
||||
\ccMethod{Point_2<R> min() const;}
|
||||
{returns the lower left vertex of \ccVar\ (= \ccStyle{vertex(0)}).}
|
||||
|
||||
|
||||
\ccMethod{Point_2<R> max() const;}
|
||||
{returns the upper right vertex of \ccVar\ (= \ccStyle{vertex(2)}).}
|
||||
|
||||
\ccPredicates
|
||||
|
||||
\ccMethod{bool is_degenerate() const;}
|
||||
{%the iso-oriented rectangle
|
||||
\ccVar\ is degenerate, if all vertices
|
||||
are collinear.}
|
||||
|
||||
\ccMethod{Bounded_side bounded_side(const Point_2<R> &p) const;}
|
||||
{returns either \ccStyle{ON_UNBOUNDED_SIDE},
|
||||
\ccStyle{ON_BOUNDED_SIDE}, or the constant
|
||||
\ccStyle{ON_BOUNDARY},
|
||||
depending on where point $p$ is.}
|
||||
|
||||
\ccMethod{bool has_on_boundary(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_bounded_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
\ccGlue
|
||||
\ccMethod{bool has_on_unbounded_side(const Point_2<R> &p) const;}
|
||||
{}
|
||||
|
||||
\ccHeading{Miscellaneous}
|
||||
|
||||
\ccMethod{Bbox bbox() const;}
|
||||
{returns a bounding box containing \ccVar. }
|
||||
|
||||
\ccMethod{Iso_rectangle_2<R> transform(const Aff_transformation_2<R> &t) const;}
|
||||
{returns the iso-oriented rectangle obtained by applying $t$ on
|
||||
the lower left and the upper right corner of \ccVar.
|
||||
\ccPrecond The angle at a rotation must be a multiple of $\pi/2$,
|
||||
otherwise the resulting rectangle does not have the same side length.
|
||||
Note that rotating about an arbitrary angle can even result in
|
||||
a degenerate iso-oriented rectangle.}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
@ -0,0 +1,661 @@
|
|||
\begin{ccRefConcept}{Kernel}
|
||||
The concept of a {\em kernel} is defined by a set of requirements on
|
||||
the provision of certain types and access member functions to create
|
||||
objects of these types. The types are function object classes to be used
|
||||
within the algorithms and data structures in the basic library of \cgal.
|
||||
This allows you to use any model of a kernel as a traits class in
|
||||
the \cgal\ algorithms and data structures, unless they require types
|
||||
beyond those provided by a kernel.
|
||||
|
||||
A kernel subsumes the concepts of {\em two-dimensional kernel},
|
||||
{\em three-dimensional kernel}, and {\em $d$-dimensional kernel}.
|
||||
|
||||
A kernel provides types, construction objects, and generalized predicates.
|
||||
The former replace constructors of the kernel classes and constructive procedures
|
||||
in the kernel. There are also function objects replacing operators, especially
|
||||
for equality testing.
|
||||
|
||||
\ccCreationVariable{kernel}
|
||||
|
||||
\ccTypes
|
||||
|
||||
\ccNestedType{FT}{a number type that is a model for \ccc{FieldNumberType}}
|
||||
\ccGlue
|
||||
\ccNestedType{RT}{a number type that is a model for \ccc{RingNumberType}}
|
||||
|
||||
\ccHeading{Two-dimensional Kernel}
|
||||
|
||||
\ccHeading{Geometric Objects}
|
||||
|
||||
\ccNestedType{Point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Vector_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Direction_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Ray_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Segment_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Triangle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Iso_rectangle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Aff_transformation_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Circle_2}{}
|
||||
|
||||
\ccHeading{Constructors}
|
||||
|
||||
\ccNestedType{Construct_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_vector_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_segment_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_ray_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_circle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_triangle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_aff_transformation_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_point_on_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_second_point_on_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_source_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_target_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_min_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_max_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_of_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_of_ray_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_supporting_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_perpendicular_vector_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_perpendicular_direction_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_perpendicular_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_midpoint_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_circumcenter_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_bisector_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_segment_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_ray_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_triangle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_circle_2}{}
|
||||
|
||||
If the result type is not determined, there is no \ccc{Construct_} prefix:
|
||||
|
||||
\ccNestedType{Transform_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Intersect_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Assign_2}{}
|
||||
|
||||
If the result type is a number type, the prefix is \ccc{Compute_}:
|
||||
|
||||
\ccNestedType{Compute_y_at_x_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compute_squared_length_2}{}
|
||||
|
||||
\ccHeading{Generalized Predicates}
|
||||
|
||||
\ccNestedType{Equal_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_x_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_y_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_xy_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_x_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_y_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_xy_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_x_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_x_at_y_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_y_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_xy_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_y_at_x_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_distance_to_point_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_signed_distance_to_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_rotate_ccw_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Leftturn_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Left_of_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Orientation_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Side_of_oriented_circle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Side_of_bounded_circle_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Is_horizontal_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Is_vertical_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_has_on_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_bounded_side_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_unbounded_side_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_boundary_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_positive_side_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_negative_side_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Oriented_side_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Are_ordered_along_line_2 }{}
|
||||
\ccGlue
|
||||
\ccNestedType{Are_strictly_ordered_along_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_are_ordered_along_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_are_strictly_ordered_along_line_2}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Counterclockwise_in_between_2}{}
|
||||
|
||||
\ccHeading{Three-dimensional Kernel}
|
||||
|
||||
\ccHeading{Geometric Objects}
|
||||
|
||||
\ccNestedType{Point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Vector_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Direction_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Iso_cuboid_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Ray_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Sphere_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Segment_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Plane_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Triangle_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Tetrahedron_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Aff_transformation_3}{}
|
||||
|
||||
\ccHeading{Constructors}
|
||||
|
||||
\ccNestedType{Construct_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_vector_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_plane_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_iso_cuboid_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_ray_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_sphere_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_segment_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_triangle_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_tetrahedron_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_aff_transformation_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_point_on_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_second_point_on_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_source_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_target_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_min_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_max_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_of_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_direction_of_ray_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_supporting_plane_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_perpendicular_plane_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_perpendicular_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_midpoint_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_segment_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_ray_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Construct_opposite_plane_3}{}
|
||||
|
||||
If the result type is not determined, there is no \ccc{Construct_} prefix:
|
||||
|
||||
\ccNestedType{Transform_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Intersect_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Assign_3}{}
|
||||
|
||||
If the result type is a number type, the prefix is \ccc{Compute_}:
|
||||
|
||||
\ccNestedType{Compute_squared_length_3}{}
|
||||
|
||||
\ccHeading{Generalized Predicates}
|
||||
|
||||
\ccNestedType{Equal_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_x_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_y_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_z_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_xy_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Equal_xyz_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_x_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_y_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_z_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_xy_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_xyz_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_x_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_y_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_z_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_xy_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Compare_xyz_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Less_distance_to_point_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Coplanar_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Orientation_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Side_of_oriented_sphere_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Side_of_bounded_sphere_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Is_degenerate_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_bounded_side_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_unbounded_side_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_boundary_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_positive_side_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Has_on_negative_side_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Oriented_side_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Are_ordered_along_line_3 }{}
|
||||
\ccGlue
|
||||
\ccNestedType{Are_strictly_ordered_along_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_are_ordered_along_line_3}{}
|
||||
\ccGlue
|
||||
\ccNestedType{Collinear_are_strictly_ordered_along_line_3}{}
|
||||
|
||||
|
||||
\ccHeading{d-dimensional Kernel}
|
||||
|
||||
\ccHeading{Geometric Objects}
|
||||
|
||||
\ccNestedType{Point_d}{}
|
||||
|
||||
\ccOperations
|
||||
|
||||
The following member functions return function objects of the types listed above.
|
||||
The name of the access function is the name of the type returned with an
|
||||
\ccc{_object} suffix.
|
||||
|
||||
\ccTexHtml{\ccSetThreeColumns{Kernel::Are_strictly_ordered_along_line}{}{\hspace*{4.5cm}}}{}
|
||||
|
||||
\setlength{\ccAdditionalReturnSkip}{-\parskip}
|
||||
|
||||
\def\ccTagRmEigenClassName{\ccFalse}
|
||||
\ccMemberFunction{Kernel::Construct_point_2 construct_point_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_vector_2 construct_vector_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_direction_2 construct_direction_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_segment_2 construct_segment_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_line_2 construct_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_ray_2 construct_ray_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_circle_2 construct_circle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_triangle_2 construct_triangle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_iso_rectangle_2 construct_iso_rectangle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_aff_transformation_2 construct_aff_transformation_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_point_on_2 construct_point_on_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_second_point_on_2 construct_second_point_on_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_source_point_2 construct_source_point_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_target_point_2 construct_target_point_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_min_point_2 construct_min_point_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_max_point_2 construct_max_point_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_direction_of_line_2 construct_direction_of_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_direction_of_ray_2 construct_direction_of_ray_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_supporting_line_2 construct_supporting_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_perpendicular_vector_2 construct_perpendicular_vector_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_perpendicular_direction_2 construct_perpendicular_direction_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_perpendicular_line_2 construct_perpendicular_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_midpoint_2 construct_midpoint_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_circumcenter_2 construct_circumcenter_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_bisector_2 construct_bisector_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_segment_2 construct_opposite_segment_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_ray_2 construct_opposite_ray_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_line_2 construct_opposite_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_triangle_2 construct_opposite_triangle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_circle_2 construct_opposite_circle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Transform_2 transform_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Assign_2 assign_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Intersect_2 intersect_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compute_y_at_x_2 compute_y_at_x_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compute_squared_length_2 compute_squared_length_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_2 equal_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_x_2 equal_x_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_y_2 equal_y_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_xy_2 equal_xy_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_x_2 less_x_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_y_2 less_y_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_xy_2 less_xy_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_yx_2 less_yx_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_x_2 compare_x_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_y_2 compare_y_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_xy_2 compare_xy_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_y_at_x_2 compare_y_at_x_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_x_at_y_2 compare_x_at_y_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_distance_to_point_2 less_distance_to_point_2_object(const Kernel::Point_2& p) const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_signed_distance_to_line_2 less_signed_distance_to_line_2_object(const Kernel::Point_2& p, const Kernel::Point_2& q) const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_rotate_ccw_2 less_rotate_ccw_2_object(const Kernel::Point_2& p) const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Counterclockwise_in_between_2 counterclockwise_in_between_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Leftturn_2 leftturn_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Left_of_line_2 left_of_line_2_object(const Kernel::Point_2& p, const Kernel::Point_2& q) const ;}{}
|
||||
\ccGlue
|
||||
%\ccMemberFunction{Kernel::Right_of_line_2 right_of_line_2_object(const Kernel::Point_2& p, const Kernel::Point_2& q) const ;}{}
|
||||
%\ccGlue
|
||||
%\ccMemberFunction{Kernel::Left_of_line_2 left_of_vertical_2_object(const Kernel::Point_2& p) const ;}{}
|
||||
%\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_2 collinear_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Orientation_2 orientation_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Side_of_oriented_circle_2 side_of_oriented_circle_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Side_of_bounded_circle_2 side_of_bounded_circle_2_object() const;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Is_horizontal_2 is_horizontal_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Is_vertical_2 is_vertical_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Is_degenerate_2 is_degenerate_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_2 has_on_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_has_on_2 collinear_has_on_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_bounded_side_2 has_on_bounded_side_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_unbounded_side_2 has_on_unbounded_side_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_boundary_2 has_on_boundary_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_positive_side_2 has_on_positive_side_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_negative_side_2 has_on_negative_side_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Oriented_side_2 oriented_side_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Are_ordered_along_line_2 are_ordered_along_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Are_strictly_ordered_along_line_2 are_strictly_ordered_along_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_are_ordered_along_line_2 collinear_are_ordered_along_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_are_strictly_ordered_along_line_2 collinear_are_strictly_ordered_along_line_2_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_point_3 construct_point_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_vector_3 construct_vector_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_direction_3 construct_direction_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_iso_cuboid_3 construct_iso_cuboid_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_segment_3 construct_segment_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_sphere_3 construct_sphere_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_plane_3 construct_plane_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_line_3 construct_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_ray_3 construct_ray_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_triangle_3 construct_triangle_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_tetrahedron_3 construct_tetrahedron_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_iso_cuboid_3 construct_iso_cuboid_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_aff_transformation_3 construct_aff_transformation_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_point_on_3 construct_point_on_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_second_point_on_3 construct_second_point_on_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_midpoint_3 construct_midpoint_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_circumcenter_3 construct_circumcenter_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_segment_3 construct_opposite_segment_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_ray_3 construct_opposite_ray_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_opposite_line_3 construct_opposite_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_supporting_plane_3 construct_supporting_plane_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Transform_3 transform_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Assign_3 assign_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Intersect_3 intersect_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compute_squared_length_3 compute_squared_length_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_3 equal_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_x_3 equal_x_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_y_3 equal_y_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_z_3 equal_z_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_xy_3 equal_xy_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Equal_xyz_3 equal_xyz_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_x_3 less_x_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_y_3 less_y_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_z_3 less_z_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_xy_3 less_xy_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_xyz_3 less_xyz_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_x_3 compare_x_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_y_3 compare_y_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_z_3 compare_z_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_xy_3 compare_xy_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Compare_xyz_3 compare_xyz_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Less_distance_to_point_3 less_distance_to_point_3_object(const Kernel::Point_3& p) const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_3 collinear_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Coplanar_3 coplanar_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Orientation_3 orientation_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Is_degenerate_3 is_degenerate_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_3 has_on_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_bounded_side_3 has_on_bounded_side_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_unbounded_side_3 has_on_unbounded_side_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_boundary_3 has_on_boundary_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_positive_side_3 has_on_positive_side_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Has_on_negative_side_3 has_on_negative_side_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Oriented_side_3 oriented_side_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Are_ordered_along_line_3 are_ordered_along_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Are_strictly_ordered_along_line_3 are_strictly_ordered_along_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_are_ordered_along_line_3 collinear_are_ordered_along_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Collinear_are_strictly_ordered_along_line_3 collinear_are_strictly_ordered_along_line_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Side_of_oriented_sphere_3 side_of_oriented_sphere_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Side_of_bounded_sphere_3 side_of_bounded_sphere_3_object() const ;}{}
|
||||
\ccGlue
|
||||
\ccMemberFunction{Kernel::Construct_point_d construct_point_d_object() const ;}{}
|
||||
|
||||
\def\ccTagRmEigenClassName{\ccTrue}
|
||||
\setlength{\ccAdditionalReturnSkip}{0pt}
|
||||
|
||||
\ccHasModels
|
||||
|
||||
\ccc{Cartesian<FieldNumberType>}, \ccc{Homogeneous<RingNumberType>},
|
||||
\ccc{Simple_cartesian<FieldNumberType>}
|
||||
\end{ccRefConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefConcept}{Kernel::Aff_transformation_2}
|
||||
\ccDefinition
|
||||
A type representing affine transformations in two dimensions.
|
||||
|
||||
\ccRefines
|
||||
\ccc{CopyConstructable},
|
||||
\ccc{Assignable}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Construct_aff_transformation_2}
|
||||
\end{ccRefConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefConcept}{Kernel::Aff_transformation_3}
|
||||
\ccDefinition
|
||||
A type representing affine transformations in three dimensions.
|
||||
|
||||
\ccRefines
|
||||
\ccc{CopyConstructable},
|
||||
\ccc{Assignable}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Construct_aff_transformation_3}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Are_ordered_along_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{returns \ccStyle{true}, iff the three points are collinear and
|
||||
\ccStyle{q} lies between \ccStyle{p} and \ccStyle{r}.
|
||||
Note that \ccStyle{true} is returned, if \ccStyle{q==p} or
|
||||
\ccStyle{q==r}.}
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Are_ordered_along_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r);}
|
||||
{returns \ccStyle{true}, iff the three points are collinear and
|
||||
\ccStyle{q} lies between \ccStyle{p} and \ccStyle{r}.
|
||||
Note that \ccStyle{true} is returned, if \ccStyle{q==p} or
|
||||
\ccStyle{q==r}.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Are_strictly_ordered_along_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{returns \ccStyle{true}, iff the three points are collinear and
|
||||
\ccStyle{q} lies strictly between \ccStyle{p} and \ccStyle{r}.
|
||||
Note that \ccStyle{false} is returned, if \ccStyle{q==p} or
|
||||
\ccStyle{q==r}.}
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Are_strictly_ordered_along_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r);}
|
||||
{returns \ccStyle{true}, iff the three points are collinear and
|
||||
\ccStyle{q} lies strictly between \ccStyle{p} and \ccStyle{r}.
|
||||
Note that \ccStyle{false} is returned, if \ccStyle{q==p} or
|
||||
\ccStyle{q==r}.}
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Assign_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{
|
||||
template <class T>
|
||||
bool operator()(T& t, const Kernel::Object_2&o);}
|
||||
{assigns \ccStyle{o} to \ccStyle{c} if \ccStyle{o}
|
||||
was constructed from an object of type \ccStyle{T}.
|
||||
Returns \ccc{true}, if the assignment was possible.}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Object_2}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Assign_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{
|
||||
template <class T>
|
||||
bool operator()(T& t, const Kernel::Object_3&o);}
|
||||
{assigns \ccStyle{o} to \ccStyle{c} if \ccStyle{o}
|
||||
was constructed from an object of type \ccStyle{T}.
|
||||
Returns \ccc{true}, if the assignment was possible.}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Object_3}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefConcept}{Kernel::Circle_2}
|
||||
A type representing circles in two dimensions.
|
||||
|
||||
\ccRefines
|
||||
\ccc{CopyConstructable},
|
||||
\ccc{Assignable}
|
||||
|
||||
\ccSeeAlso
|
||||
\ccc{Kernel::Construct_circle_2}
|
||||
\end{ccRefConcept}
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{returns \ccStyle{true}, if $p$, $q$, and $r$ are collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r);}
|
||||
{returns \ccStyle{true}, if $p$, $q$, and $r$ are collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_are_ordered_along_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{returns \ccStyle{true}, iff \ccStyle{q} lies between \ccStyle{p}
|
||||
and \ccStyle{r}. \ccPrecond \ccStyle{p, q} and \ccStyle{r} are
|
||||
collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_are_ordered_along_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r);}
|
||||
{returns \ccStyle{true}, iff \ccStyle{q} lies between \ccStyle{p}
|
||||
and \ccStyle{r}. \ccPrecond \ccStyle{p, q} and \ccStyle{r} are
|
||||
collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_are_strictly_ordered_along_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{returns \ccStyle{true}, iff \ccStyle{q} lies strictly between
|
||||
\ccStyle{p} and \ccStyle{r}. \ccPrecond \ccStyle{p, q} and
|
||||
\ccStyle{r} are collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_are_strictly_ordered_along_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r);}
|
||||
{returns \ccStyle{true}, iff \ccStyle{q} lies strictly between
|
||||
\ccStyle{p} and \ccStyle{r}. \ccPrecond \ccStyle{p, q} and
|
||||
\ccStyle{r} are collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_has_on_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Ray_2& r,
|
||||
const Kernel::Point_2&p);}
|
||||
{checks if point $p$ is on $r$.
|
||||
\ccPrecond{$p$ is on the supporting line of $r$.}}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Segment_2& s,
|
||||
const Kernel::Point_2&p);}
|
||||
{checks if point $p$ is on $s$.
|
||||
\ccPrecond{$p$ is on the supporting line of $s$.}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Collinear_has_on_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Ray_3& r,
|
||||
const Kernel::Point_3&p);}
|
||||
{checks if point $p$ is on $r$.
|
||||
\ccPrecond{$p$ is on the supporting line of $r$.}}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Segment_3& s,
|
||||
const Kernel::Point_3&p);}
|
||||
{checks if point $p$ is on $s$.
|
||||
\ccPrecond{$p$ is on the supporting line of $s$.}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_x_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q);}
|
||||
{compares the Cartesian $x$-coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q}}
|
||||
|
||||
\begin{ccTexOnly}
|
||||
\begin{figure}[h]
|
||||
\centerline{\Ipe{compare1.ipe}}
|
||||
\caption{Comparison of the $x$ or $y$-coordinates of the (implicitly
|
||||
given) points in the boxes.\label{fig-compare12}}
|
||||
\end{figure}
|
||||
\end{ccTexOnly}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2);}
|
||||
{compares the $x$-coordinates of $p$ and the \ccHtmlNoLinksFrom{intersection}
|
||||
of lines $l1$ and $l2$%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare12} (a))}{, see (a) in the figure
|
||||
below}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{compares the $x$-coordinates of the \ccHtmlNoLinksFrom{intersection} of line $l$
|
||||
with line $h1$ and with line $h2$%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare12} (b))}{, see (b) in the figure
|
||||
below}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{compares the $x$-coordinates of the \ccHtmlNoLinksFrom{intersection} of lines $l1$
|
||||
and $l2$ and the \ccHtmlNoLinksFrom{intersection} of lines $h1$ and $h2$%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare12} (c))}{, see (c) in the figure
|
||||
below}.}
|
||||
|
||||
\begin{ccHtmlOnly}
|
||||
<img border=0 src=./compare1.gif align=center alt="Comparison of the x
|
||||
or y coordinates of the (implicitly given) points in the boxes">
|
||||
\end{ccHtmlOnly}
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_x_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q);}
|
||||
{Compares the Cartesian $x$-coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_x_at_y_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Point_2 &p,
|
||||
const Line_2 &h);}
|
||||
{compares the $x$-coordinates of $p$ and the horizontal projection
|
||||
of \ccStyle{p} on \ccStyle{h}.}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &h);}
|
||||
{compares the $x$-coordinates of $p$ and the horizontal projection
|
||||
of \ccStyle{p} on \ccStyle{h}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{This function compares the $x$-coordinates of the horizontal projection
|
||||
of \ccStyle{p} on \ccStyle{h1} and on \ccStyle{h2}.}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h);}
|
||||
{Let $p$ be the \ccHtmlNoLinksFrom{intersection} of lines $l1$ and $l2$.
|
||||
This function compares the $x$-coordinates of $p$ and
|
||||
the horizontal projection of \ccStyle{p} on \ccStyle{h}.}
|
||||
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{Let $p$ be the \ccHtmlNoLinksFrom{intersection} of lines $l1$ and $l2$. This function
|
||||
compares the $x$-coordinates of the horizontal projection of \ccStyle{p} on
|
||||
\ccStyle{h1} and on \ccStyle{h2}.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_xy_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q);}
|
||||
{Compares the Cartesian coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q} lexicographically in $xy$ order: first
|
||||
$x$-coordinates are compared, if they are equal, $y$-coordinates
|
||||
are compared.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_xy_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q);}
|
||||
{Compares the Cartesian coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q} lexicographically in $xy$ order: first
|
||||
$x$-coordinates are compared, if they are equal, $y$-coordinates
|
||||
are compared.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_xyz_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q);}
|
||||
{Compares the Cartesian coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q} lexicographically in $xy$ order: first
|
||||
$x$-coordinates are compared, if they are equal, $y$-coordinates
|
||||
are compared. If they are equal, $z$-coordinates are compared.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_y_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q);}
|
||||
{Compares the Cartesian $y$-coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q}}
|
||||
|
||||
\begin{ccHtmlOnly}
|
||||
<img border=0 src=./compare1.gif align=center alt="Comparison of the x
|
||||
or y coordinates of the (implicitly given) points in the boxes">
|
||||
\end{ccHtmlOnly}
|
||||
|
||||
\begin{ccTexOnly}
|
||||
\begin{figure}[h]
|
||||
\centerline{\Ipe{compare1.ipe}}
|
||||
\caption{Comparison of the $x$ or $y$-coordinates of the (implicitly
|
||||
given) points in the boxes.\label{fig-compare14}}
|
||||
\end{figure}
|
||||
\end{ccTexOnly}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2);}
|
||||
{compares the $y$-coordinates of $p$ and the
|
||||
\ccHtmlNoLinksFrom{intersection} of lines
|
||||
$l1$ and $l2$%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare14} (a))}{, see (a) in the figure
|
||||
above}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{compares the $y$-coordinates of the \ccHtmlNoLinksFrom{intersection} of line $l$
|
||||
with line $h1$ and with line $h2$%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare14} (b))}{, see (b) in the figure
|
||||
above}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{compares the $y$-coordinates of the \ccHtmlNoLinksFrom{intersection} of lines $l1$
|
||||
and $l2$ and the \ccHtmlNoLinksFrom{intersection} of lines $h1$ and $h2$
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare14} (c))}{, see (c) in the figure
|
||||
above}.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_y_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q);}
|
||||
{Compares the Cartesian $y$-coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_y_at_x_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &h);}
|
||||
{compares the $y$-coordinates of $p$ and the vertical projection
|
||||
of \ccStyle{p} on \ccStyle{h}%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare22} (d))}{, see (d) in the figure
|
||||
below}.}
|
||||
|
||||
\begin{ccTexOnly}
|
||||
\begin{figure}[h]
|
||||
\centerline{\Ipe{compare2.ipe}}
|
||||
\caption{Comparison of the $y$-coordinates of the (implicitly given)
|
||||
points in the boxes, at an $x$-coordinate. The $x$-coordinate
|
||||
is either given explicitly (disc) or implicitly (circle).
|
||||
\label{fig-compare22}}
|
||||
\end{figure}
|
||||
\end{ccTexOnly}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &h);}
|
||||
{compares the $y$-coordinates of $p$ and the vertical projection
|
||||
of \ccStyle{p} on \ccStyle{h}%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare2} (d))}{, see (d) in the figure
|
||||
below}.}
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_2 &p,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{This function compares the $y$-coordinates of the vertical projection
|
||||
of \ccStyle{p} on \ccStyle{h1} and on \ccStyle{h2}%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare2} (e))}{, see (e) in the figure
|
||||
below}.}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h);}
|
||||
{Let $p$ be the \ccHtmlNoLinksFrom{intersection} of lines $l1$ and $l2$.
|
||||
This function compares the $y$-coordinates of $p$ and
|
||||
the vertical projection of \ccStyle{p} on \ccStyle{h}%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare2} (f))}{, see (f) in the figure
|
||||
below}.}
|
||||
|
||||
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Line_2 &l1,
|
||||
const Kernel::Line_2 &l2,
|
||||
const Kernel::Line_2 &h1,
|
||||
const Kernel::Line_2 &h2);}
|
||||
{Let $p$ be the \ccHtmlNoLinksFrom{intersection} of lines $l1$ and $l2$. This function
|
||||
compares the $y$-coordinates of the vertical projection of \ccStyle{p} on
|
||||
\ccStyle{h1} and on \ccStyle{h2}%
|
||||
\ccTexHtml{ (Figure~\ref{fig-compare2} (g))}{, see (g) in the figure
|
||||
below}.}
|
||||
|
||||
\begin{ccHtmlOnly}
|
||||
<img border=0 src=./compare2.gif align=center alt="Comparison of y at x">
|
||||
\end{ccHtmlOnly}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compare_z_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Comparison_result operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q);}
|
||||
{Compares the Cartesian $z$-coordinates of points \ccStyle{p} and
|
||||
\ccStyle{q}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compute_squared_length_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::FT operator()(const Kernel::Segment_2& s);}
|
||||
{returns the squared length of $s$. }
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compute_squared_length_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::FT operator()(const Kernel::Segment_3& s);}
|
||||
{returns the squared length of $s$. }
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compute_x_at_y_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::FT operator()(const Kernel::Line_2& l,
|
||||
const Kernel::FT &y) const;}
|
||||
{returns the $x$-coordinate of the point at $l$ with
|
||||
given $y$-coordinate.
|
||||
\ccPrecond $l$ is not vertical.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Compute_y_at_x_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::FT operator()(const Kernel::Line_2& l,
|
||||
const Kernel::FT &x) const;}
|
||||
{returns the $y$-coordinate of the point at $l$ with
|
||||
given $x$-coordinate.
|
||||
\ccPrecond $l$ is not vertical.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_aff_transformation_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Translation,
|
||||
const Kernel::Vector_2&v);}
|
||||
{introduces a translation by a vector $v$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Rotation,
|
||||
const Kernel::Direction_2&d,
|
||||
const Kernel::RT &num,
|
||||
const Kernel::RT &den = Kernel::RT(1));}
|
||||
{approximates the rotation over the angle indicated by direction
|
||||
$d$, such that the differences between the sines and cosines
|
||||
of the rotation given by d and the approximating rotation
|
||||
are at most $num/den$ each.
|
||||
\ccPrecond $num/den>0$. }
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Rotation,
|
||||
const Kernel::RT &sine_rho,
|
||||
const Kernel::RT &cosine_rho,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a rotation by the angle \ccStyle{rho}.
|
||||
\ccPrecond
|
||||
\ccTexHtml{$\mbox{\it sine\_rho}^2 + \mbox{\it cosine\_rho}^2 ==
|
||||
hw^2$}{<MATH><i>sine_rho</i><SUP>2</SUP> + <i>cosine_rho</i><SUP>2</SUP> ==
|
||||
<i>hw</i><SUP>2</SUP></MATH>}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Scaling,
|
||||
const Kernel::RT &s,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a scaling by a scale factor $s/hw$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Kernel::RT &m00, const Kernel::RT &m01, const Kernel::RT &m02,
|
||||
const Kernel::RT &m10, const Kernel::RT &m11, const Kernel::RT &m12,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a general affine transformation in the
|
||||
\ccTexHtml{$3 \times 3$ matrix form \usebox{\arrtwo}.}%
|
||||
{3x3 matrix <IMG ALIGN=CENTER SRC=arrtwo.gif> .}
|
||||
The sub-matrix \ccTexHtml{$1\over hw$\usebox{\arrlintwo}}%
|
||||
{<MATH><i>hw</i><SUP>-1</SUP></MATH> <IMG ALIGN=CENTER
|
||||
SRC=arrlintwo.gif>} contains the scaling and rotation
|
||||
information, the vector \ccTexHtml{$1\over hw$
|
||||
\usebox{\transvectwo}}{<MATH><i>hw</i><SUP>-1</SUP></MATH>
|
||||
<IMG ALIGN=CENTER SRC=transvectwo.gif>}
|
||||
contains the translational part of the transformation.}
|
||||
|
||||
\savebox{\arrtwo}{\small $\left(\begin{array}{ccc}
|
||||
m_{00} & m_{01} & 0\\
|
||||
m_{10} & m_{11} & 0\\
|
||||
0 & 0 & hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_2 operator()(
|
||||
const Kernel::RT &m00, const Kernel::RT &m01,
|
||||
const Kernel::RT &m10, const Kernel::RT &m11,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a general linear transformation
|
||||
\ccTexHtml{\usebox{\arrtwo},}{<IMG ALIGN=CENTER SRC=arrtwo2.gif> ,}
|
||||
i.e.\ there is no translational part.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_aff_transformation_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_3 operator()(const Translation,
|
||||
const Kernel::Vector_3 &v);}
|
||||
{introduces a translation by a vector $v$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_3 operator()(const Scaling,
|
||||
const Kernel::RT &s,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a scaling by a scale factor $s/hw$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_3 operator()(
|
||||
const Kernel::RT &m00, const Kernel::RT &m01, const Kernel::RT &m02, const Kernel::RT &m03,
|
||||
const Kernel::RT &m10, const Kernel::RT &m11, const Kernel::RT &m12, const Kernel::RT &m13,
|
||||
const Kernel::RT &m20, const Kernel::RT &m21, const Kernel::RT &m22, const Kernel::RT &m23,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a general affine transformation of the matrix
|
||||
form \ccTexHtml{\usebox{\arrthree}.}{<IMG ALIGN=CENTER
|
||||
SRC=arrthree.gif> .} The part \ccTexHtml{$1\over hw$
|
||||
\usebox{\arrlinthree}}{<MATH><i>hw</i><SUP>-1</SUP></MATH>
|
||||
<IMG ALIGN=CENTER SRC=arrlinthree.gif>}
|
||||
defines the scaling and rotational part of the transformation,
|
||||
while the vector \ccTexHtml{$1\over hw$\usebox{\transvecthree}}%
|
||||
{<MATH><i>hw</i><SUP>-1</SUP></MATH> <IMG ALIGN=CENTER
|
||||
SRC=transvecthree.gif>} contains the translational part.}
|
||||
|
||||
|
||||
\savebox{\arrthree}{\small $\left(\begin{array}{cccc}
|
||||
m_{00} & m_{01} & m_{02} & 0\\
|
||||
m_{10} & m_{11} & m_{12} & 0\\
|
||||
m_{20} & m_{21} & m_{22} & 0\\
|
||||
0 & 0 & 0 &hw
|
||||
\end{array}\right)$}
|
||||
|
||||
\ccMemberFunction{Kernel::Aff_transformation_3 operator()(
|
||||
const Kernel::RT &m00, const Kernel::RT &m01, const Kernel::RT& m02,
|
||||
const Kernel::RT &m10, const Kernel::RT &m11, const Kernel::RT& m12,
|
||||
const Kernel::RT &m20, const Kernel::RT &m21, const Kernel::RT& m22,
|
||||
const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a general linear transformation of the
|
||||
matrix form \ccTexHtml{\usebox{\arrthree},}{<IMG ALIGN=CENTER
|
||||
SRC=arrthree2.gif> ,} i.e.\ an affine transformation without
|
||||
translational part.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_bisector_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q );}
|
||||
{constructs the bisector of $p$ and $q$.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_circle_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( );}{
|
||||
introduces an uninitialized variable of type
|
||||
\ccClassTemplateName.}
|
||||
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( Kernel::Point_2 const& center,
|
||||
Kernel::FT const& squared_radius,
|
||||
Orientation const& orientation
|
||||
= COUNTERCLOCKWISE);}{
|
||||
introduces a variable of type \ccc{Kernel::Circle_2}.
|
||||
It is initialized to the circle with center \ccc{center},
|
||||
squared radius \ccc{squared_radius} and orientation
|
||||
\ccc{orientation}.
|
||||
\ccPrecond \ccc{orientation} $\neq$ \ccc{COLLINEAR}, and further,
|
||||
\ccc{squared_radius} $\geq$ 0.}
|
||||
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( Kernel::Point_2 const& p,
|
||||
Kernel::Point_2 const& q,
|
||||
Kernel::Point_2 const& r);}{
|
||||
introduces a variable of type \ccc{Kernel::Circle_2}.
|
||||
It is initialized to the unique circle which passes through
|
||||
the points \ccc{p}, \ccc{q} and \ccc{r}. The orientation of
|
||||
the circle is the orientation of the point triple \ccc{p},
|
||||
\ccc{q}, \ccc{r}.
|
||||
\ccPrecond \ccc{p}, \ccc{q}, and \ccc{r} are not collinear.}
|
||||
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( Kernel::Point_2 const& p,
|
||||
Kernel::Point_2 const& q,
|
||||
Orientation const& orientation
|
||||
= COUNTERCLOCKWISE);}{
|
||||
introduces a variable of type \ccc{Kernel::Circle_2}.
|
||||
It is initialized to the circle with diameter
|
||||
$\ccTexHtml{\overline{pq}}{pq}$
|
||||
and orientation \ccc{orientation}.
|
||||
\ccPrecond \ccc{orientation} $\neq$ \ccc{COLLINEAR}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( Kernel::Point_2 const& center,
|
||||
Orientation const& orientation
|
||||
= COUNTERCLOCKWISE);}{
|
||||
introduces a variable of type \ccc{Kernel::Circle_2}.
|
||||
It is initialized to the circle with center \ccc{center}, squared
|
||||
radius zero and orientation \ccc{orientation}.
|
||||
\ccPrecond \ccc{orientation} $\neq$ \ccc{COLLINEAR}.
|
||||
\ccPostcond .\ccc{is_degenerate()} = \ccc{true}.}
|
||||
|
||||
\ccHidden
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()( Kernel::Circle_2 const&);}{copy constructor.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_circumcenter_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_2&p,
|
||||
const Kernel::Point_2&q,
|
||||
const Kernel::Point_2&r);}
|
||||
{compute the center of the circle passing through the points $p$, $q$, and $r$.
|
||||
\ccPrecond $p$, $q$, and $r$ are not collinear.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_circumcenter_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{bool operator()(const Kernel::Point_3&p,
|
||||
const Kernel::Point_3&q,
|
||||
const Kernel::Point_3&r,
|
||||
const Kernel::Point_3&s);}
|
||||
{compute the center of the circle passing through the points $p$, $q$, $r$, and $s$.
|
||||
\ccPrecond $p$, $q$, $r$, and $s$ are not coplanar.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Direction_2 operator()();}
|
||||
{introduces an uninitialized direction .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Direction_2 operator()(const Kernel::Direction_2 &d);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_2 operator()(const Kernel::Vector_2 &v);}
|
||||
{introduces the direction of vector $v$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_2 operator()(const Kernel::RT &x, const Kernel::RT &y);}
|
||||
{introduces a direction passing through the origin
|
||||
and the point with Cartesian coordinates $(x, y)$.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Direction_3 operator()();}
|
||||
{introduces an uninitialized direction .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::Direction_3 &d);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::Vector_3 &v);}
|
||||
{introduces a direction initialised with the
|
||||
direction of vector $v$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::RT &x, const Kernel::RT &y, const Kernel::RT &z);}
|
||||
{introduces a direction initialised with the direction
|
||||
from the origin to the point with Cartesian coordinates $(x, y, z)$.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_of_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_2 operator()(const Kernel::Line_2&l);}
|
||||
{returns the direction of $l$.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_of_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::Line_3&l);}
|
||||
{returns the direction of $l$.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_of_ray_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_2 operator()(const Kernel::Ray_2&r);}
|
||||
{returns the direction of $r$.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_direction_of_ray_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::Ray_3&r);}
|
||||
{returns the direction of $r$.}
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_iso_cuboid_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Iso_cuboid_3 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Iso_cuboid_3 operator()(const Iso_cuboid_3<R> &u);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Iso_cuboid_3 operator()(const Point_3<R> &p,
|
||||
const Point_3<R> &q);}
|
||||
{introduces an iso-oriented cuboid with diagonal
|
||||
opposite vertices $p$ and $q$ such that $p$ is the
|
||||
lexicographically smallest point in the cuboid.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_iso_rectangle_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Iso_rectangle_2 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Iso_rectangle_2 operator()(const Iso_rectangle_2<R> &u);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Iso_rectangle_2 operator()(const Point_2<R> &p,
|
||||
const Point_2<R> &q);}
|
||||
{introduces an iso-oriented rectangle with diagonal
|
||||
opposite vertices $p$ and $q$ such that $p$ is the
|
||||
lexicographically smallest point in the rectangle.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Line_2 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Line_2 &h);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::RT &a, const Kernel::RT &b, const Kernel::RT &c);}
|
||||
{introduces a line with the line equation in Cartesian
|
||||
coordinates $ax +by +c = 0$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Point_2 &p, const Kernel::Point_2 &q);}
|
||||
{introduces a line passing through the points $p$ and $q$.
|
||||
Line is directed from $p$ to $q$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Point_2 &p, const Kernel::Direction_2&d);}
|
||||
{introduces a line passing through point $p$ with
|
||||
direction $d$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Segment_2 &s);}
|
||||
{introduces a line supporting the segment $s$,
|
||||
oriented from source to target.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Ray_2 &r);}
|
||||
{introduces a line supporting the ray $r$,
|
||||
with same orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Line_3 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Line_3 &h);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Point_3 &p, const Kernel::Point_3 &q);}
|
||||
{introduces a line passing through the points $p$ and $q$.
|
||||
Line is directed from $p$ to $q$.}
|
||||
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Point_3 &p, const Kernel::Direction_3&d);}
|
||||
{introduces a line passing through point $p$ with
|
||||
direction $d$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Segment_3 &s);}
|
||||
{returns the line supporting the segment $s$,
|
||||
oriented from source to target.}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Ray_3 &r);}
|
||||
{returns the line supporting the ray $r$, with the
|
||||
same orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_max_point_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Iso_rectangle_2& i);}
|
||||
{returns the upper right vertex of $i$).}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Segment_2& );}
|
||||
{returns the point of $s$ with lexicographically largest coordinates.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_max_point_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Segment_3& s);}
|
||||
{returns the point of $s$ with lexicographically largest coordinates.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_midpoint_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Point_2& p,
|
||||
const Kernel::Point_2& q );}
|
||||
{computes the midpoint of the segment $pq$.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_midpoint_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Point_3& p,
|
||||
const Kernel::Point_3& q );}
|
||||
{computes the midpoint of the segment $pq$.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_min_point_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Iso_rectangle_2& i);}
|
||||
{returns the lower left vertex of $i$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Segment_2& s);}
|
||||
{returns the point of $s$ with lexicographically smallest coordinates.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_min_point_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Segment_3& s);}
|
||||
{returns the point of $s$ with lexicographically smallest coordinates.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_circle_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Circle_2 operator()(const Kernel::Circle_2& c);}
|
||||
{ returns the circle with the same center and squared radius as
|
||||
$c$, but with opposite orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Line_2& l);}
|
||||
{returns the line representing the same set of points as $l$,
|
||||
but with opposite direction.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Line_3& l);}
|
||||
{returns the line representing the same set of points as $l$,
|
||||
but with opposite direction.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_plane_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Plane_3& p);}
|
||||
{returns the plane representing the same set of points as $p$,
|
||||
but with opposite orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_ray_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Ray_2 operator()(const Kernel::Ray_2& r);}
|
||||
{returns the ray with the same source as $r$, but in opposite direction.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_ray_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Ray_3 operator()(const Kernel::Ray_3& r);}
|
||||
{returns the ray with the same source as $r$, but in opposite direction.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_segment_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Segment_2 operator()(const Kernel::Segment_2& s);}
|
||||
{returns the segment representing the same set of points as $s$,
|
||||
but with opposite orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_segment_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Segment_3 operator()(const Kernel::Segment_3& s);}
|
||||
{returns the segment representing the same set of points as $s$,
|
||||
but with opposite orientation.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_opposite_triangle_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Triangle_2 operator()(const Kernel::Triangle_2& t);}
|
||||
{returns the triangle with opposite orientation to $t$
|
||||
(this flips the positive and the negative side, but
|
||||
not bounded and unbounded side).}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_direction_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Direction_3 operator()(const Kernel::Direction_2& d,
|
||||
cpnst Orientation& o);}
|
||||
{introduces a direction orthogonal to \ccc{d}. If \ccc{o} is
|
||||
\ccc{CLOCKWISE}, \ccc{d} is rotated clockwise; if \ccc{o} is
|
||||
\ccc{COUNTERCLOCKWISE}, \ccc{d} is rotated counterclockwise.
|
||||
\ccPrecond \ccc{o} is not \ccc{COLLINEAR}.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_direction_3}
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_line_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_2 operator()(const Kernel::Line_2& l,
|
||||
const Kernel::Point_2& p);}
|
||||
{returns the line perpendicular to $l$ and passing through $p$,
|
||||
where the direction is the direction of $l$ rotated
|
||||
counterclockwise by 90 degrees.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_line_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Line_3 operator()(const Kernel::Plane_3& pl,
|
||||
const Kernel::Point_3& p);}
|
||||
{returns the line that is perpendicular to \ccc{pl} and that
|
||||
passes through point \ccStyle{p}. The line is oriented from
|
||||
the negative to the positive side of \ccc{pl}}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_plane_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Line_3& l,
|
||||
const Kernel::Point_3& p);}
|
||||
{returns the plane perpendicular to $l$ passing through $p$,
|
||||
such that the normal direction of the plane coincides with the direction of
|
||||
the line.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_vector_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Vector_2 operator()(const Kernel::Vector_2& v,
|
||||
Orientation o);}
|
||||
{returns \ccc{v} rotated clockwise by 90 degrees, if $o$ is
|
||||
\ccc{CLOCKWISE}, and rotated counterclockwise otherwise.
|
||||
\ccPrecond $o$ is not \ccc{COLLINEAR}.
|
||||
}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_plane_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Plane_3 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Plane_3 &h);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::RT &a,
|
||||
const Kernel::RT &b,
|
||||
const Kernel::RT &c,
|
||||
const Kernel::RT &d);}
|
||||
{creates a plane defined by the equation
|
||||
\ccTexHtml{$a\, px +b\, py +c\, pz + d = 0$}{a px + b py + c pz + d = 0}.
|
||||
Notice that is degenerate if \ccTexHtml{$a = b = c$}{a = b = c}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Point_3 &p,
|
||||
const Kernel::Point_3 &q,
|
||||
const Kernel::Point_3 &r);}
|
||||
{creates a plane passing through the points \ccStyle{p},
|
||||
\ccStyle{q} and \ccStyle{r}. The plane is oriented such that \ccStyle{p},
|
||||
\ccStyle{q} and \ccStyle{r} are oriented in a positive sense
|
||||
(that is counterclockwise) when seen from the positive side of .
|
||||
Notice that is degenerate if the points are collinear.}
|
||||
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Point_3 &p,
|
||||
const Kernel::Direction_3&d);}
|
||||
{introduces a plane that passes through point \ccStyle{p} and
|
||||
that has as an orthogonal direction equal to \ccStyle{d}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Line_3 &l,
|
||||
const Kernel::Point_3 &p);}
|
||||
{introduces a plane that is defined through the three points
|
||||
\ccStyle{l.point(0)}, \ccStyle{l.point(1)} and \ccStyle{p}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Ray_3 &r,
|
||||
const Kernel::Point_3 &p);}
|
||||
{introduces a plane that is defined through the three points
|
||||
\ccStyle{r.point(0)}, \ccStyle{r.point(1)} and \ccStyle{p}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Plane_3 operator()(const Kernel::Segment_3 &s,
|
||||
const Kernel::Point_3 &p);}
|
||||
{introduces a plane that is defined through the three points
|
||||
\ccStyle{s.source()}, \ccStyle{s.target()} and \ccStyle{p}.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_point_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Point_2 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Point_2 &q);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Origin &ORIGIN);}
|
||||
{introduces a variable with Cartesian coordinates
|
||||
$(0,0)$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::RT &hx, const Kernel::RT &hy, const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a point initialized to $(hx/hw,hy/hw)$.
|
||||
If the third argument is not explicitly given, it defaults
|
||||
to \ccStyle{Kernel::RT(1)}.
|
||||
\ccPrecond \ccc{hw} $\neq$ \ccc{Kernel::RT(0)}. }
|
||||
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_point_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Point_3 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Point_3 &q);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Origin &ORIGIN);}
|
||||
{introduces a point with Cartesian coordinates$(0,0,0)$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::RT &hx, const Kernel::RT &hy, const Kernel::RT &hz, const Kernel::RT &hw = Kernel::RT(1));}
|
||||
{introduces a point initialized to $(hx/hw,hy/hw, hz/hw)$.
|
||||
If the third argument is not explicitly given it defaults
|
||||
to \ccStyle{Kernel::RT(1)}.
|
||||
\ccPrecond \ccc{hw} $\neq$ \ccc{Kernel::RT(0)}. }
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_point_d}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{template <class InputIterator>
|
||||
Kernel::Construct_point_d operator()(int dim, InputIterator first,
|
||||
InputIterator last);}
|
||||
{if the range \ccc{[first,last)} contains \ccc{dim} elements,
|
||||
this creates a point with Cartesian coordinates as specified by
|
||||
the range. If \ccc{[first,last)} contains \ccc{dim+1} elements,
|
||||
the range specifies the homogeneous coordinates of the point.
|
||||
\ccPrecond \ccc{dim} is nonnegative, \ccc{[first,last)} has
|
||||
\ccc{dim} or \ccc{dim+1} elements, and the value types of first
|
||||
and last are \ccc{Kernel::RT}.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_point_on_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Line_2& l,
|
||||
int i);}
|
||||
{returns an arbitrary point on \ccc{l}. It holds
|
||||
\ccStyle{point(i) == point(j)}, iff \ccStyle{i==j}.
|
||||
Furthermore, is directed from \ccStyle{point(i)}
|
||||
to \ccStyle{point(j)}, for all \ccStyle{i} $<$ \ccStyle{j}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Ray_2& r,
|
||||
int i);}
|
||||
{returns a point on \ccc{r}. \ccStyle{point(0)} is the source,
|
||||
\ccStyle{point(i)}, with $i>0$, is different from the
|
||||
source. \ccPrecond $i \geq 0$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_2 operator()(const Kernel::Segment_2& s,
|
||||
int i);}
|
||||
{returns source or target of \ccc{s}: \ccStyle{point(0)} returns
|
||||
the source of \ccc{s}, \ccStyle{point(1)} returns the target of \ccc{s}.
|
||||
The parameter \ccStyle{i} is taken modulo 2, which gives
|
||||
easy access to the other end point. }
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_point_on_3}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Line_3& l,
|
||||
int i);}
|
||||
{returns an arbitrary point on \ccc{l}. It holds
|
||||
\ccStyle{point(i) == point(j)}, iff \ccStyle{i==j}.
|
||||
Furthermore, is directed from \ccStyle{point(i)}
|
||||
to \ccStyle{point(j)}, for all \ccStyle{i} $<$ \ccStyle{j}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Plane_3& h);}
|
||||
{returns an arbitrary point on \ccc{h}.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Ray_3& r,
|
||||
int i);}
|
||||
{returns a point on \ccc{r}. \ccStyle{point(0)} is the source,
|
||||
\ccStyle{point(i)}, with $i>0$, is different from the
|
||||
source. \ccPrecond $i \geq 0$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Point_3 operator()(const Kernel::Segment_3& s,
|
||||
int i);}
|
||||
{returns source or target of \ccc{s}: \ccStyle{point(0)} returns
|
||||
the source of \ccc{s}, \ccStyle{point(1)} returns the target of \ccc{s}.
|
||||
The parameter \ccStyle{i} is taken modulo 2, which gives
|
||||
easy access to the other end point. }
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_ray_2}
|
||||
A model for this must provide:
|
||||
|
||||
\ccCreationVariable{fo}
|
||||
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Ray_2 operator()();}
|
||||
{introduces an uninitialized variable .}
|
||||
|
||||
\ccHidden \ccMemberFunction{Kernel::Ray_2 operator()(const Kernel::Ray_2 &s);}
|
||||
{copy constructor.}
|
||||
|
||||
\ccMemberFunction{Kernel::Ray_2 operator()(const Kernel::Point_2 &p, const Kernel::Point_2&q);}
|
||||
{introduces a ray
|
||||
with source $p$ and passing through point $q$.}
|
||||
|
||||
\ccMemberFunction{Kernel::Ray_2 operator()(const Kernel::Point_2 &p, const Kernel::Direction_2 &d);}
|
||||
{introduces a ray starting at source $p$ with
|
||||
direction $d$.}
|
||||
|
||||
\end{ccRefFunctionObjectConcept}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue