Skip to content
Snippets Groups Projects
Commit ecf83cd9 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

ajout delaunay

parent 7684dc2c
No related branches found
No related tags found
No related merge requests found
Pipeline #9089 passed
% Triangulation de Delaunay
% Travail pratique de programmation déquentielle
% 19 février 2020
# La triangulation de Delaunay
## Généralités
* Soit un ensemble de $N$ points $\mathcal{P}=\{p_i\}_{i=1}^N$.
* Une triangulation est un ensemble de triangle dont les sommets sont formés des points de $\mathcal{P}$ et couvrant leur envelope convexe.
![Deux exemples de triangulation (source: [wikipedia](https://bit.ly/2P2XCJ9)).](figs/PointSetTriangulations.svg){#fig:tri width=100%}
## La triangulation de Delaunay
* La triangulation de Delaunay (TD) d'un ensemble de points $\mathcal{P}$ est telle qu'aucun point de $\mathcal{P}$ ne se trouve dans le cercle circonscrit d'un triangle de la TD.
* Les points sont tous sur la surface de chaque cercle circonscrit des triangles de la TD.
* Elle maximise le plus petit angle de tous les triangles (on essaie d'éviter les triangle avec les angles très petits).
* Il existe plusieurs algorithmes pour construire cette triangulation: *flip algorithm*, *incremental edge flip*, *Bowyer--Watson**, ...
## L'algorithme de Bowyer--Watson
* Dans cet algorithme on commence par construire un **super-triangle** contenant tous les points de $\mathcal{P}$.
* On ajoute ensuite les points itérativement:
* Chaque fois qu'on ajoute un point, $\vec p$, on retire tous les triangles dont le triangle circonscrit contient le point $\vec p$.
* On se retrouve avec avec un "trou" qui contient $\vec p$.
* Toutes les arrêtes du polygones sont reliées à $\vec p$ pour former les nouveau triangles à ajouter à la triangulation.
* On retire tous les triangles qui contiennent les points du super-triangle.
## Exemple d'ajouts (1/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_0.png){#fig:tri width=100%}
## Exemple d'ajouts (2/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_1.png){#fig:tri width=100%}
## Exemple d'ajouts (3/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_2.png){#fig:tri width=100%}
## Exemple d'ajouts (4/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_3.png){#fig:tri width=100%}
## Exemple d'ajouts (5/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_4.png){#fig:tri width=100%}
## Exemple d'ajouts (6/6) (voir [wikipedia](https://bit.ly/2vJs5p2))
![Ajout du premier point dans le super-triangle](figs/Bowyer-Watson_6.png){#fig:tri width=100%}
<!-- ## Pseudo-code de l'algorithme (1/2)
\scriptsize
```C
void bowyer_watson(point *points, int num_p, vec_triangle *t, int *num_t) {
ajout_super_triangle(vec_triangle, num_t); // ajout super triangle
pour chaque p dans points {
mauvais_triangles = vecteur_vide();
pour chaque t dans vec_triangle {
si p est dans le triangle circonscrit de t {
vecteur_push(mauvais_triangles, t);
}
}
vec_arretes = vecteur_vide();
pour chaque t dans mauvais_triangles {
pour chaque arrete dans t {
si l'arrete n'est partagée avec aucun triangle de mauvais_triangles {
vecteur_push(vec_arretes, arrete);
}
}
}
pour chaque t dans mauvais_triangles {
vec_remove(vec_triangles, t);
}
pour chaque arrete dans vec_arretes {
t = form_triangle_from_edge_and_point(arrete, p);
vector_push(vec_triangles, t);
}
pour chaque t dans vec_triangles {
if t contient un point du super triangle {
vec_remove(vec_triangles, t);
}
}
}
}
``` -->
## Pseudo-code de l'algorithme (1/2)
\scriptsize
```C
void bowyer_watson(point *points, int num_p, vec_triangle *t, int *num_t) {
ajout_super_triangle(vec_triangle, num_t); // ajout super triangle
pour chaque p dans points {
mauvais_triangles = vecteur_vide();
// on détermine les mauvais triangles
pour chaque t dans vec_triangle {
si p est dans le triangle circonscrit de t {
vecteur_push(mauvais_triangles, t);
}
}
vec_arretes = vecteur_vide();
// stockage du polynogone entourant le "trou"
pour chaque t dans mauvais_triangles {
pour chaque arrete dans t {
si l'arrete n'est partagée avec aucun triangle de mauvais_triangles {
vecteur_push(vec_arretes, arrete);
}
}
}
// on retire les mauvais triangles
pour chaque t dans mauvais_triangles {
vec_remove(vec_triangles, t);
}
}
```
## Pseudo-code de l'algorithme (2/2)
\scriptsize
```C
// on forme les nouveaux triangles et on les ajoute
pour chaque arrete dans vec_arretes {
t = form_triangle_from_edge_and_point(arrete, p);
vector_push(vec_triangles, t);
}
// on retire les points du super triangle
pour chaque t dans vec_triangles {
if t contient un point du super triangle {
vec_remove(vec_triangles, t);
}
}
}
}
```
## Appartenance au cercle circonscrit
* Une partie fondamentale de l'algorithme réside dans la capacité à déterminer si un point est dans le cercle circonscrit.
* On peut déterminer si un point $D$ est dans le triangle circonscrit délimité par les points $A$, $B$, et $C$ (qui sont ordonnés dans le sens inverse des aiguilles d'une montre), si
$$
\begin{vmatrix}A_{x}-D_{x}&A_{y}-D_{y}&(A_{x}-D_{x})^{2}+(A_{y}-D_{y})^{2}\\B_{x}-D_{x}&B_{y}-D_{y}&(B_{x}-D_{x})^{2}+(B_{y}-D_{y})^{2}\\C_{x}-D_{x}&C_{y}-D_{y}&(C_{x}-D_{x})^{2}+(C_{y}-D_{y})^{2}\end{vmatrix}>0,
$$
où $|.|$ signifie le calcul du déterminant.
\ No newline at end of file
figs/Bowyer-Watson_0.png

62.4 KiB

figs/Bowyer-Watson_1.png

88.1 KiB

figs/Bowyer-Watson_2.png

102 KiB

figs/Bowyer-Watson_3.png

103 KiB

figs/Bowyer-Watson_4.png

108 KiB

figs/Bowyer-Watson_6.png

60.5 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
id="Layer_1"
x="0px"
y="0px"
width="427.10229"
height="129.364"
viewBox="0 0 427.1023 129.364"
enable-background="new 0 0 250 300"
xml:space="preserve"
sodipodi:docname="PointSetTriangulations.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
id="metadata151"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs149">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview147"
showgrid="false"
inkscape:zoom="1.5733333"
inkscape:cx="176.06205"
inkscape:cy="77.593548"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<g
id="g4856"
transform="translate(196.52429,-157.989)"><g
id="g4702"><g
id="g4684"><polygon
points="228.896,213.671 201.896,267.671 93.896,285.671 30.896,258.671 21.896,204.671 111.896,159.671 192.896,177.671 "
id="polygon2"
style="fill:#e7e8e9" /><polygon
points="228.896,213.671 201.896,267.671 93.896,285.671 30.896,258.671 21.896,204.671 111.896,159.671 192.896,177.671 "
id="polygon4"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="156.896"
y1="204.67101"
x2="228.896"
y2="213.67101"
id="line6"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="156.896"
y1="204.67101"
x2="30.896"
y2="258.67099"
id="line8"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="111.896"
y1="159.67101"
x2="30.896"
y2="258.67099"
id="line10"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="192.896"
y1="177.67101"
x2="93.896004"
y2="222.67101"
id="line12"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="111.896"
y1="159.67101"
x2="93.896004"
y2="222.67101"
id="line20"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><line
x1="192.896"
y1="177.67101"
x2="156.896"
y2="204.67101"
id="line22"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><polyline
points="93.896,222.671 156.896,204.671 201.896,267.671 "
id="polyline24"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /><polyline
points="93.896,222.671 30.896,258.671 201.896,267.671 "
id="polyline26"
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round" /></g></g><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path30"
d="m 23.078,204.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path32"
d="m 23.078,204.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path34"
d="M 21.896,204.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path36"
d="m 113.078,159.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path38"
d="m 113.078,159.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path40"
d="M 111.896,159.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path42"
d="m 95.077,222.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path44"
d="m 95.077,222.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path46"
d="M 93.896,222.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path48"
d="m 158.077,204.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path50"
d="m 158.077,204.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path52"
d="M 156.896,204.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path54"
d="m 32.078,258.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path56"
d="m 32.078,258.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path58"
d="M 30.896,258.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path60"
d="m 95.077,285.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path62"
d="m 95.077,285.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path64"
d="M 93.896,285.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path66"
d="m 203.077,267.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path68"
d="m 203.077,267.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path70"
d="M 201.896,267.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path72"
d="m 194.077,177.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path74"
d="m 194.077,177.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.53 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path76"
d="M 192.896,177.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path78"
d="m 230.078,213.671 c 0,0.652 -0.53,1.182 -1.183,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.527,-1.182 1.183,-1.182 0.653,0 1.183,0.53 1.183,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path80"
d="m 230.078,213.671 c 0,0.652 -0.53,1.182 -1.183,1.182 -0.653,0 -1.183,-0.527 -1.183,-1.182 0,-0.652 0.527,-1.182 1.183,-1.182 0.653,0 1.183,0.53 1.183,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path82"
d="M 228.896,213.671" /></g><g
id="g4891"
transform="translate(-20.213,-13.9885)"><g
id="g4689"><polygon
style="fill:#e7e8e9"
id="polygon14"
points="30.896,114.671 21.896,60.671 111.896,15.671 192.896,33.671 228.896,69.671 201.896,123.671 93.896,141.671 " /><polygon
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round"
id="polygon16"
points="30.896,114.671 21.896,60.671 111.896,15.671 192.896,33.671 228.896,69.671 201.896,123.671 93.896,141.671 " /><line
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round"
id="line18"
y2="78.669998"
x2="93.896004"
y1="141.67"
x1="93.896004" /></g><polyline
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round"
id="polyline84"
points="201.896,123.67 93.896,78.67 156.896,60.67 201.896,123.67 192.896,33.67 156.896,60.67 111.896,15.67 93.896,78.67 " /><polyline
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round"
id="polyline86"
points="21.896,60.671 93.896,78.671 30.896,114.671 " /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path88"
d="m 23.078,60.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.529 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path90"
d="m 23.078,60.671 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.529 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path92"
d="M 21.896,60.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path94"
d="m 113.078,15.67 c 0,0.653 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.651 0.528,-1.181 1.183,-1.181 0.651,0 1.182,0.53 1.182,1.181" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path96"
d="m 113.078,15.67 c 0,0.653 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.651 0.528,-1.181 1.183,-1.181 0.651,0 1.182,0.53 1.182,1.181" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path98"
d="M 111.896,15.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path100"
d="m 95.077,78.67 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.528 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path102"
d="m 95.077,78.67 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.528 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path104"
d="M 93.896,78.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path106"
d="m 158.077,60.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.529 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.529 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path108"
d="m 158.077,60.671 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.529 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.529 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path110"
d="M 156.896,60.671" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path112"
d="m 32.078,114.67 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.531 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path114"
d="m 32.078,114.67 c 0,0.652 -0.53,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.651,0 1.182,0.531 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path116"
d="M 30.896,114.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path118"
d="m 95.077,141.67 c 0,0.653 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path120"
d="m 95.077,141.67 c 0,0.653 -0.529,1.182 -1.182,1.182 -0.652,0 -1.182,-0.527 -1.182,-1.182 0,-0.652 0.528,-1.182 1.182,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path122"
d="M 93.896,141.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path124"
d="m 203.077,123.67 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path126"
d="m 203.077,123.67 c 0,0.652 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.652 0.528,-1.182 1.183,-1.182 0.653,0 1.182,0.531 1.182,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path128"
d="M 201.896,123.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path130"
d="m 194.077,33.67 c 0,0.653 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.651 0.528,-1.181 1.183,-1.181 0.653,0 1.182,0.53 1.182,1.181" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path132"
d="m 194.077,33.67 c 0,0.653 -0.529,1.182 -1.182,1.182 -0.653,0 -1.183,-0.528 -1.183,-1.182 0,-0.651 0.528,-1.181 1.183,-1.181 0.653,0 1.182,0.53 1.182,1.181" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path134"
d="M 192.896,33.67" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path136"
d="m 230.078,69.671 c 0,0.652 -0.53,1.181 -1.183,1.181 -0.653,0 -1.183,-0.528 -1.183,-1.181 0,-0.652 0.527,-1.182 1.183,-1.182 0.653,0 1.183,0.53 1.183,1.182" /><path
style="fill:none;stroke:#000000"
inkscape:connector-curvature="0"
id="path138"
d="m 230.078,69.671 c 0,0.652 -0.53,1.181 -1.183,1.181 -0.653,0 -1.183,-0.528 -1.183,-1.181 0,-0.652 0.527,-1.182 1.183,-1.182 0.653,0 1.183,0.53 1.183,1.182" /><path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path140"
d="M 228.896,69.671" /></g>
</svg>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment