mirror of https://github.com/CGAL/cgal
remove $$s
This commit is contained in:
parent
17f73fd851
commit
8c7d87ad57
|
|
@ -5,6 +5,10 @@
|
|||
|
||||
\def\betazero{\ccTexHtml{$\beta_0$}{β<SUB>0</SUB>}}
|
||||
\def\betaun{\ccTexHtml{$\beta_1$}{β<SUB>1</SUB>}}
|
||||
\def\betadeux{\ccTexHtml{$\beta_2$}{β<SUB>2</SUB>}}
|
||||
\def\betai{\ccTexHtml{$\beta_i$}{β<SUB>i</SUB>}}
|
||||
|
||||
\def\pmun{\ccTexHtml{$p^{-1}$}{p<SUP>-1</SUP>}}
|
||||
|
||||
% \newcommand{\orb}[1]{⟨#1⟩}
|
||||
\newcommand{\orb}[1]{\langle{}#1\rangle{}}
|
||||
|
|
@ -27,14 +31,13 @@ dimension.\footnote{A 2D combinatorial map is equivalent to a halfedge
|
|||
We denote \cell{i} for an \emph{i}-dimensional cell (for example in 3D,
|
||||
0-cells are \emph{vertices}, 1-cells are \emph{edges}, 2-cells are
|
||||
\emph{facets}, and 3-cells are \emph{volumes}). A \emph{boundary
|
||||
relation} is defined on these cells, giving for each \cell{i} $c$
|
||||
the set of \cells{(i-1)} contained in the boundary of $c$. Two cells
|
||||
$c_1$ and $c_2$ are \emph{incident} if there is a path of cells,
|
||||
relation} is defined on these cells, giving for each \cell{i} \emph{c}
|
||||
the set of \cells{(i-1)} contained in the boundary of \emph{c}. Two cells
|
||||
\emph{c1} and \emph{c2} are \emph{incident} if there is a path of cells,
|
||||
starting from the cell of biggest dimension to the other cell, such
|
||||
that each cell of the path (except the first one) belongs to the
|
||||
boundary of the previous cell in the path. Two \cells{i} $c$ and $c'$
|
||||
are \emph{adjacent} if there is an \cell{(i-1)} incident to both $c$
|
||||
and $c'$. You can see an example of a 2D object and a 3D object in
|
||||
boundary of the previous cell in the path. Two \cells{i} \emph{c3} and \emph{c4} are \emph{adjacent} if there is an \cell{(i-1)} incident to both \emph{c3}
|
||||
and \emph{c4}. You can see an example of a 2D object and a 3D object in
|
||||
Figure~\ref{fig-exemple-3Dmanifold} showing some cells of the
|
||||
subdivision and some adjacency and incidence relations.
|
||||
\begin{figure}[ht]
|
||||
|
|
@ -55,21 +58,21 @@ subdivision and some adjacency and incidence relations.
|
|||
\end{ccHtmlOnly}
|
||||
\caption{Example of subdivided objects that can be described by
|
||||
combinatorial maps. \textbf{Left}: A 2D object composed of
|
||||
three facets (2-cells), named $f_1$, $f_2$ and $f_3$, nine
|
||||
edges (1-cells) and seven vertices (0-cells). $f_1$ and
|
||||
$f_2$ are adjacent along edge $e_1$, thus $e_1$ is incident both
|
||||
to $f_1$ and $f_2$. Vertex $v_1$ is incident to edge $e_1$, thus
|
||||
$v_1$ is incident to $f_1$ and $f_2$ by transitivity.
|
||||
three facets (2-cells), named \emph{f1}, \emph{f2} and \emph{f3}, nine
|
||||
edges (1-cells) and seven vertices (0-cells). \emph{f1} and
|
||||
\emph{f2} are adjacent along edge \emph{e1}, thus \emph{e1} is incident both
|
||||
to \emph{f1} and \emph{f2}. Vertex \emph{v1} is incident to edge \emph{e1}, thus
|
||||
\emph{v1} is incident to \emph{f1} and \emph{f2} by transitivity.
|
||||
\textbf{Right}: A 3D object (only partially represented for vertices and edges)
|
||||
composed of three volumes (3-cells), named $vol_1$, $vol_2$
|
||||
and $vol_3$, twelve facets (2-cells) (there is one facet
|
||||
$f_4$ between $vol_1$ and $vol_2$, and similarly between $vol_1$
|
||||
and $vol_3$ and $vol_2$ and $vol_3$), sixteen edges (1-cells),
|
||||
and eight vertices (0-cells). $vol_1$ and $vol_2$ are adjacent
|
||||
along facet $f_4$, thus $f_4$ is incident both to $vol_1$ and
|
||||
$vol_2$. Edge $e_4$ is incident to the three facets between
|
||||
$vol_1$ and $vol_2$, $vol_1$ and $vol_3$, and $vol_2$ and
|
||||
$vol_3$. $e_4$ is also incident to the three volumes by
|
||||
composed of three volumes (3-cells), named \emph{vol1}, \emph{vol2}
|
||||
and \emph{vol3}, twelve facets (2-cells) (there is one facet
|
||||
\emph{f4} between \emph{vol1} and \emph{vol2}, and similarly between \emph{vol1}
|
||||
and \emph{vol3} and \emph{vol2} and \emph{vol3}), sixteen edges (1-cells),
|
||||
and eight vertices (0-cells). \emph{vol1} and \emph{vol2} are adjacent
|
||||
along facet \emph{f4}, thus \emph{f4} is incident both to \emph{vol1} and
|
||||
\emph{vol2}. Edge \emph{e4} is incident to the three facets between
|
||||
\emph{vol1} and \emph{vol2}, \emph{vol1} and \emph{vol3}, and \emph{vol2} and
|
||||
\emph{vol3}. \emph{e4} is also incident to the three volumes by
|
||||
transitivity.}
|
||||
\label{fig-exemple-3Dmanifold}
|
||||
\end{figure}
|
||||
|
|
@ -79,8 +82,8 @@ cells and the incidence and adjacency relations, using only one basic
|
|||
element called \emph{dart}, and a set of \emph{pointers} between these
|
||||
darts. A dart can be thought as a part of an oriented edge (1-cell),
|
||||
together with a part of incident cells of dimensions 0, 2, 3,\ldots,
|
||||
\emph{d}. When a dart $d_0$ describe a part of an \cell{i} $c$, we say that
|
||||
$d_0$ \emph{belongs} to $c$, and that $c$ \emph{contains} $d_0$. Let
|
||||
\emph{d}. When a dart \emph{d0} describe a part of an \cell{i} \emph{c}, we say that
|
||||
\emph{d0} \emph{belongs} to \emph{c}, and that \emph{c} \emph{contains} \emph{d0}. Let
|
||||
us look at the example in Figure~\ref{fig-exemple-combi-maps} showing
|
||||
the 2D and 3D combinatorial maps describing the two objects given in
|
||||
Figure~\ref{fig-exemple-3Dmanifold}.
|
||||
|
|
@ -110,7 +113,7 @@ Figure~\ref{fig-exemple-3Dmanifold}.
|
|||
\end{figure}
|
||||
|
||||
First let us start in 2D (Figure~\ref{fig-exemple-combi-maps} (Left)).
|
||||
Facet $f_1$ is described by four darts. These darts are linked
|
||||
Facet \emph{f1} is described by four darts. These darts are linked
|
||||
together with pointers. Starting from a dart and following a \betaun{} %\mbeta{1}
|
||||
pointer, we get to a dart which belongs to the same facet but to the
|
||||
next edge (1-cell, which explains the index~1 of~$\beta_1$).
|
||||
|
|
@ -118,7 +121,7 @@ Starting from any dart and following $\beta_1$ pointers, we can reach
|
|||
exactly all the darts describing the facet. Starting from a dart and
|
||||
following a $\beta_2$ pointer, we get to a dart which belongs to the
|
||||
same edge but to the neighboring facet (2-cell, which explains the
|
||||
index~$2$ of~$\beta_2$). Starting from any dart and following
|
||||
index~2 of~$\beta_2$). Starting from any dart and following
|
||||
$\beta_2$ pointers, we can reach exactly all the darts describing the
|
||||
edge (in 2D one or two darts).
|
||||
|
||||
|
|
@ -126,8 +129,8 @@ Things are slightly different for vertices. Indeed, each $\beta_i$
|
|||
points to a dart belonging to a different \cell{i}, but also to a
|
||||
different 0-cell (vertex). This is so because two linked darts have
|
||||
opposite orientations. For this reason, starting from any dart
|
||||
belonging to a vertex $v$, we have to follow $\beta_2$ then $\beta_1$
|
||||
to reach exactly the darts describing the vertex $v$. In fact, by
|
||||
belonging to a vertex \emph{v}, we have to follow $\beta_2$ then $\beta_1$
|
||||
to reach exactly the darts describing the vertex \emph{v}. In fact, by
|
||||
composing two $\beta_i$s, we always obtain a dart belonging to the
|
||||
same vertex.
|
||||
|
||||
|
|
@ -138,7 +141,7 @@ example (Figure~\ref{fig-exemple-combi-maps} (Right)). In addition to
|
|||
$\beta_1$ and $\beta_2$ of the 2D case, there is a new pointer
|
||||
$\beta_3$.
|
||||
|
||||
If we take a closer look at the central edge $e_4$ shown in
|
||||
If we take a closer look at the central edge \emph{e4} shown in
|
||||
Figure~\ref{fig-intuitive-exemple} (Left), we can see that it is
|
||||
described by six darts linked together. Starting from a dart and
|
||||
following a $\beta_3$ pointer, we get to a dart which belongs to the
|
||||
|
|
@ -148,7 +151,7 @@ a dart and following a $\beta_2$ pointer, we get to a dart which
|
|||
belongs to the same edge, to the same volume, but to the neighboring
|
||||
facet (2-cell). Starting from any of these six darts and following
|
||||
$\beta_2$ and $\beta_3$ pointers, we can reach exactly the six darts
|
||||
describing edge $e_4$.
|
||||
describing edge \emph{e4}.
|
||||
%
|
||||
% Finally, following a $\beta_1$ pointer, we get to a
|
||||
% dart which belongs to the same facet, the same volume but on the
|
||||
|
|
@ -175,9 +178,9 @@ describing edge $e_4$.
|
|||
\end{ccHtmlOnly}
|
||||
\caption{Two zooms on the 3D combinatorial map given in
|
||||
Figure~\ref{fig-exemple-combi-maps} (Right).
|
||||
\textbf{Left}:~Zoom around the central edge $e_4$ which details
|
||||
\textbf{Left}:~Zoom around the central edge \emph{e4} which details
|
||||
the six darts belonging to the edge. \textbf{Right}:~Zoom
|
||||
around the facet between volumes $vol_2$ and $vol_3$ which
|
||||
around the facet between volumes \emph{vol2} and \emph{vol3} which
|
||||
details the eight darts belonging to the facet.}
|
||||
\label{fig-intuitive-exemple}
|
||||
\end{figure}
|
||||
|
|
@ -206,26 +209,26 @@ volume.
|
|||
% this reason, starting from any dart belonging to a vertex $v$, we have
|
||||
For vertices, we have to follow $\beta_2$ then $\beta_1$, and
|
||||
$\beta_3$ then $\beta_1$ to reach exactly the darts describing the
|
||||
vertex $v$. Indeed, as in 2D, we have to compose two $\beta_i$s to
|
||||
vertex \emph{v}. Indeed, as in 2D, we have to compose two $\beta_i$s to
|
||||
obtain a dart belonging to the same vertex.
|
||||
|
||||
In some cases, the general rule that by following a $\beta_i$ we get a
|
||||
dart which belongs to the neighboring \cell{i} is not true, as for example
|
||||
for darts belonging to the boundary of the represented
|
||||
object. For example, in Figure~\ref{fig-exemple-3Dmanifold} (Left), any dart
|
||||
$d_0$ that does not belong to edge $e_1$, $e_2$ and $e_3$
|
||||
belongs to a 2-cell, and there is no neighboring facet along the edge containing $d_0$.
|
||||
\emph{d0} that does not belong to edge \emph{e1}, \emph{e2} and \emph{e3}
|
||||
belongs to a 2-cell, and there is no neighboring facet along the edge containing \emph{d0}.
|
||||
% this is the
|
||||
% case for $\beta_2$ for all the darts that does not belong to edge
|
||||
% $e_1$, $e_2$ and $e_3$.
|
||||
% Indeed, these darts belong to a 2-cell, and
|
||||
% there is no neighboring facet along the edge containing these darts.
|
||||
Another example is in Figure~\ref{fig-exemple-3Dmanifold} (Right), for
|
||||
any dart $d_0$ that belongs to facet $f_5$.
|
||||
any dart \emph{d0} that belongs to facet \emph{f5}.
|
||||
% this is the case for
|
||||
% $\beta_3$ for example for all the darts belonging to facet
|
||||
% $f_5$. Indeed, these darts
|
||||
$d_0$ belongs to volume $vol_2$, but there is no neighboring volume
|
||||
\emph{d0} belongs to volume \emph{vol2}, but there is no neighboring volume
|
||||
along this facet. The general rule is also not true for unbounded
|
||||
cells. For example if we remove a dart in
|
||||
Figure~\ref{fig-exemple-combi-maps} (Left), we obtain an unbounded
|
||||
|
|
@ -233,7 +236,7 @@ facet having a dart without next dart for $\beta_1$, and if we remove
|
|||
a facet in Figure~\ref{fig-exemple-combi-maps} (Right), we obtain an
|
||||
unbounded volume having some darts without neighboring facet for
|
||||
$\beta_2$. In such a case, there is a particular value called
|
||||
$\varnothing$ used to describe that a dart $d_0$ is not linked to
|
||||
$\varnothing$ used to describe that a dart \emph{d0} is not linked to
|
||||
another dart in dimension~\emph{i}.
|
||||
|
||||
% No it is false (case when c_i=c'_i) and we exchange also c_0...
|
||||
|
|
@ -302,20 +305,20 @@ Section~\ref{sec_definition}, and a package description is given in
|
|||
Section~\ref{sec-software-design}.
|
||||
|
||||
\subsection{Combinatorial Map and Darts}\label{ssec-combi-map-and-darts}
|
||||
A \emph{d}D combinatorial map is a set of darts $D$. A dart $d_0$ is an
|
||||
element that can be \emph{linked} with $d+1$ darts by pointers called
|
||||
$\mb{i}$, with $0 \leq i \leq d$. Dart $d_0$ is said \emph{i-free}
|
||||
when $\mb{i}(d_0)=\varnothing$. Each $\mb{i}$, for $2 \leq i \leq d$,
|
||||
is its own inverse, i.e., if dart $d_0$ is not \emph{i}-free, then
|
||||
$\mb{i}(\mb{i}(d_0))=d_0$. This is different for $\mb{0}$ and
|
||||
$\mb{1}$: $\mb{0}$ is the inverse of $\mb{1}$, i.e., if darts $d_1$
|
||||
and $d_2$ are such that $\mb{1}(d_1)=d_2$, then
|
||||
$\mb{0}(d_2)=d_1$. Given dart $d_1$, if there is no dart $d_2$ such
|
||||
that $\mb{1}(d_2)=d_1$, then $\mb{0}(d_1)=\varnothing$. $\varnothing$
|
||||
is a constant, which does not belong to the set of darts $D$ of the
|
||||
A \emph{d}D combinatorial map is a set of darts \emph{D}. A dart \emph{d0} is an
|
||||
element that can be \emph{linked} with \emph{d+1} darts by pointers called
|
||||
$\mb{i}$, with 0 $\leq$ \emph{i} $\leq$ \emph{d}. Dart \emph{d0} is said \emph{i-free}
|
||||
when $\mb{i}$(\emph{d0})=$\varnothing$. Each $\mb{i}$, for 2 $\leq$ \emph{i} $\leq$ \emph{d},
|
||||
is its own inverse, i.e., if dart \emph{d0} is not \emph{i}-free, then
|
||||
$\mb{i}$($\mb{i}$(\emph{d0}))=\emph{d0}. This is different for $\mb{0}$ and
|
||||
$\mb{1}$: $\mb{0}$ is the inverse of $\mb{1}$, i.e., if darts \emph{d1}
|
||||
and \emph{d2} are such that $\mb{1}$(\emph{d1})=\emph{d2}, then
|
||||
$\mb{0}$(\emph{d2})=\emph{d1}. Given dart \emph{d1}, if there is no dart \emph{d2} such
|
||||
that $\mb{1}$(\emph{d2})=\emph{d1}, then $\mb{0}$(\emph{d1})=$\varnothing$. $\varnothing$
|
||||
is a constant, which does not belong to the set of darts \emph{D} of the
|
||||
combinatorial map. However, by definition $\varnothing$ is linked with
|
||||
itself for all $\beta_i$s: $\forall i$, $0 \leq i \leq d$,
|
||||
$\mb{i}(\varnothing)=\varnothing$.
|
||||
itself for all $\beta_i$s: $\forall$ \emph{i}, 0 $\leq$ \emph{i} $\leq$ \emph{d},
|
||||
$\mb{i}(\varnothing)$=$\varnothing$.
|
||||
|
||||
% There is a particular value called
|
||||
% $\varnothing$ used to describe that a dart $d_0$ is not linked to
|
||||
|
|
@ -333,16 +336,16 @@ $\mb{i}(\varnothing)=\varnothing$.
|
|||
|
||||
A combinatorial map is \emph{without i-boundary} if there is no
|
||||
\emph{i}-free dart, and it is \emph{without boundary} if it is without
|
||||
\emph{i}-boundary for all dimensions $1 \leq i \leq d$.
|
||||
\emph{i}-boundary for all dimensions 1 $\leq$ \emph{i} $\leq$ \emph{d}.
|
||||
|
||||
|
||||
We show in Figure~\ref{fig-exemple-carte3d} a 3D object and the
|
||||
corresponding 3D combinatorial map. This map has 40 darts represented
|
||||
by arrows, some darts being numbered. In this combinatorial map, we
|
||||
have for example $\beta_1(1)=2$, $\beta_2(1)=10$, and
|
||||
$\beta_3(1)=5$. This combinatorial map is without 1-boundary and
|
||||
2-boundary, but has some 3-boundary, because some darts are $3$-free,
|
||||
for example $\beta_3(10)=\varnothing$ and $\beta_3(12)=\varnothing$.
|
||||
have for example $\beta_1$(1)=2, $\beta_2$(1)=10, and
|
||||
$\beta_3$(1)=5. This combinatorial map is without 1-boundary and
|
||||
2-boundary, but has some 3-boundary, because some darts are 3-free,
|
||||
for example $\beta_3$(10)=$\varnothing$ and $\beta_3$(12)=$\varnothing$.
|
||||
%
|
||||
\def\LargFig{.4\textwidth}
|
||||
\begin{figure}
|
||||
|
|
@ -361,14 +364,14 @@ for example $\beta_3(10)=\varnothing$ and $\beta_3(12)=\varnothing$.
|
|||
</CENTER>
|
||||
\end{ccHtmlOnly}
|
||||
\caption{Example of a 3D combinatorial map. \textbf{Left}:~A 3D object
|
||||
made of two volumes adjacent along facet $f_2$. \textbf{Right}:~The
|
||||
made of two volumes adjacent along facet \emph{f2}. \textbf{Right}:~The
|
||||
corresponding 3D combinatorial map. Darts are drawn with
|
||||
arrows, sometimes numbered. Two darts linked by $\beta_1$ are
|
||||
drawn consecutively (for example $\beta_1(10)=11$), and two
|
||||
drawn consecutively (for example $\beta_1$(10)=11), and two
|
||||
darts linked by $\beta_2$ are drawn parallel, in reverse
|
||||
orientations, with a little gray segment joining them (for
|
||||
example $\beta_2(1)=10$). $\beta_3$ pointers are represented by
|
||||
blue segments (for example $\beta_3(1)=5$).}
|
||||
example $\beta_2$(1)=10). $\beta_3$ pointers are represented by
|
||||
blue segments (for example $\beta_3$(1)=5).}
|
||||
\label{fig-exemple-carte3d}
|
||||
\end{figure}
|
||||
|
||||
|
|
@ -384,7 +387,7 @@ given dart, and how incidence and adjacency relations are defined in
|
|||
terms of darts.
|
||||
|
||||
The first important property of a combinatorial map is that
|
||||
each dart belongs to an \cell{i}, $\forall i$, $0 \leq i \leq d$.
|
||||
each dart belongs to an \cell{i}, $\forall$ \emph{i}, 0 $\leq$ \emph{i} $\leq$ \emph{d}.
|
||||
For example in 3D, a dart belongs to a vertex, an edge, a facet, and a
|
||||
volume. This means that a 3D combinatorial map containing an isolated
|
||||
dart contains exactly one vertex, one edge, one facet and one volume.
|
||||
|
|
@ -395,45 +398,45 @@ dart contains exactly one vertex, one edge, one facet and one volume.
|
|||
|
||||
The second important property is that cells of a combinatorial map
|
||||
correspond to specific \emph{orbits}. Given a set
|
||||
$S \subseteq \{\beta_1,\ldots,\beta_d\}$ and a dart
|
||||
$d_0$, the \emph{orbit} $\orb{S}(d_0)$ is the set of darts that can be
|
||||
reached from $d_0$ by following any combination of any $\beta_i$'s in $S$
|
||||
\emph{S} $\subseteq \{\beta_1,\ldots,\beta_d\}$ and a dart
|
||||
\emph{d0}, the \emph{orbit} $\orb{S}$(\emph{d0}) is the set of darts that can be
|
||||
reached from \emph{d0} by following any combination of any $\beta_i$'s in \emph{S}
|
||||
and their inverses (to simplify notations, we can use for example
|
||||
$\orb{\beta_1,\beta_4}(d_0)$ to denote $\orb{S}(d_0)$ with
|
||||
$S=\{\beta_1,\beta_4\}$).
|
||||
$\orb{\beta_1,\beta_4}$(\emph{d0}) to denote $\orb{S}$(\emph{d0}) with
|
||||
\emph{S}=$\{\beta_1,\beta_4\}$).
|
||||
|
||||
Given a dart $d_0$, in general, $\mb{i}(d_0)$ (with $1\leq i \leq d$)
|
||||
belongs to the same cells as $d_0$, only the \cell{i} and 0-cell are
|
||||
different. There are two exceptions: (1)~if $d_0$ is \emph{i}-free, then
|
||||
$\mb{i}(d_0)=\varnothing$; (2)~if $\mb{i}(d_0)$ belongs to the same \cell{i}
|
||||
as $d_0$ (case of multi-incidence). For example if an edge is an isolated
|
||||
loop, it is incident twice to the same vertex, then given a dart $d_0$
|
||||
belonging to this edge, $\mb{1}(d_0)$ goes to the next edge, which is in
|
||||
Given a dart \emph{d0}, in general, $\mb{i}$(\emph{d0}) (with 1$\leq$ \emph{i} $\leq$ d)
|
||||
belongs to the same cells as \emph{d0}, only the \cell{i} and 0-cell are
|
||||
different. There are two exceptions: (1)~if \emph{d0} is \emph{i}-free, then
|
||||
$\mb{i}$(\emph{d0})=$\varnothing$; (2)~if $\mb{i}$(\emph{d0}) belongs to the same \cell{i}
|
||||
as \emph{d0} (case of multi-incidence). For example if an edge is an isolated
|
||||
loop, it is incident twice to the same vertex, then given a dart \emph{d0}
|
||||
belonging to this edge, $\mb{1}$(\emph{d0}) goes to the next edge, which is in
|
||||
fact the same edge.
|
||||
|
||||
Since $\mb{i}(d_0)$ (with $1\leq i \leq d$) allows to change the
|
||||
current \cell{i}, all the darts that can be reached from $d_0$ by
|
||||
using any combination of $\mb{j}$'s, $\forall j$, $1 \leq j \leq d$ and
|
||||
$j\neq i$ and their inverse are contained in the same \cell{i} as
|
||||
$d_0$. The \cell{i} containing $d_0$ is defined in terms of orbit by
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_d}(d_0)$.
|
||||
Since $\mb{i}$(\emph{d0}) (with 1$\leq$ \emph{i} $\leq$ \emph{d}) allows to change the
|
||||
current \cell{i}, all the darts that can be reached from \emph{d0} by
|
||||
using any combination of $\mb{j}$'s, $\forall$ \emph{j}, 1 $\leq$ \emph{j} $\leq$ \emph{d} and
|
||||
\emph{j}$\neq$ \emph{i} and their inverse are contained in the same \cell{i} as
|
||||
\emph{d0}. The \cell{i} containing \emph{d0} is defined in terms of orbit by
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_d}$(\emph{d0}).
|
||||
|
||||
% since $\mb{0}$ is not a relation
|
||||
% (but only a notation for $\mb{1}^{-1}$). Thus,
|
||||
|
||||
There is a special case for vertices. Given a dart $d_0$, the set of
|
||||
darts contained in the same vertex as $d_0$ are the darts that can be
|
||||
reached from $d_0$ by using any combination of $\mb{i}\circ\mb{j}$,
|
||||
$\forall i,j$, $1 \leq i< j \leq d$, and their inverse. The 0-cell
|
||||
containing $d_0$ is defined in terms of orbit by
|
||||
$\orb{\{\mb{i}\circ\mb{j}|\forall i,j: 1\leq i<j \leq d\}}(d_0)$.
|
||||
There is a special case for vertices. Given a dart \emph{d0}, the set of
|
||||
darts contained in the same vertex as \emph{d0} are the darts that can be
|
||||
reached from \emph{d0} by using any combination of $\mb{i}\circ\mb{j}$,
|
||||
$\forall$ \emph{i},\emph{j}, 1 $\leq$ \emph{i< j} $\leq$ \emph{d}, and their inverse. The 0-cell
|
||||
containing \emph{d0} is defined in terms of orbit by
|
||||
$\orb{\{\mb{i}\circ\mb{j}|\forall i,j: 1\leq \emph{i<j} \leq d\}}$(\emph{d0}).
|
||||
|
||||
|
||||
% $\orb{\mb{1}\circ\mb{2},\ldots,\mb{1}\circ\mb{d},\{\mb{i}\circ\mb{j}|\forall
|
||||
% i,j: 2\leq i<j \leq d\}}(a)$.
|
||||
|
||||
Orbit $\orb{\beta_1,\ldots,\beta_d}(d_0)$ is the \emph{connected
|
||||
component} containing dart $d_0$. A combinatorial map is
|
||||
Orbit $\orb{\beta_1,\ldots,\beta_d}$(\emph{d0}) is the \emph{connected
|
||||
component} containing dart \emph{d0}. A combinatorial map is
|
||||
\emph{connected} if this set is equal to the set of all the darts
|
||||
of the combinatorial map.
|
||||
%, and it is a subset of all the darts otherwise.
|
||||
|
|
@ -447,7 +450,7 @@ of the combinatorial map.
|
|||
% que tu fasse un passe pour obtenir plus de ``phrases sans $..$''
|
||||
|
||||
A last important property of cells is that for all dimensions \emph{i} the
|
||||
set of \cells{i} forms a partition of the set of darts $D$, i.e. for
|
||||
set of \cells{i} forms a partition of the set of darts \emph{D}, i.e. for
|
||||
any \emph{i}, the union of the sets of darts of all the \cells{i} is equal
|
||||
to \emph{D}, and the sets of darts of two different \cells{i} are disjoint.
|
||||
|
||||
|
|
@ -455,71 +458,71 @@ Let us give some examples of cells in 3D, for the 3D combinatorial map
|
|||
of Figure~\ref{fig-exemple-carte3d}:
|
||||
\begin{itemize}
|
||||
\item All the darts belonging to the same edge can be obtained by any
|
||||
combination of $\mb{2}$ and $\mb{3}$: for example edge $e$ of the
|
||||
combination of $\mb{2}$ and $\mb{3}$: for example edge \emph{e} of the
|
||||
object corresponds in the combinatorial map to the set of darts
|
||||
$\{1,5,9,10\}$. Given any dart belonging to this edge, we retrieve
|
||||
\{1,5,9,10\}. Given any dart belonging to this edge, we retrieve
|
||||
all the other darts by, for example, a breadth-first traversal. In terms
|
||||
of orbits, this 1-cell corresponds to $\orb{\beta_2,\beta_3}(1)$.
|
||||
of orbits, this 1-cell corresponds to $\orb{\beta_2,\beta_3}$(1).
|
||||
|
||||
\item All the darts belonging to the same facet can be obtained by any
|
||||
combination of $\mb{1}$ and $\mb{3}$: for example facet $f_2$
|
||||
combination of $\mb{1}$ and $\mb{3}$: for example facet \emph{f2}
|
||||
corresponds in the combinatorial map to the set of darts
|
||||
$\{1,2,3,4,5,6,7,8\}$. Facet $f_1$ corresponds to the set of darts
|
||||
$\{10,11,12,13\}$. Note that these last darts are $3$-free since
|
||||
\{1,2,3,4,5,6,7,8\}. Facet \emph{f1} corresponds to the set of darts
|
||||
\{10,11,12,13\}. Note that these last darts are 3-free since
|
||||
there is no other volume sharing this facet. In terms of orbits,
|
||||
$f_2$ corresponds to $\orb{\beta_1,\beta_3}(1)$ and $f_1$
|
||||
corresponds to $\orb{\beta_1,\beta_3}(10)$.
|
||||
\emph{f2} corresponds to $\orb{\beta_1,\beta_3}$(1) and \emph{f1}
|
||||
corresponds to $\orb{\beta_1,\beta_3}$(10).
|
||||
|
||||
\item All the darts belonging to the same volume can be obtained by
|
||||
any combination of $\mb{1}$ and $\mb{2}$: for example volume $vol_1$
|
||||
any combination of $\mb{1}$ and $\mb{2}$: for example volume \emph{vol1}
|
||||
corresponds in the combinatorial map to the set of the twenty-four
|
||||
darts representing the cube. In terms of orbits, $vol_1$ corresponds
|
||||
to $\orb{\beta_1,\beta_2}(1)$.
|
||||
darts representing the cube. In terms of orbits, \emph{vol1} corresponds
|
||||
to $\orb{\beta_1,\beta_2}$(1).
|
||||
|
||||
\item All the darts belonging to the same vertex can be obtained by
|
||||
any combination of $\mb{1}\circ\mb{2}$,
|
||||
$\mb{1}\circ\mb{3}$ and $\mb{2}\circ\mb{3}$ and their inverse
|
||||
functions. In our example, vertex $v$ of the object corresponds
|
||||
in the combinatorial map to the set of darts $\{1,6,9,11,14,15\}$.
|
||||
functions. In our example, vertex \emph{v} of the object corresponds
|
||||
in the combinatorial map to the set of darts \{1,6,9,11,14,15\}.
|
||||
Starting from dart 1, we obtain for example dart
|
||||
$14=(\mb{1}\circ\mb{2})^{-1}(1)=\mb{2}\circ\mb{0}(1)$, dart
|
||||
$11=\mb{1}\circ\mb{2}(1)$, and dart $9=\mb{2}\circ\mb{3}(1)$.
|
||||
14=$(\mb{1}\circ\mb{2})^{-1}$(1)=$\mb{2}\circ\mb{0}$(1), dart
|
||||
11=$\mb{1}\circ\mb{2}$(1), and dart 9=$\mb{2}\circ\mb{3}$(1).
|
||||
Intuitively, the set of darts corresponding to a vertex contains all
|
||||
the darts represented by arrows starting from this vertex. In terms
|
||||
of orbits, $v$ corresponds to $\orb{\beta_1 \circ \beta_2,
|
||||
\beta_1 \circ \beta_3, \beta_2 \circ \beta_3}(1)$.
|
||||
of orbits, \emph{v} corresponds to $\orb{\beta_1 \circ \beta_2,
|
||||
\beta_1 \circ \beta_3, \beta_2 \circ \beta_3}$(1).
|
||||
\end{itemize}
|
||||
|
||||
Using this definition of cells as sets of darts, we can retrieve all the
|
||||
incidence and adjacency relations between the cells of the subdivision
|
||||
in a combinatorial map. Two cells are \emph{incident} if the
|
||||
intersection of their two sets of darts is non empty (whatever the
|
||||
dimension of the two cells). Two \cells{i}, $1\leq i \leq d$, are
|
||||
dimension of the two cells). Two \cells{i}, 1$\leq$ \emph{i} $\leq$ \emph{d}, are
|
||||
\emph{adjacent} if there is an \cell{(i-1)} incident to both cells.
|
||||
|
||||
In the example of Figure~\ref{fig-exemple-carte3d}, vertex $v$ and
|
||||
edge $e$ are incident since the intersection of the two corresponding
|
||||
sets of darts is $\{1,9\}\neq \emptyset$. Vertex $v$ is incident to facet
|
||||
$f_2$ since the intersection of the two corresponding sets of darts is
|
||||
$\{1,6\}\neq \emptyset$. Edge $e$ and facet $f_1$ are incident
|
||||
In the example of Figure~\ref{fig-exemple-carte3d}, vertex \emph{v} and
|
||||
edge \emph{e} are incident since the intersection of the two corresponding
|
||||
sets of darts is \{1,9\}$\neq \emptyset$. Vertex \emph{v} is incident to facet
|
||||
\emph{f2} since the intersection of the two corresponding sets of darts is
|
||||
\{1,6\}$\neq \emptyset$. Edge \emph{e} and facet \emph{f1} are incident
|
||||
since the intersection of the two corresponding sets of darts is
|
||||
$\{10\}\neq \emptyset$. Finally, facets $f_1$ and $f_2$ are adjacent
|
||||
since edge $e$ is incident to both facets.
|
||||
\{10\} $\neq \emptyset$. Finally, facets \emph{f1} and \emph{f2} are adjacent
|
||||
since edge \emph{e} is incident to both facets.
|
||||
|
||||
We can consider \cells{i} in a dimension $d'$ with $i \leq d' \leq
|
||||
d$. The idea is to consider the \cells{i} as if the combinatorial map
|
||||
was in $d'$ dimension. For that, we only take into account the
|
||||
$\beta_j$s for $j \leq d'$. The \cell{i} containing $d_0$ in dimension
|
||||
$d'$ is the orbit
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_{d'}}(d_0)$, and
|
||||
We can consider \cells{i} in a dimension \emph{d'} with \emph{i} $\leq$ \emph{d'} $\leq$
|
||||
\emph{d}. The idea is to consider the \cells{i} as if the combinatorial map
|
||||
was in \emph{d'} dimension. For that, we only take into account the
|
||||
$\beta_j$s for \emph{j} $\leq$ \emph{d'}. The \cell{i} containing \emph{d0} in dimension
|
||||
\emph{d'} is the orbit
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_{d'}}$(\emph{d0}), and
|
||||
the 0-cell is the orbit $\orb{\{\mb{i}\circ\mb{j}|\forall i,j: 2\leq
|
||||
i<j \leq d'\}}(d_0)$. By default, \cells{i} are considered in
|
||||
dimension $d$, the dimension of the combinatorial map.
|
||||
i<j \leq d'\}}$(\emph{d0}). By default, \cells{i} are considered in
|
||||
dimension \emph{d}, the dimension of the combinatorial map.
|
||||
|
||||
In the example of Figure~\ref{fig-exemple-carte3d}, the 2-cell
|
||||
containing dart 1 is facet $f_2$ which is the set of darts
|
||||
$\{1,2,3,4,5,6,7,8\}$. If we consider the same 2-cell in dimension~2,
|
||||
we obtain the set of darts $\{1,2,3,4\}$. Intuitively we ``forget''
|
||||
containing dart 1 is facet \emph{f2} which is the set of darts
|
||||
\{1,2,3,4,5,6,7,8\}. If we consider the same 2-cell in dimension~2,
|
||||
we obtain the set of darts \{1,2,3,4\}. Intuitively we ``forget''
|
||||
$\beta_3$ and we obtain the set of darts of the facet containing dart
|
||||
1 restricted to the volume containing this dart.
|
||||
|
||||
|
|
@ -548,8 +551,8 @@ to \cells{i} by an injection:
|
|||
|
||||
Since \cells{i} are not explicitely represented in combinatorial maps,
|
||||
the association between \cells{i} and \emph{i}-attributes is transferred to
|
||||
darts: if attribute $a$ is associated to \cell{i} $c$, all the darts
|
||||
belonging to $c$ are associated to $a$.
|
||||
darts: if attribute \emph{a} is associated to \cell{i} \emph{c}, all the darts
|
||||
belonging to \emph{c} are associated to \emph{a}.
|
||||
% dart $d_0$ is associated to attribute $a$ when the \cell{i}
|
||||
% containing $d_0$ is associated to $a$.
|
||||
|
||||
|
|
@ -609,7 +612,7 @@ define a global ``left'' and ``right'' direction in each point of the
|
|||
embedded object. In 2D, quasi-manifolds are manifolds, but this is no
|
||||
longer true in higher dimension as we can see in the example presented
|
||||
in Figure~\ref{fig-quasivariete}. In this example, the object to the
|
||||
right is not a manifold since the neighborhood of the point $p$ in the
|
||||
right is not a manifold since the neighborhood of the point \emph{p} in the
|
||||
object is not homeomorphic\footnote{Intuitively, two objects are
|
||||
homeomorphic if each object can be continuously deformed into the
|
||||
second one. In such a case, the two objects have exactly the same
|
||||
|
|
@ -638,8 +641,8 @@ object is not homeomorphic\footnote{Intuitively, two objects are
|
|||
|
||||
Combinatorial maps can only represent quasi-manifolds due to the
|
||||
definition of $\beta$ pointers. As we have seen in
|
||||
Section~\ref{ssec-cells-in-map}, $\mb{i}(d_0)$ (with $1\leq i \leq d$)
|
||||
belongs to the same cells as $d_0$, only the \cell{i} and 0-cell are
|
||||
Section~\ref{ssec-cells-in-map}, $\mb{i}$(\emph{d0}) (with 1$\leq$ \emph{i} $\leq$ \emph{d})
|
||||
belongs to the same cells as \emph{d0}, only the \cell{i} and 0-cell are
|
||||
different. In other words, $\mb{i}$ links two \cells{i} that
|
||||
share a common \cell{(i-1)}: it is not possible to link more than two
|
||||
\cells{i} along a same \cell{(i-1)}.
|
||||
|
|
@ -691,7 +694,7 @@ combinatorial maps.
|
|||
Due to this additional condition, any objects can not be represented
|
||||
by a combinatorial map but only orientable quasi-manifolds. We need to
|
||||
study now the inverse relation. Does any set of darts linked together by
|
||||
$\mb{i}$'s, with $0 \leq i \leq d$ correspond to a quasi-manifold? As
|
||||
$\mb{i}$'s, with 0 $\leq$ \emph{i} $\leq$ \emph{d} correspond to a quasi-manifold? As
|
||||
we can see in Figure~\ref{fig-pb-carte}, the answer is no.
|
||||
%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
|
@ -715,7 +718,7 @@ we can see in Figure~\ref{fig-pb-carte}, the answer is no.
|
|||
$\beta_1$, $\beta_2$ and $\beta_3$ which does not represend a 3D
|
||||
quasi-manifold, and thus which are not 3D combinatorial map.
|
||||
\textbf{Left}: In this example, all the darts are 3-free except
|
||||
$\beta_3(1)=5$ and $\beta_3(4)=6$ (and vice-versa).
|
||||
$\beta_3$(1)=5 and $\beta_3$(4)=6 (and vice-versa).
|
||||
\textbf{Right}: In this example, darts linked by $\beta_3$
|
||||
are not in the same order in both 3-cells.
|
||||
}
|
||||
|
|
@ -726,8 +729,8 @@ we can see in Figure~\ref{fig-pb-carte}, the answer is no.
|
|||
In the first example (Left), there are two 3-cells (one to the left
|
||||
for the cube, a second to the right for the pyramid) which are
|
||||
``partially adjacent'' along one 2-cell. Indeed, only two darts
|
||||
of the 2-cell are linked by $\beta_3$. We have $\beta_3(1)=5$ and
|
||||
$\beta_3(4)=6$ (and reciprocally). This configuration is not possible
|
||||
of the 2-cell are linked by $\beta_3$. We have $\beta_3$(1)=5 and
|
||||
$\beta_3$(4)=6 (and reciprocally). This configuration is not possible
|
||||
in a quasi-manifold: two \cells{d} are always glue along an ``entire''
|
||||
\cells{(d-1)}.
|
||||
|
||||
|
|
@ -860,7 +863,7 @@ accessed through \emph{handles}. A handle is a model of the
|
|||
<img src="fig/png/Diagramme_class.png" alt=""></A>
|
||||
</CENTER>
|
||||
\end{ccHtmlOnly}
|
||||
\caption{UML diagram of the main classes of the package. $k$ is the number of
|
||||
\caption{UML diagram of the main classes of the package. \emph{k} is the number of
|
||||
non void attributes.}
|
||||
\label{fig-diagram_class}
|
||||
\end{figure}
|
||||
|
|
@ -893,8 +896,8 @@ handle to the type of used darts (given in the items class).
|
|||
iterate over specific subsets of darts of the combinatorial map (see
|
||||
Section~\ref{ssec-range}). It also defines several methods to link
|
||||
and to unlink darts by $\beta_i$s (see
|
||||
Section~\ref{ssec-link-darts}). We said that a dart $d_0$ is \emph{i}-free
|
||||
if $\mb{i}(d_0)=\varnothing$. The $\varnothing$ constant is
|
||||
Section~\ref{ssec-link-darts}). We said that a dart \emph{d0} is \emph{i}-free
|
||||
if $\mb{i}$(\emph{d0})=$\varnothing$. The $\varnothing$ constant is
|
||||
represented in the class \ccc{Combinatorial_map} through a
|
||||
\ccc{static const Dart_handle}
|
||||
called \nulldart. Finally, some high levels
|
||||
|
|
@ -941,8 +944,8 @@ the tuple must be either a model of the \ccc{CellAttribute} concept or
|
|||
\ccc{void}, \emph{(i-1)}-attributes are disabled: we say that
|
||||
\emph{(i-1)}-attributes are \emph{void}. Otherwise, \emph{(i-1)}-attributes are
|
||||
enabled and have the given type: we say \emph{(i-1)}-attributes are
|
||||
\emph{non void}. If the size of the tuple is \emph{k}, with $k <
|
||||
dimension+1$, $\forall i: k \leq i \leq dimension$, \emph{i}-attributes are
|
||||
\emph{non void}. If the size of the tuple is \emph{k}, with \emph{k} <
|
||||
dimension+1, $\forall$ \emph{i}: \emph{k} $\leq$ \emph{i} $\leq$ dimension, \emph{i}-attributes are
|
||||
void.
|
||||
|
||||
The class \ccc{Combinatorial_map_min_items<d>} is a model of the
|
||||
|
|
@ -1114,7 +1117,7 @@ Sections~\ref{ssec-adv-marks}). In the following, we denote by
|
|||
|
||||
The combinatorial map offers iterators to traverse the darts
|
||||
of a specific orbit, to traverse all darts of one cell, or
|
||||
one dart per cell, and to traverse all $i$-attributes.
|
||||
one dart per cell, and to traverse all \emph{i}-attributes.
|
||||
|
||||
Instead of the \ccc{begin()/end()} member function pair as we know it
|
||||
from \stl\ containers, and from most \cgal\ data structures, the
|
||||
|
|
@ -1125,16 +1128,16 @@ There are three different categories of dart range classes:
|
|||
\begin{itemize}
|
||||
\item \ccc{Dart_range}: range of all the darts of a combinatorial map;
|
||||
\item \ccc{Dart_of_orbit_range<Beta...>}: range of all the darts of
|
||||
the orbit $\orb{Beta...}(d0)$ for a given $d0$. $Beta...$ is a
|
||||
sequence of integers $i_1,\ldots,i_k$, each $i_j \in
|
||||
\{0,\ldots,d\}$. These integers must satisfy: $i_1<i_2<\ldots<i_k$,
|
||||
and $(i_1\neq 0$ or $i_2 \neq 1)$ (for example
|
||||
the orbit $\orb{Beta...}$(\emph{d0}) for a given \emph{d0}. $Beta...$ is a
|
||||
sequence of integers $i_1,\ldots,i_k$, each $i_j \in$
|
||||
\{0,\ldots,\emph{d}\}. These integers must satisfy: $i_1<i_2<\ldots<i_k$,
|
||||
and $(i_1\neq$ 0 or $i_2 \neq$ 1) (for example
|
||||
\ccc{Dart_of_orbit_range<1,2>} for the orbit
|
||||
$\orb{\mb{1},\mb{2}}(d0)$);
|
||||
$\orb{\mb{1},\mb{2}}$(\emph{d0}));
|
||||
\item \ccc{Dart_of_cell_range<i,dim>}: range of all the darts of
|
||||
the \cell{i} containing a given dart. The \cell{i} is considered in
|
||||
dimension \ccc{dim} (with $0 \leq dim \leq d$, $dim=d$ by default),
|
||||
with $0\leq i \leq dim+1$. If $i=dim+1$,
|
||||
dimension \ccc{dim} (with 0 $\leq$ \emph{dim} $\leq$ \emph{d}, \emph{dim}=\emph{d} by default),
|
||||
with 0$\leq$ \emph{i} $\leq$ \emph{dim+1}. If \emph{i}=\emph{dim+1},
|
||||
\ccc{Dart_of_cell_range<i,dim>} is the range of all the darts of
|
||||
the connected component containing a given dart.
|
||||
\end{itemize}
|
||||
|
|
@ -1148,27 +1151,27 @@ There are three different categories of dart range classes:
|
|||
There are also two different classes of ranges containing one dart per
|
||||
\cell{i}. Note that in these classes, the dart of each \cell{i} can
|
||||
be any dart of the cell. Moreover, each \cell{i} (and \cell{j} in the
|
||||
second case) is considered in dimension \ccc{dim} (with $0 \leq dim
|
||||
\leq d$, $dim=d$ by default).
|
||||
second case) is considered in dimension \ccc{dim} (with 0 $\leq$ \emph{dim}
|
||||
$\leq$ \emph{d}, \emph{dim=d} by default).
|
||||
\begin{itemize}
|
||||
\item \ccc{One_dart_per_cell_range<i,dim>}: range containing one dart of
|
||||
each \cell{i} of the combinatorial map, $0\leq i \leq dim+1$ (for
|
||||
each \cell{i} of the combinatorial map, 0$\leq$ \emph{i} $\leq$ \emph{dim+1} (for
|
||||
example \ccc{One_dart_per_cell_range<2>} for the range of one dart per
|
||||
2-cell of the combinatorial map);
|
||||
\item \ccc{One_dart_per_incident_cell_range<i,j,dim>}: range
|
||||
containing one dart of each \cell{i} incident to the \cell{j}
|
||||
containing a given dart, with $0\leq i \leq dim+1$ and $0\leq j
|
||||
\leq dim+1$ (for example
|
||||
containing a given dart, with 0$\leq$ \emph{i} $\leq$ \emph{dim+1} and 0$\leq$ \emph{j}
|
||||
$\leq$ \emph{dim+1} (for example
|
||||
\ccc{One_dart_per_incident_cell_range<0,3>} for the range of
|
||||
one dart per vertex of the volume incident to the starting dart).
|
||||
If $i==j$, the range contains only the given dart.
|
||||
If \emph{i}=\emph{j}, the range contains only the given dart.
|
||||
\end{itemize}
|
||||
|
||||
The iterators of the \ccc{Dart_range} are bidirectional iterators,
|
||||
while the iterators of the other four ranges are forward iterators.
|
||||
The value type of all these iterators is \ccc{Dart}.
|
||||
|
||||
Additionally, there is a range over non void $i$-attributes:
|
||||
Additionally, there is a range over non void \emph{i}-attributes:
|
||||
\ccc{Attribute_range<i>::type}, having a bidirectional iterator with
|
||||
value type \ccc{Attribute_type<i>::type}.
|
||||
|
||||
|
|
@ -1294,8 +1297,8 @@ $\beta$ pointers of existing darts.
|
|||
result of \ccc{sew<3>(1,5)} (or \ccc{sew<3>(2,8)}, or
|
||||
\ccc{sew<3>(3,7)}, or \ccc{sew<3>(4,6)}). Darts (1,5), (2,8),
|
||||
(3,7) and (4,6) are linked together by $\beta_3$. The two 2-cells
|
||||
$c_1=\{1,2,3,4\}$ and $c_2=\{5,6,7,8\}$ are merged after the sew
|
||||
into the 2-cell $\{1,2,3,4,5,6,7,8\}$. We are in the case where
|
||||
\emph{c1}=\{1,2,3,4\} and \emph{c2}=\{5,6,7,8\} are merged after the sew
|
||||
into the 2-cell \{1,2,3,4,5,6,7,8\}. We are in the case where
|
||||
the two attributes are non NULL, thus the first one is kept, and
|
||||
all the darts of $c_2$ are associated with the first attribute.}
|
||||
\label{fig-exemple-sew}
|
||||
|
|
@ -1324,43 +1327,43 @@ The \ccc{link_beta} and \ccc{unlink_beta} methods only modify
|
|||
\end{ccAdvanced}
|
||||
\end{itemize}
|
||||
|
||||
Linking two darts $d_1$ and $d_2$ by $\beta_i$, with $2\leq i\leq d$
|
||||
and $d_1 \neq d_2$, consists in modifying two $\beta_i$ pointers such that
|
||||
$\beta_i(d_1)=d_2$ and $\beta_i(d_2)=d_1$. For $i=1$, the modification
|
||||
is $\beta_1(d_1)=d_2$ (and thus $\beta_0(d_2)=d_1$ by definition of
|
||||
$\beta_0$); in this case we can have $d_1=d_2$ (a dart linked with
|
||||
Linking two darts \emph{d1} and \emph{d2} by $\beta_i$, with 2$\leq$ \emph{i}$\leq$ \emph{d}
|
||||
and \emph{d1} $\neq$ \emph{d2}, consists in modifying two $\beta_i$ pointers such that
|
||||
$\beta_i$(\emph{d1})=\emph{d2} and $\beta_i$(\emph{d2})=\emph{d1}. For \emph{i}=1, the modification
|
||||
is $\beta_1$(\emph{d1})=\emph{d2} (and thus $\beta_0$(\emph{d2})=\emph{d1} by definition of
|
||||
$\beta_0$); in this case we can have \emph{d1=d2} (a dart linked with
|
||||
itself corresponds to an edge which is a loop).
|
||||
|
||||
Reciprocally, unlinking a given dart $d_0$ by $\beta_i$, with $2\leq
|
||||
i\leq d$, consists in modifying two $\beta_i$ pointers
|
||||
such that $\beta_i(\beta_i(d_0))=\varnothing$ and
|
||||
$\beta_i(d_0)=\varnothing$. For $i=1$, the modification is
|
||||
$\beta_1(d_0)=\varnothing$ (and thus
|
||||
$\beta_0(\beta_1(d_0))=\varnothing$ by definition of $\beta_0$). Note
|
||||
Reciprocally, unlinking a given dart \emph{d0} by $\beta_i$, with 2$\leq$
|
||||
\emph{i}$\leq$ \emph{d}, consists in modifying two $\beta_i$ pointers
|
||||
such that $\beta_i(\beta_i$(\emph{d0}))=$\varnothing$ and
|
||||
$\beta_i$(\emph{d0})=$\varnothing$. For \emph{i=1}, the modification is
|
||||
$\beta_1$(\emph{d0})=$\varnothing$ (and thus
|
||||
$\beta_0(\beta_1$(\emph{d0}))=$\varnothing$ by definition of $\beta_0$). Note
|
||||
that is it possible to unlink a given dart for $\beta_i$ only if it is
|
||||
not $i$-free.
|
||||
not \emph{i}-free.
|
||||
|
||||
The \ccc{sew<i>(dh1,dh2)} methods consist mainly to link two by two
|
||||
several darts by $\mb{i}$. This operation is possible only if there is
|
||||
a bijection $f$ between all the darts of the orbit
|
||||
$D_1=\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}(d_1)$ and
|
||||
$D_2=\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}(d_2)$
|
||||
satisfying: $f(d_1)=d_2$, and for all $d'_1 \in D_1$, for all $j\in
|
||||
a bijection \emph{f} between all the darts of the orbit
|
||||
\emph{D1}=$\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}$(\emph{d1}) and
|
||||
\emph{D2}=$\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}$(\emph{d2})
|
||||
satisfying: f(\emph{d1})=\emph{d2}, and for all \emph{e} $\in$ \emph{D1}, for all $j\in
|
||||
\{1,\ldots,i-2,i+2,\ldots,d\}$,
|
||||
$f(\mb{j}(d'_1))=\mb{j}^{-1}(f(d'_1))$. Intuitively, this condition
|
||||
\emph{f}($\mb{j}$(\emph{e}))=$\mb{j}^{-1}$(\emph{f}(\emph{e})). Intuitively, this condition
|
||||
ensures the validity of the combinatorial map by verifying that
|
||||
condition discussed in Section~\ref{ssec-combimap-validity} will be
|
||||
satisfied after the operation. This can be tested by using the method
|
||||
\ccc{is_sewable<i>(dh1,dh2)}. For example, the function
|
||||
\ccc{is_sewable<i>} would return \ccc{false} if we tried to sew a
|
||||
triangular facet with a quad facet. Note that given two darts $d_1$
|
||||
and $d_2$, if there is such a bijection, it is uniquely defined. So giving
|
||||
triangular facet with a quad facet. Note that given two darts \emph{d1}
|
||||
and \emph{d2}, if there is such a bijection, it is uniquely defined. So giving
|
||||
the two darts as arguments of the \ccc{sew<i>} is enough to retrieve
|
||||
all the pairs of darts to link.
|
||||
|
||||
If such a bijection exists, the \ccc{sew<i>(dh1,dh2)} operation
|
||||
consists only in linking by $\beta_i$ each couple of darts $d_1$ and
|
||||
$d_2$ such that $d_2=f(d_1)$.
|
||||
consists only in linking by $\beta_i$ each couple of darts \emph{d1} and
|
||||
\emph{d2} such that \emph{d2}=\emph{f}(\emph{d1}).
|
||||
|
||||
% links by $\beta_i$ two by two all the darts of
|
||||
% the orbit $\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}(d1)$
|
||||
|
|
@ -1381,15 +1384,15 @@ In addition, the sew operations update the associations between darts
|
|||
and non void attributes in order to guarantee that all the darts
|
||||
belonging to a given cell are associated with the same attribute
|
||||
(which is a condition of combinatorial map validity). For each couple
|
||||
of \cells{j} $c_1$ and $c_2$ that are merged into one \cell{j} during
|
||||
the sew, we have to update the two associated attributes $attr_1$ and
|
||||
$attr_2$. If both are NULL, there is nothing to do. If one is NULL
|
||||
of \cells{j} \emph{c1} and \emph{c2} that are merged into one \cell{j} during
|
||||
the sew, we have to update the two associated attributes \emph{attr1} and
|
||||
\emph{attr2}. If both are NULL, there is nothing to do. If one is NULL
|
||||
and the other not, we only associate the non NULL attribute to all the
|
||||
darts of the resulting cell. When the two attributes are non NULL, we
|
||||
first apply functor \ccc{On_merge} on the two attributes $attr_1$ and
|
||||
$attr_2$ (see Section~\ref{ssec-attributes}). Then, we associate the
|
||||
attribute $attr_1$ to all darts of the resulting \cell{j}. Finally,
|
||||
attribute $attr_2$ is removed from the combinatorial map.
|
||||
first apply functor \ccc{On_merge} on the two attributes \emph{attr1} and
|
||||
\emph{attr2} (see Section~\ref{ssec-attributes}). Then, we associate the
|
||||
attribute \emph{attr1} to all darts of the resulting \cell{j}. Finally,
|
||||
attribute \emph{attr2} is removed from the combinatorial map.
|
||||
|
||||
Note that when the two attributes are non NULL, the first one is
|
||||
kept. But user can customize this behavior in order to update the
|
||||
|
|
@ -1402,34 +1405,34 @@ second attribute is kept.
|
|||
|
||||
For example, in Figure~\ref{fig-exemple-sew}, we want to 3-sew the two
|
||||
initial volumes. \ccc{sew<3>(1,5)} links by $\mb{3}$ the pairs of
|
||||
darts $(1,5)$, $(2,8)$, $(3,7)$ and $(4,6)$, thus the combinatorial map
|
||||
darts (1,5), (2,8), (3,7) and (4,6), thus the combinatorial map
|
||||
obtained is valid. 2-attributes are updated so that all the darts
|
||||
belonging to the 2-cell containing dart 1 become associated to the
|
||||
same 2-attribute after the operation.
|
||||
%
|
||||
|
||||
Similarly, \ccc{unsew<i>} operations unlink $\mb{i}$ for all the darts
|
||||
in the orbit $\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}(d_0)$,
|
||||
in the orbit $\orb{\mb{1},\ldots,\mb{i-2},\mb{i+2},\ldots,\mb{d}}$(\emph{d0}),
|
||||
and thus guarantee to obtain a valid combinatorial map. This
|
||||
operation is possible for any non $i$-free dart.
|
||||
operation is possible for any non \emph{i}-free dart.
|
||||
|
||||
As for the sew operations, attributes are updated to
|
||||
guarantee that two darts belonging to two different \cells{j} are
|
||||
associated to two different $j$-attributes. If the unsew operation
|
||||
splits a \cell{j} $c$ in two \cells{j} $c_1$ and $c_2$, and if $c$ is
|
||||
associated to a $j$-attribute $attr_1$, then this attribute is duplicated
|
||||
into $attr_2$, and all the darts belonging to $c_2$ are associated
|
||||
associated to two different \emph{j}-attributes. If the unsew operation
|
||||
splits a \cell{j} \emph{c} in two \cells{j} \emph{c1} and \emph{c2}, and if \emph{c} is
|
||||
associated to a \emph{j}-attribute \emph{attr1}, then this attribute is duplicated
|
||||
into \emph{attr2}, and all the darts belonging to \emph{c2} are associated
|
||||
with this new attribute. Finally, we call the functor \ccc{On_split}
|
||||
on the two attributes $attr_1$ and $attr_2$ (see
|
||||
on the two attributes \emph{attr1} and \emph{attr2} (see
|
||||
Section~\ref{ssec-attributes}).
|
||||
|
||||
Let us consider the combinatorial map given in
|
||||
Figure~\ref{fig-exemple-sew} (Right). If we call \ccc{unsew<3>(2)}, we
|
||||
obtain the combinatorial map in Figure~\ref{fig-exemple-sew} (Left)
|
||||
(except for the color of the attribute associated to the
|
||||
2-cell $\{5,6,7,8\}$ which would be \texttt{\#00ff00}). The \ccc{unsew<3>}
|
||||
2-cell \{5,6,7,8\} which would be \texttt{\#00ff00}). The \ccc{unsew<3>}
|
||||
operation has duplicated the 2-attribute associated to the 2-cell
|
||||
$\{1,2,3,4,5,6,7,8\}$ since this 2-cell is split in two after the
|
||||
\{1,2,3,4,5,6,7,8\} since this 2-cell is split in two after the
|
||||
unsew operation.
|
||||
|
||||
\begin{ccAdvanced}
|
||||
|
|
@ -1467,9 +1470,9 @@ unsew operation.
|
|||
|
||||
In Figure~\ref{fig-exemple-sew} (Left), if we call
|
||||
\ccc{link_beta<3>(1,5)}, in the resulting combinatorial map we have
|
||||
now $\mb{3}(1)=5$ and $\mb{3}(5)=1$. This combinatorial map is no
|
||||
now $\mb{3}$(1)=5 and $\mb{3}$(5)=1. This combinatorial map is no
|
||||
longer valid (for example dart 2 is 3-free and we should have
|
||||
$\mb{3}(2)=8$).
|
||||
$\mb{3}$(2)=8).
|
||||
|
||||
\end{ccAdvanced}
|
||||
|
||||
|
|
@ -1499,7 +1502,7 @@ valid.
|
|||
|
||||
The first one is \ccc{remove_cell<CMap,i>(cm,dh0)} which modifies the
|
||||
combinatorial map to remove the \cell{i} containing dart \ccc{d0},
|
||||
with $0 \leq i \leq d$. This operation is possible if $i==d$ or if the given
|
||||
with 0 $\leq$ \emph{i} $\leq$ \emph{d}. This operation is possible if \emph{i}=\emph{d} or if the given
|
||||
\cell{i} is incident to at most two \cells{(i+1)} which can be tested
|
||||
thanks to \ccc{is_removable<CMap,i>(cm,dh0)}. If the removed \cell{i}
|
||||
was incident to two different \cells{(i+1)}, these two cells are
|
||||
|
|
@ -1577,9 +1580,9 @@ example on Figure~\ref{fig-insert-vertex}).
|
|||
\ccc{remove_cell<1>} operations. \textbf{Left}:~Initial
|
||||
combinatorial map. \textbf{Right}:~After the insertion of two
|
||||
1-cells: a first one between the two 0-cells containing darts
|
||||
\ccc{d1} and \ccc{d2}, and a second one between the two 0-cells
|
||||
containing darts \ccc{d3} and \ccc{d4}. Now if we remove the two
|
||||
1-cells containing darts \ccc{d5} and \ccc{d6}, we obtain the
|
||||
\ccc{d2} and \ccc{d3}, and a second incident to the 0-cell
|
||||
containing dart \ccc{d1}. Now if we remove the two
|
||||
1-cells containing darts \ccc{d4} and \ccc{d5}, we obtain the
|
||||
initial combinatorial map.}
|
||||
\label{fig-insert-edge}
|
||||
\end{figure}
|
||||
|
|
@ -1587,12 +1590,12 @@ example on Figure~\ref{fig-insert-vertex}).
|
|||
\ccc{insert_cell_1_in_cell_2<CMap>(cm,dh1,dh2)} adds a 1-cell in
|
||||
the 2-cell containing darts \ccc{d1} and \ccc{d2}, between the two
|
||||
0-cells containing darts \ccc{d1} and \ccc{d2}. The 2-cell is split
|
||||
in two. This operation is possible if $d1 \in \orb{\beta_1}(d2)$
|
||||
in two. This operation is possible if \emph{d1} $\in \orb{\beta_1}(d2)$
|
||||
which can be tested thanks to
|
||||
\ccc{is_insertable_cell_1_in_cell_2(cm,dh1,dh2)}. In the example on
|
||||
Figure~\ref{fig-insert-edge}, it is possible to insert an edge
|
||||
between darts $d1$ and $d2$, and between $d3$ and $d4$, but it is
|
||||
not possible to insert an edge between $d1$ and $d3$.
|
||||
between darts \emph{d1} and \emph{d2}, and between \emph{d3} and \emph{d4}, but it is
|
||||
not possible to insert an edge between \emph{d1} and \emph{d3}.
|
||||
|
||||
%\item
|
||||
\ccc{insert_dangling_cell_1_in_cell_2<CMap>(cm,dh0)} adds a 1-cell in
|
||||
|
|
@ -1754,7 +1757,7 @@ combinatorial map contains only one 3-cell. Indeed, the \ccc{sew<4>}
|
|||
operation has identified by pairs all the darts of the two 3-cells
|
||||
by definition of the sew operation (see Section~\ref{ssec-link-darts})
|
||||
which, in 4D, links by $\beta_3$ all the darts in
|
||||
$\orb{\mb{1},\mb{2}}(d_1)$ and in $\orb{\mb{1},\mb{2}}(d_2)$. The
|
||||
$\orb{\mb{1},\mb{2}}$(\emph{d1}) and in $\orb{\mb{1},\mb{2}}$(\emph{d2}). The
|
||||
situation is similar (but in higher dimension) to the
|
||||
configuration where we have two triangles in a 3D combinatorial map,
|
||||
and you use \ccc{sew<3>} between these two triangles. The two triangles
|
||||
|
|
@ -1836,47 +1839,47 @@ objects without boundaries. This definition was extended
|
|||
objects with boundaries, based on the notions of partial permutations
|
||||
and partial involutions.
|
||||
|
||||
Intuitively, a \emph{partial permutation} on a finite set $E$ is a
|
||||
mapping from $E\cup\{\varnothing\}$ to $E\cup\{\varnothing\}$ which is
|
||||
Intuitively, a \emph{partial permutation} on a finite set \emph{E} is a
|
||||
mapping from \emph{E}$\cup$\{$\varnothing$\} to \emph{E}$\cup$\{$\varnothing$\} which is
|
||||
injective on the subset of the domain that does not map to
|
||||
$\varnothing$. More precisely, a mapping $p:E \cup \{\varnothing\}
|
||||
\rightarrow E \cup \{\varnothing\}$ is a \emph{partial permutation}
|
||||
defined on $E$ if:
|
||||
$\varnothing$. More precisely, a mapping p:E $\cup$ \{$\varnothing$\}
|
||||
$\rightarrow$ \emph{E} $\cup$ \{$\varnothing$\} is a \emph{partial permutation}
|
||||
defined on \emph{E} if:
|
||||
\begin{enumerate}
|
||||
\item $p(\varnothing)=\varnothing$;
|
||||
\item $\forall e_1 \in E$, $\forall e_2 \in E$,
|
||||
$p(e_1)=p(e_2)\neq \varnothing \Rightarrow e_1=e_2$.
|
||||
\item \emph{p}($\varnothing$)=$\varnothing$;
|
||||
\item $\forall$ \emph{e1} $\in$ \emph{E}, $\forall$ \emph{e2} $\in$ \emph{E},
|
||||
p(\emph{e1})=p(\emph{e2})$\neq \varnothing \Rightarrow$ \emph{e1}=\emph{e2}.
|
||||
\end{enumerate}
|
||||
|
||||
The inverse $p^{-1}$ of this partial permutation is also a partial
|
||||
The inverse \pmun{} of this partial permutation is also a partial
|
||||
permutation and is defined by:
|
||||
\begin{enumerate}
|
||||
\item $p^{-1}(\varnothing)=\varnothing$;
|
||||
\item $\forall e \in E$, if it exists $a\in E$ such that $p(a)=e$,
|
||||
then $p^{-1}(e)=a$, otherwise $p^{-1}(e)=\varnothing$.
|
||||
\item \pmun{}($\varnothing$)=$\varnothing$;
|
||||
\item $\forall$ \emph{e} $\in$ \emph{E}, if it exists \emph{a}$\in$ \emph{E} such that \emph{p}(\emph{a})=\emph{e},
|
||||
then \pmun{}(\emph{e})=a, otherwise \pmun{}(\emph{e})=$\varnothing$.
|
||||
\end{enumerate}
|
||||
|
||||
Let $E$ be a set, and $p$ a partial permutation on $E$. An element
|
||||
$e$ is called a \emph{fixed point} for $p$ if $p(e)=e$. $p$ is a
|
||||
\emph{partial involution} if $\forall e \in E: p(e)\neq \varnothing
|
||||
\Rightarrow p(p(e))=e$.
|
||||
Let \emph{E} be a set, and \emph{p} a partial permutation on \emph{E}. An element
|
||||
\emph{e} is called a \emph{fixed point} for \emph{p} if \emph{p(e)=e}. \emph{p} is a
|
||||
\emph{partial involution} if $\forall$ \emph{e} $\in$ \emph{E}: \emph{p}(\emph{e})$\neq \varnothing
|
||||
\Rightarrow$ \emph{p}(\emph{p}(\emph{e}))=\emph{e}.
|
||||
|
||||
Now we can give the definition of a combinatorial map in any dimension.
|
||||
Let $d \geq 0$. A \emph{d}-dimensional combinatorial map (or
|
||||
\emph{d}-map) is a (d+1)-tuple $M=(D,\beta_1,\ldots,\beta_d)$
|
||||
Let \emph{d} $\geq$ 0. A \emph{d}-dimensional combinatorial map (or
|
||||
\emph{d}-map) is a (d+1)-tuple \emph{M}=(\emph{D},$\beta_1,\ldots,\beta_d)$
|
||||
where:
|
||||
\begin{enumerate}
|
||||
\item $D$ is a finite set of darts;
|
||||
\item $\beta_1$ is a partial permutation on $D$;
|
||||
\item $\forall i, \, 2 \leq i \leq d$, $\beta_i$ is a
|
||||
partial involution on $D$ without fixed point;
|
||||
\item\label{cond-composition} $\forall i:\, 0 \leq i \leq d-2$,
|
||||
$\forall j:\, 3 \leq j \leq d$, $i+2 \leq j$,
|
||||
\item \emph{D} is a finite set of darts;
|
||||
\item $\beta_1$ is a partial permutation on \emph{D};
|
||||
\item $\forall$ \emph{i}, 2 $\leq$ \emph{i} $\leq$ \emph{d}, $\beta_i$ is a
|
||||
partial involution on \emph{D} without fixed point;
|
||||
\item\label{cond-composition} $\forall$ \emph{i}: 0 $\leq$ \emph{i} $\leq$ \emph{d-2},
|
||||
$\forall$ \emph{j}: 3 $\leq$ \emph{j} $\leq$ \emph{d}, \emph{i+2} $\leq$ \emph{j},
|
||||
$\beta_{i}\circ\beta_{j}$ is a partial involution.
|
||||
\end{enumerate}
|
||||
|
||||
A $d$-dimensional combinatorial map represents a subdivision of an
|
||||
orientable $d$-dimensional quasi-manifold. A dart is an abstract element
|
||||
A \emph{d}-dimensional combinatorial map represents a subdivision of an
|
||||
orientable \emph{d}-dimensional quasi-manifold. A dart is an abstract element
|
||||
which is only required to define partial permutations. The last line of
|
||||
the definition fixes constraints which guarantee the topological
|
||||
validity of the represented object, i.e., the fact that it is a
|
||||
|
|
@ -1884,18 +1887,18 @@ quasi-manifold. This definition allows us to verify the validity of a
|
|||
given combinatorial map by checking if each item of the definition is
|
||||
satisfied.
|
||||
|
||||
Given a set of partial permutations $S=\{f_1,\ldots,f_k\}$, we denote
|
||||
Given a set of partial permutations \emph{S}=\{$f_1,\ldots,f_k$\}, we denote
|
||||
by $\orb{S}$ the \emph{permutation group} generated by
|
||||
$\{f_1,\ldots,f_k\}$ and whose group operation is the composition of
|
||||
partial permutations. The orbit $\orb{f_1,\ldots,f_k}(a)$ is the set
|
||||
of darts which can be obtained from $a$ by elements of $\orb{S}$:
|
||||
$\orb{f_1,\ldots,f_k}(a)=\{\phi(a)|\phi \in \orb{S}\}\setminus\{\varnothing\}$.
|
||||
\{$f_1,\ldots,f_k$\} and whose group operation is the composition of
|
||||
partial permutations. The orbit $\orb{f_1,\ldots,f_k}$(\emph{a}) is the set
|
||||
of darts which can be obtained from \emph{a} by elements of $\orb{S}$:
|
||||
$\orb{f_1,\ldots,f_k}$(\emph{a})=\{$\phi$(\emph{a})|$\phi \in \orb{S}$\}$\setminus$\{$\varnothing$\}.
|
||||
|
||||
Let $d_0 \in D$ be a dart. Given $i$, $1\leq i \leq d$,
|
||||
the \cell{i} containing $d_0$ is
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_d}(d_0)$.
|
||||
The $0$-cell containing $d_0$ is
|
||||
$\orb{\{\mb{i}\circ\mb{j}|\forall i,j: 1\leq i<j \leq d\}}(d_0)$.
|
||||
Let \emph{d0} $\in$ \emph{D} be a dart. Given \emph{i}, 1$\leq$ \emph{i} $\leq$ \emph{d},
|
||||
the \cell{i} containing \emph{d0} is
|
||||
$\orb{\beta_1,\ldots,\beta_{i-1},\beta_{i+1},\ldots,\beta_d}$(\emph{d0}).
|
||||
The \emph{0}-cell containing \emph{d0} is
|
||||
$\orb{\{\mb{i}\circ\mb{j}|\forall i,j: 1\leq i<j \leq d\}}$(\emph{d0}).
|
||||
|
||||
% \subsection{In 2D}
|
||||
% In 2D, a 2-map is $M=(D,\beta_1,\beta_2)$ where $\beta_1$ is a partial
|
||||
|
|
|
|||
Loading…
Reference in New Issue