Initial revision

This commit is contained in:
Sylvain Pion 2001-01-02 17:00:26 +00:00
parent e249619e14
commit 1a80bc0e41
957 changed files with 88081 additions and 0 deletions

25
.gitattributes vendored
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,7 @@
\begin{ccRefConstant}{CLOCKWISE}
\ccGlobalVariable{const Orientation CLOCKWISE = NEGATIVE;}
\ccSeeAlso
\ccc{COUNTERCLOCKWISE},
\ccc{COLLINEAR}
\end{ccRefConstant}

View File

@ -0,0 +1,7 @@
\begin{ccRefConstant}{COLLINEAR}
\ccGlobalVariable{const Orientation COLLINEAR = ZERO;}
\ccSeeAlso
\ccc{CLOCKWISE},
\ccc{COUNTERCLOCKWISE}
\end{ccRefConstant}

View File

@ -0,0 +1,7 @@
\begin{ccRefConstant}{COPLANAR}
\ccGlobalVariable{const Orientation COPLANAR = ZERO;}
\ccSeeAlso
\ccc{NEGATIVE},
\ccc{POSITIVE}
\end{ccRefConstant}

View File

@ -0,0 +1,3 @@
\begin{ccRefConstant}{COUNTERCLOCKWISE}
\ccGlobalVariable{const Orientation COUNTERCLOCKWISE = POSITIVE;}
\end{ccRefConstant}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,3 @@
\begin{ccRefConstant}{DEGENERATE}
\ccGlobalVariable{const Orientation DEGENERATE = ZERO;}
\end{ccRefConstant}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,4 @@
\begin{ccRefFunctionObjectConcept}{Kernel::Construct_perpendicular_direction_3}
\ccCreationVariable{fo}
\end{ccRefFunctionObjectConcept}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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