chapter 3 'complete'.
This commit is contained in:
parent
294cb4c501
commit
0a2e779181
BIN
arbeit/img/enoughCP.png
Normal file
BIN
arbeit/img/enoughCP.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
676
arbeit/img/enoughCP.svg
Normal file
676
arbeit/img/enoughCP.svg
Normal file
@ -0,0 +1,676 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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"
|
||||
width="94.223373mm"
|
||||
height="91.639961mm"
|
||||
viewBox="0 0 333.86235 324.70852"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="enoughCP.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.979899"
|
||||
inkscape:cx="128.58458"
|
||||
inkscape:cy="179.18795"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-smooth-nodes="false"
|
||||
inkscape:object-paths="true"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1141"
|
||||
inkscape:window-x="1680"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<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>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-218.18947,-467.98862)">
|
||||
<circle
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000080;stroke-width:0.98587084"
|
||||
id="path4543"
|
||||
cx="385.37317"
|
||||
cy="632.13879"
|
||||
r="158.09593" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138"
|
||||
cx="223.68947"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3"
|
||||
cx="259.56308"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6"
|
||||
cx="295.43668"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7"
|
||||
cx="331.31027"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5"
|
||||
cx="367.18387"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35"
|
||||
cx="403.05746"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62"
|
||||
cx="438.93106"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9"
|
||||
cx="474.80466"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1"
|
||||
cx="510.67825"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2"
|
||||
cx="546.55182"
|
||||
cy="473.48862"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-0"
|
||||
cx="223.68947"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-9"
|
||||
cx="259.56308"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-3"
|
||||
cx="295.43668"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-6"
|
||||
cx="331.31027"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-0"
|
||||
cx="367.18387"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-6"
|
||||
cx="403.05746"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-2"
|
||||
cx="438.93106"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-6"
|
||||
cx="474.80466"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-1"
|
||||
cx="510.67825"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-8"
|
||||
cx="546.55182"
|
||||
cy="508.34512"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-20"
|
||||
cx="223.68947"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-2"
|
||||
cx="259.56308"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-37"
|
||||
cx="295.43668"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-5"
|
||||
cx="331.31027"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-9"
|
||||
cx="367.18387"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-2"
|
||||
cx="403.05746"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-28"
|
||||
cx="438.93106"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-9"
|
||||
cx="474.80466"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-7"
|
||||
cx="510.67825"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-3"
|
||||
cx="546.55182"
|
||||
cy="578.05811"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-12"
|
||||
cx="223.68947"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-93"
|
||||
cx="259.56308"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-1"
|
||||
cx="295.43668"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-9"
|
||||
cx="331.31027"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-4"
|
||||
cx="367.18387"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-7"
|
||||
cx="403.05746"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-8"
|
||||
cx="438.93106"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-4"
|
||||
cx="474.80466"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-5"
|
||||
cx="510.67825"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-0"
|
||||
cx="546.55182"
|
||||
cy="612.91461"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-61"
|
||||
cx="223.68947"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-0"
|
||||
cx="259.56308"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-6"
|
||||
cx="295.43668"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-3"
|
||||
cx="331.31027"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-2"
|
||||
cx="367.18387"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-0"
|
||||
cx="403.05746"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-6"
|
||||
cx="438.93106"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-1"
|
||||
cx="474.80466"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-55"
|
||||
cx="510.67825"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-4"
|
||||
cx="546.55182"
|
||||
cy="647.77112"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-56"
|
||||
cx="223.68947"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-937"
|
||||
cx="259.56308"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-4"
|
||||
cx="295.43668"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-52"
|
||||
cx="331.31027"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-5"
|
||||
cx="367.18387"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-4"
|
||||
cx="403.05746"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-7"
|
||||
cx="438.93106"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-44"
|
||||
cx="474.80466"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-3"
|
||||
cx="510.67825"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-07"
|
||||
cx="546.55182"
|
||||
cy="682.62762"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-68"
|
||||
cx="223.68947"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-8"
|
||||
cx="259.56308"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-43"
|
||||
cx="295.43668"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-1"
|
||||
cx="331.31027"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-49"
|
||||
cx="367.18387"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-20"
|
||||
cx="403.05746"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-68"
|
||||
cx="438.93106"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-92"
|
||||
cx="474.80466"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-6"
|
||||
cx="510.67825"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-6"
|
||||
cx="546.55182"
|
||||
cy="717.48413"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-95"
|
||||
cx="223.68947"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-04"
|
||||
cx="259.56308"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-8"
|
||||
cx="295.43668"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-7"
|
||||
cx="331.31027"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-1"
|
||||
cx="367.18387"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-72"
|
||||
cx="403.05746"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-72"
|
||||
cx="438.93106"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-2"
|
||||
cx="474.80466"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-61"
|
||||
cx="510.67825"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-06"
|
||||
cx="546.55182"
|
||||
cy="752.34064"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-59"
|
||||
cx="223.68947"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-4"
|
||||
cx="259.56308"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-9"
|
||||
cx="295.43668"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-0"
|
||||
cx="331.31027"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-91"
|
||||
cx="367.18387"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-77"
|
||||
cx="403.05746"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-1"
|
||||
cx="438.93106"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-15"
|
||||
cx="474.80466"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-9"
|
||||
cx="510.67825"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#aad400;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-7"
|
||||
cx="546.55182"
|
||||
cy="787.19714"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-36"
|
||||
cx="223.68947"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-3-5"
|
||||
cx="259.56308"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-6-63"
|
||||
cx="295.43668"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-7-94"
|
||||
cx="331.31027"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-5-8"
|
||||
cx="367.18387"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-1"
|
||||
cx="403.05746"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-62-29"
|
||||
cx="438.93106"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-9-3"
|
||||
cx="474.80466"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-1-90"
|
||||
cx="510.67825"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-2-88"
|
||||
cx="546.55182"
|
||||
cy="543.2016"
|
||||
r="5" />
|
||||
<circle
|
||||
style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:#000000"
|
||||
id="path4138-35-7-5"
|
||||
cx="504.78043"
|
||||
cy="735.75458"
|
||||
r="5" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 18 KiB |
90
arbeit/ma.md
90
arbeit/ma.md
@ -35,7 +35,7 @@ informatics (i.e. layouting of circuit boards or stacking of 3D--objects).
|
||||
Moreover these are typically not static environments but requirements shift over
|
||||
time or from case to case.
|
||||
|
||||
Evolutional algorithms cope especially well with these problem domains while
|
||||
Evolutionary algorithms cope especially well with these problem domains while
|
||||
addressing all the issues at hand\cite{minai2006complex}. One of the main
|
||||
concerns in these algorithms is the formulation of the problems in terms of a
|
||||
genome and a fitness function. While one can typically use an arbitrary
|
||||
@ -72,7 +72,7 @@ First we introduce different topics in isolation in Chapter \ref{sec:back}. We
|
||||
take an abstract look at the definition of \ac{FFD} for a one--dimensional line
|
||||
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
|
||||
(in \ref{sec:back:ffdgood}).
|
||||
Then we establish some background--knowledge of evolutional algorithms (in
|
||||
Then we establish some background--knowledge of evolutionary algorithms (in
|
||||
\ref{sec:back:evo}) and why this is useful in our domain (in
|
||||
\ref{sec:back:evogood}).
|
||||
In a third step we take a look at the definition of the different evolvability
|
||||
@ -173,15 +173,15 @@ on the deformation itself.
|
||||
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon
|
||||
mesh albeit the downsides.
|
||||
|
||||
## What is evolutional optimization?
|
||||
## What is evolutionary optimization?
|
||||
\label{sec:back:evo}
|
||||
|
||||
In this thesis we are using an evolutional optimization strategy to solve the
|
||||
In this thesis we are using an evolutionary optimization strategy to solve the
|
||||
problem of finding the best parameters for our deformation. This approach,
|
||||
however, is very generic and we introduce it here in a broader sense.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{An outline of evolutional algorithms}
|
||||
\caption{An outline of evolutionary algorithms}
|
||||
\label{alg:evo}
|
||||
\begin{algorithmic}
|
||||
\STATE t := 0;
|
||||
@ -197,7 +197,7 @@ however, is very generic and we introduce it here in a broader sense.
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
||||
|
||||
The general shape of an evolutional algorithm (adapted from
|
||||
The general shape of an evolutionary algorithm (adapted from
|
||||
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here, $P(t)$
|
||||
denotes the population of parameters in step $t$ of the algorithm. The
|
||||
population contains $\mu$ individuals $a_i$ that fit the shape of the parameters
|
||||
@ -227,16 +227,16 @@ can be changed over time. One can for example start off with a high
|
||||
mutation--rate that cools off over time (i.e. by lowering the variance of a
|
||||
gaussian noise).
|
||||
|
||||
## Advantages of evolutional algorithms
|
||||
## Advantages of evolutionary algorithms
|
||||
\label{sec:back:evogood}
|
||||
|
||||
The main advantage of evolutional algorithms is the ability to find optima of
|
||||
The main advantage of evolutionary algorithms is the ability to find optima of
|
||||
general functions just with the help of a given fitness--function. With this
|
||||
most problems of simple gradient--based procedures, which often target the same
|
||||
error--function which measures the fitness, as an evolutional algorithm, but can
|
||||
error--function which measures the fitness, as an evolutionary algorithm, but can
|
||||
easily get stuck in local optima.
|
||||
|
||||
Components and techniques for evolutional algorithms are specifically known to
|
||||
Components and techniques for evolutionary algorithms are specifically known to
|
||||
help with different problems arising in the domain of
|
||||
optimization\cite{weise2012evolutionary}. An overview of the typical problems
|
||||
are shown in figure \ref{fig:probhard}.
|
||||
@ -249,20 +249,20 @@ are shown in figure \ref{fig:probhard}.
|
||||
|
||||
Most of the advantages stem from the fact that a gradient--based procedure has
|
||||
only one point of observation from where it evaluates the next steps, whereas an
|
||||
evolutional strategy starts with a population of guessed solutions. Because an
|
||||
evolutional strategy modifies the solution randomly, keeps the best solutions
|
||||
evolutionary strategy starts with a population of guessed solutions. Because an
|
||||
evolutionary strategy modifies the solution randomly, keeps the best solutions
|
||||
and purges the worst, it can also target multiple different hypothesis at the
|
||||
same time where the local optima die out in the face of other, better
|
||||
candidates.
|
||||
|
||||
If an analytic best solution exists and is easily computable (i.e. because the
|
||||
error--function is convex) an evolutional algorithm is not the right choice.
|
||||
error--function is convex) an evolutionary algorithm is not the right choice.
|
||||
Although both converge to the same solution, the analytic one is usually faster.
|
||||
|
||||
But in reality many problems have no analytic solution, because the problem is
|
||||
either not convex or there are so many parameters that an analytic solution
|
||||
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
||||
feasible. Here evolutional optimization has one more advantage as you can at
|
||||
feasible. Here evolutionary optimization has one more advantage as you can at
|
||||
least get a suboptimal solutions fast, which then refine over time.
|
||||
|
||||
## Criteria for the evolvability of linear deformations
|
||||
@ -300,9 +300,9 @@ is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
|
||||
optimal value and $0$ is the worst value.
|
||||
|
||||
This criterion should be characteristic for numeric stability on the on
|
||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of evolutional
|
||||
algorithms on the other hand\cite{anrichterEvol} as it is tied to the notion of
|
||||
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
||||
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is tied to
|
||||
the notion of locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||
|
||||
### Improvement Potential
|
||||
|
||||
@ -439,17 +439,55 @@ and use Cramers rule for inverting the small Jacobian and solving this system of
|
||||
linear equations.
|
||||
|
||||
|
||||
## Parametrisierung sinnvoll?
|
||||
## Deformation Grid
|
||||
|
||||
- Nachteile von Parametrisierung
|
||||
- wie in kap. \ref{sec:back:evo} zu sehen, ist Parametrisierung
|
||||
wichtig\cite{Rothlauf2006}.
|
||||
- Parametrisierung zwar lokal, aber nicht 1:1
|
||||
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||
- => DM--FFD kann abhelfen, further study.
|
||||
- Schlechte Parametrisierung sorgt dafür, dass CP u.U. nicht zur
|
||||
Parametrisierung verwendet werden.
|
||||
As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
|
||||
representation to map the general problem (mesh--fitting/optimization in our
|
||||
case) into a parameter-space it very important for the quality and runtime of
|
||||
evolutionary algorithms\cite{Rothlauf2006}.
|
||||
|
||||
Because our control--points are arranged in a grid, we can accurately represent
|
||||
each vertex--point inside the grids volume with proper B--Spline--coefficients
|
||||
between $[0,1[$ and --- as a consequence --- we have to embed our object into it
|
||||
(or create constant "dummy"-points outside).
|
||||
|
||||
The great advantage of B--Splines is the locality, direct impact of each
|
||||
control point without having a $1:1$--correlation, and a smooth deformation.
|
||||
While the advantages are great, the issues arise from the problem to decide
|
||||
where to place the control--points and how many.
|
||||
|
||||
One would normally think, that the more control--points you add, the better the
|
||||
result will be, but this is not the case for our B--Splines. Given any point $p$
|
||||
only the $2 \cdot (d-1)$ control--points contribute to the parametrization of
|
||||
that point^[Normally these are $d-1$ to each side, but at the boundaries the
|
||||
number gets increased to the inside to meet the required smoothness].
|
||||
This means, that a high resolution can have many control-points that are not
|
||||
contributing to any point on the surface and are thus completely irrelevant to
|
||||
the solution.
|
||||
|
||||
\begin{figure}[!ht]
|
||||
\begin{center}
|
||||
\includegraphics{img/enoughCP.png}
|
||||
\end{center}
|
||||
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
|
||||
yellow/green points contribute to the parametrization, red points don't.\newline
|
||||
An Example--point (blue) is solely determined by the position of the green
|
||||
control--points.}
|
||||
\label{fig:enoughCP}
|
||||
\end{figure}
|
||||
|
||||
|
||||
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the four red
|
||||
central points are not relevant for the parametrization of the circle.
|
||||
|
||||
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
|
||||
entfernen kann?}
|
||||
|
||||
For our tests we chose different uniformly sized grids and added gaussian noise
|
||||
onto each control-point^[For the special case of the outer layer we only applied
|
||||
noise away from the object] to simulate different starting-conditions.
|
||||
|
||||
\unsure[inline]{verweis auf DM--FFD?}
|
||||
|
||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||
\label{sec:eval}
|
||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
@ -179,7 +179,7 @@ simulation --- or known hard algorithmic problems in informatics
|
||||
these are typically not static environments but requirements shift over
|
||||
time or from case to case.
|
||||
|
||||
Evolutional algorithms cope especially well with these problem domains
|
||||
Evolutionary algorithms cope especially well with these problem domains
|
||||
while addressing all the issues at hand\cite{minai2006complex}. One of
|
||||
the main concerns in these algorithms is the formulation of the problems
|
||||
in terms of a genome and a fitness function. While one can typically use
|
||||
@ -220,7 +220,7 @@ First we introduce different topics in isolation in Chapter
|
||||
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
|
||||
for a one--dimensional line (in \ref{sec:back:ffd}) and discuss why this
|
||||
is a sensible deformation function (in \ref{sec:back:ffdgood}). Then we
|
||||
establish some background--knowledge of evolutional algorithms (in
|
||||
establish some background--knowledge of evolutionary algorithms (in
|
||||
\ref{sec:back:evo}) and why this is useful in our domain (in
|
||||
\ref{sec:back:evogood}). In a third step we take a look at the
|
||||
definition of the different evolvability criteria established in
|
||||
@ -328,18 +328,18 @@ major impact on the deformation itself.
|
||||
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
|
||||
high--polygon mesh albeit the downsides.
|
||||
|
||||
\section{What is evolutional
|
||||
optimization?}\label{what-is-evolutional-optimization}
|
||||
\section{What is evolutionary
|
||||
optimization?}\label{what-is-evolutionary-optimization}
|
||||
|
||||
\label{sec:back:evo}
|
||||
|
||||
In this thesis we are using an evolutional optimization strategy to
|
||||
In this thesis we are using an evolutionary optimization strategy to
|
||||
solve the problem of finding the best parameters for our deformation.
|
||||
This approach, however, is very generic and we introduce it here in a
|
||||
broader sense.
|
||||
|
||||
\begin{algorithm}
|
||||
\caption{An outline of evolutional algorithms}
|
||||
\caption{An outline of evolutionary algorithms}
|
||||
\label{alg:evo}
|
||||
\begin{algorithmic}
|
||||
\STATE t := 0;
|
||||
@ -355,7 +355,7 @@ broader sense.
|
||||
\end{algorithmic}
|
||||
\end{algorithm}
|
||||
|
||||
The general shape of an evolutional algorithm (adapted from
|
||||
The general shape of an evolutionary algorithm (adapted from
|
||||
\cite{back1993overview}) is outlined in Algorithm \ref{alg:evo}. Here,
|
||||
\(P(t)\) denotes the population of parameters in step \(t\) of the
|
||||
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
|
||||
@ -395,19 +395,19 @@ that can be changed over time. One can for example start off with a high
|
||||
mutation--rate that cools off over time (i.e.~by lowering the variance
|
||||
of a gaussian noise).
|
||||
|
||||
\section{Advantages of evolutional
|
||||
algorithms}\label{advantages-of-evolutional-algorithms}
|
||||
\section{Advantages of evolutionary
|
||||
algorithms}\label{advantages-of-evolutionary-algorithms}
|
||||
|
||||
\label{sec:back:evogood}
|
||||
|
||||
The main advantage of evolutional algorithms is the ability to find
|
||||
The main advantage of evolutionary algorithms is the ability to find
|
||||
optima of general functions just with the help of a given
|
||||
fitness--function. With this most problems of simple gradient--based
|
||||
procedures, which often target the same error--function which measures
|
||||
the fitness, as an evolutional algorithm, but can easily get stuck in
|
||||
the fitness, as an evolutionary algorithm, but can easily get stuck in
|
||||
local optima.
|
||||
|
||||
Components and techniques for evolutional algorithms are specifically
|
||||
Components and techniques for evolutionary algorithms are specifically
|
||||
known to help with different problems arising in the domain of
|
||||
optimization\cite{weise2012evolutionary}. An overview of the typical
|
||||
problems are shown in figure \ref{fig:probhard}.
|
||||
@ -420,21 +420,21 @@ problems are shown in figure \ref{fig:probhard}.
|
||||
|
||||
Most of the advantages stem from the fact that a gradient--based
|
||||
procedure has only one point of observation from where it evaluates the
|
||||
next steps, whereas an evolutional strategy starts with a population of
|
||||
guessed solutions. Because an evolutional strategy modifies the solution
|
||||
randomly, keeps the best solutions and purges the worst, it can also
|
||||
target multiple different hypothesis at the same time where the local
|
||||
optima die out in the face of other, better candidates.
|
||||
next steps, whereas an evolutionary strategy starts with a population of
|
||||
guessed solutions. Because an evolutionary strategy modifies the
|
||||
solution randomly, keeps the best solutions and purges the worst, it can
|
||||
also target multiple different hypothesis at the same time where the
|
||||
local optima die out in the face of other, better candidates.
|
||||
|
||||
If an analytic best solution exists and is easily computable
|
||||
(i.e.~because the error--function is convex) an evolutional algorithm is
|
||||
not the right choice. Although both converge to the same solution, the
|
||||
analytic one is usually faster.
|
||||
(i.e.~because the error--function is convex) an evolutionary algorithm
|
||||
is not the right choice. Although both converge to the same solution,
|
||||
the analytic one is usually faster.
|
||||
|
||||
But in reality many problems have no analytic solution, because the
|
||||
problem is either not convex or there are so many parameters that an
|
||||
analytic solution (mostly meaning the equivalence to an exhaustive
|
||||
search) is computationally not feasible. Here evolutional optimization
|
||||
search) is computationally not feasible. Here evolutionary optimization
|
||||
has one more advantage as you can at least get a suboptimal solutions
|
||||
fast, which then refine over time.
|
||||
|
||||
@ -478,7 +478,7 @@ criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
|
||||
|
||||
This criterion should be characteristic for numeric stability on the on
|
||||
hand\cite[chapter 2.7]{golub2012matrix} and for convergence speed of
|
||||
evolutional algorithms on the other hand\cite{anrichterEvol} as it is
|
||||
evolutionary algorithms on the other hand\cite{anrichterEvol} as it is
|
||||
tied to the notion of
|
||||
locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||
|
||||
@ -617,7 +617,55 @@ With the Gauss--Newton algorithm we iterate via the formula
|
||||
and use Cramers rule for inverting the small Jacobian and solving this
|
||||
system of linear equations.
|
||||
|
||||
\section{Parametrisierung sinnvoll?}\label{parametrisierung-sinnvoll}
|
||||
\section{Deformation Grid}\label{deformation-grid}
|
||||
|
||||
As mentioned in chapter \ref{sec:back:evo}, the way of choosing the
|
||||
representation to map the general problem (mesh--fitting/optimization in
|
||||
our case) into a parameter-space it very important for the quality and
|
||||
runtime of evolutionary algorithms\cite{Rothlauf2006}.
|
||||
|
||||
Because our control--points are arranged in a grid, we can accurately
|
||||
represent each vertex--point inside the grids volume with proper
|
||||
B--Spline--coefficients between \([0,1[\) and --- as a consequence ---
|
||||
we have to embed our object into it (or create constant ``dummy''-points
|
||||
outside).
|
||||
|
||||
The great advantage of B--Splines is the locality, direct impact of each
|
||||
control point without having a \(1:1\)--correlation, and a smooth
|
||||
deformation. While the advantages are great, the issues arise from the
|
||||
problem to decide where to place the control--points and how many.
|
||||
|
||||
One would normally think, that the more control--points you add, the
|
||||
better the result will be, but this is not the case for our B--Splines.
|
||||
Given any point \(p\) only the \(2 \cdot (d-1)\) control--points
|
||||
contribute to the parametrization of that point\footnote{Normally these
|
||||
are \(d-1\) to each side, but at the boundaries the number gets
|
||||
increased to the inside to meet the required smoothness}. This means,
|
||||
that a high resolution can have many control-points that are not
|
||||
contributing to any point on the surface and are thus completely
|
||||
irrelevant to the solution.
|
||||
|
||||
\begin{figure}[!ht]
|
||||
\begin{center}
|
||||
\includegraphics{img/enoughCP.png}
|
||||
\end{center}
|
||||
\caption{A high resolution ($10 \times 10$) of control--points over a circle.
|
||||
yellow/green points contribute to the parametrization, red points don't.\newline
|
||||
An Example--point (blue) is solely determined by the position of the green
|
||||
control--points.}
|
||||
\label{fig:enoughCP}
|
||||
\end{figure}
|
||||
|
||||
We illustrate this phenomenon in figure \ref{fig:enoughCP}, where the
|
||||
central points are not relevant for the parametrization of the circle.
|
||||
|
||||
\unsure[inline]{erwähnen, dass man aus $\vec{D}$ einfach die Null--Spalten
|
||||
entfernen kann?}
|
||||
|
||||
For our tests we chose different uniformly sized grids and added
|
||||
gaussian noise onto each control-point\footnote{For the special case of
|
||||
the outer layer we only applied noise away from the object} to
|
||||
simulate different starting-conditions.
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
|
Loading…
Reference in New Issue
Block a user