todays work
This commit is contained in:
parent
34fd8efaa8
commit
fc0c67f538
@ -59,7 +59,7 @@
|
|||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{tabular}{lrl}
|
\begin{tabular}{lrl}
|
||||||
\hspace{0.99cm} Supervisor:~&Prof.~Dr.~&Mario Botsch\\
|
\hspace{0.99cm} Supervisor:~&Prof.~Dr.~&Mario Botsch\\
|
||||||
\hspace{0.99cm} &Dipl.~Math.~&Alexander~Richter
|
\hspace{0.99cm} &Dipl.~Math.~&Andreas~Richter
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\end{center}
|
\end{center}
|
||||||
\vspace*{\stretch{.2}}
|
\vspace*{\stretch{.2}}
|
||||||
|
BIN
arbeit/img/B-Splines.png
Normal file
BIN
arbeit/img/B-Splines.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
405
arbeit/img/B-Splines.svg
Normal file
405
arbeit/img/B-Splines.svg
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||||
|
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:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="117.30389mm"
|
||||||
|
height="66.311211mm"
|
||||||
|
viewBox="0 0 415.64372 234.96098"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="B-Splines.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient6399">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6401" />
|
||||||
|
<stop
|
||||||
|
id="stop6407"
|
||||||
|
offset="0.55555558"
|
||||||
|
style="stop-color:#ffff00;stop-opacity:1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#00ff00;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop6403" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6329-9-7-3">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6377" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6329-9-7">
|
||||||
|
<stop
|
||||||
|
id="stop6373"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6329-9">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6367" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6369">
|
||||||
|
<stop
|
||||||
|
id="stop6363"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6347"
|
||||||
|
osb:paint="solid">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6349" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6341"
|
||||||
|
osb:paint="solid">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6343" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6335"
|
||||||
|
osb:paint="solid">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6337" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6329">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff0000;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop6331" />
|
||||||
|
</linearGradient>
|
||||||
|
<marker
|
||||||
|
inkscape:isstock="true"
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker4580"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||||
|
id="path4582"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="marker4540"
|
||||||
|
style="overflow:visible"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<path
|
||||||
|
id="path4542"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||||
|
style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#cccccc;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:isstock="true"
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker4488"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||||
|
id="path4490"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<path
|
||||||
|
id="path4203"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6399"
|
||||||
|
id="linearGradient6405"
|
||||||
|
x1="61.428577"
|
||||||
|
y1="576.29077"
|
||||||
|
x2="200.71428"
|
||||||
|
y2="576.29077"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6399"
|
||||||
|
id="linearGradient6423"
|
||||||
|
x1="309.28772"
|
||||||
|
y1="576.29077"
|
||||||
|
x2="469.84653"
|
||||||
|
y2="576.29077"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8"
|
||||||
|
inkscape:cx="176.80108"
|
||||||
|
inkscape:cy="131.06794"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:object-paths="false"
|
||||||
|
inkscape:snap-object-midpoints="true"
|
||||||
|
inkscape:snap-others="true"
|
||||||
|
inkscape:snap-nodes="true"
|
||||||
|
inkscape:snap-center="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(-57.714292,-393.25836)">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient6405);stroke-opacity:1"
|
||||||
|
d="m 61.428577,576.29077 139.285703,0"
|
||||||
|
id="path6389"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 60.503738,433.4594 140.916282,0.12627"
|
||||||
|
id="path4136"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 309.28772,437.17931 c 31.66531,0 31.84405,-39.74202 47.72971,-26.51651 15.88566,13.22551 32.30661,71.10193 39.90102,37.37565 7.5944,-33.72628 14.51411,-41.77591 34.09265,-36.11296 19.57854,5.66295 14.2684,23.35978 38.82773,23.73859"
|
||||||
|
id="path4140"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czzzc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient6423);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 309.28772,580.26322 c 31.66531,0 31.84405,-39.74202 47.72971,-26.51651 15.88566,13.22551 32.30661,71.10193 39.90102,37.37565 7.5944,-33.72628 14.51411,-41.77591 34.09265,-36.11296 19.57854,5.66295 14.2684,23.35978 38.82773,23.73859"
|
||||||
|
id="path4140-6"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czzzc" />
|
||||||
|
<path
|
||||||
|
style="fill:#cccccc;fill-rule:evenodd;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4540)"
|
||||||
|
d="m 233.03571,433.20686 50.71429,0"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 130.96188,474.23721 0,56.7857"
|
||||||
|
id="path4162"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4488)"
|
||||||
|
d="m 389.56713,532.84294 0,-56.78571"
|
||||||
|
id="path4162-7"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4580)"
|
||||||
|
d="m 233.03571,576.29077 50.71429,0"
|
||||||
|
id="path4160-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<flowRoot
|
||||||
|
xml:space="preserve"
|
||||||
|
id="flowRoot4644"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
transform="translate(22.576306,-94.642857)"><flowRegion
|
||||||
|
id="flowRegion4646"><rect
|
||||||
|
id="rect4648"
|
||||||
|
width="66.785713"
|
||||||
|
height="51.785713"
|
||||||
|
x="226.07143"
|
||||||
|
y="477.71936" /></flowRegion><flowPara
|
||||||
|
id="flowPara4650">?</flowPara></flowRoot> <circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670"
|
||||||
|
cx="61.428577"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2"
|
||||||
|
cx="200.71428"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-9"
|
||||||
|
cx="310.02182"
|
||||||
|
cy="580.25604"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-3-1"
|
||||||
|
cx="343.75003"
|
||||||
|
cy="580.57648"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-5-2"
|
||||||
|
cx="340.71426"
|
||||||
|
cy="539.86218"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-6-7"
|
||||||
|
cx="373.39285"
|
||||||
|
cy="565.93359"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0"
|
||||||
|
cx="469.64374"
|
||||||
|
cy="578.74463"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0-9"
|
||||||
|
cx="390.35715"
|
||||||
|
cy="624.50507"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0-3"
|
||||||
|
cx="404.28571"
|
||||||
|
cy="557.00507"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0-6"
|
||||||
|
cx="411.78571"
|
||||||
|
cy="549.14789"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0-0"
|
||||||
|
cx="451.42856"
|
||||||
|
cy="560.57648"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-2-0-62"
|
||||||
|
cx="445.71429"
|
||||||
|
cy="577.71936"
|
||||||
|
r="3.2142856" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#d4aa00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 309.8954,580.47189 33.92857,0.40046 -3.05584,-41.47189 32.41026,26.34935 16.85443,58.56399 14.58157,-66.80366 6.99493,-8.29351 34.09446,29.84463 5.7285,-18.26069 18.42722,18.36158"
|
||||||
|
id="path4771"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccccc" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-6"
|
||||||
|
cx="76.90477"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-1"
|
||||||
|
cx="92.380959"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-8"
|
||||||
|
cx="107.85715"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-7"
|
||||||
|
cx="123.33334"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-92"
|
||||||
|
cx="138.80952"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-0"
|
||||||
|
cx="154.28572"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-23"
|
||||||
|
cx="169.7619"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
<circle
|
||||||
|
style="opacity:1;fill:#c83737;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="path4670-75"
|
||||||
|
cx="185.2381"
|
||||||
|
cy="576.29077"
|
||||||
|
r="3.2142856" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
137
arbeit/ma.md
137
arbeit/ma.md
@ -26,7 +26,7 @@ Unless otherwise noted the following holds:
|
|||||||
\improvement[inline]{Mehr Bilder}
|
\improvement[inline]{Mehr Bilder}
|
||||||
|
|
||||||
Many modern industrial design processes require advanced optimization methods
|
Many modern industrial design processes require advanced optimization methods
|
||||||
do to the increased complexity. These designs have to adhere to more and more
|
due to the increased complexity. These designs have to adhere to more and more
|
||||||
degrees of freedom as methods refine and/or other methods are used. Examples for
|
degrees of freedom as methods refine and/or other methods are used. Examples for
|
||||||
this are physical domains like aerodynamic (i.e. drag), fluid dynamics (i.e.
|
this are physical domains like aerodynamic (i.e. drag), fluid dynamics (i.e.
|
||||||
throughput of liquid) --- where the complexity increases with the temporal and
|
throughput of liquid) --- where the complexity increases with the temporal and
|
||||||
@ -38,35 +38,54 @@ time or from case to case.
|
|||||||
Evolutionary 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
|
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
|
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
|
*genome* and *fitness--function*. While one can typically use an arbitrary
|
||||||
cost--function for the fitness--functions (i.e. amount of drag, amount of space,
|
cost--function for the *fitness--functions* (i.e. amount of drag, amount of space,
|
||||||
etc.), the translation of the problem--domain into a simple parametric
|
etc.), the translation of the problem--domain into a simple parametric
|
||||||
representation can be challenging.
|
representation (the *genome*) can be challenging.
|
||||||
|
|
||||||
The quality of such a representation in biological evolution is called
|
This translation is often necessary as the target of the optimization may have
|
||||||
*evolvability*\cite{wagner1996complex} and is at the core of this thesis, as the
|
too many degrees of freedom. In the example of an aerodynamic simulation of drag
|
||||||
|
onto an object, those objects--designs tend to have a high number of vertices to
|
||||||
|
adhere to various requirements (visual, practical, physical, etc.). A simpler
|
||||||
|
representation of the same object in only a few parameters that manipulate the
|
||||||
|
whole in a sensible matter are desirable, as this often decreases the
|
||||||
|
computation time significantly.
|
||||||
|
|
||||||
|
Additionally one can exploit the fact, that drag in this case is especially
|
||||||
|
sensitive to non--smooth surfaces, so that a smooth local manipulation of the
|
||||||
|
surface as a whole is more advantageous than merely random manipulation of the
|
||||||
|
vertices.
|
||||||
|
|
||||||
|
The quality of such a low-dimensional representation in biological evolution is
|
||||||
|
strongly tied to the notion of *evolvability*\cite{wagner1996complex}, as the
|
||||||
parametrization of the problem has serious implications on the convergence speed
|
parametrization of the problem has serious implications on the convergence speed
|
||||||
and the quality of the solution\cite{Rothlauf2006}.
|
and the quality of the solution\cite{Rothlauf2006}.
|
||||||
However, there is no consensus on how *evolvability* is defined and the meaning
|
However, there is no consensus on how *evolvability* is defined and the meaning
|
||||||
varies from context to context\cite{richter2015evolvability}.
|
varies from context to context\cite{richter2015evolvability}, so there is need
|
||||||
|
for some criteria we can measure, so that we are able to compare different
|
||||||
|
representations to learn and improve upon these.
|
||||||
|
|
||||||
|
One example of such a general representation of an object is to generate random
|
||||||
|
points and represent vertices of an object as distances to these points --- for
|
||||||
|
example via \acf{RBF}. If one (or the algorithm) would move such a point the
|
||||||
|
object will get deformed locally (due to the \ac{RBF}). As this results in a
|
||||||
|
simple mapping from the parameter-space onto the object one can try out
|
||||||
|
different representations of the same object and evaluate the *evolvability*.
|
||||||
|
This is exactly what Richter et al.\cite{anrichterEvol} have done.
|
||||||
|
|
||||||
As we transfer the results of Richter et al.\cite{anrichterEvol} from using
|
As we transfer the results of Richter et al.\cite{anrichterEvol} from using
|
||||||
\acf{RBF} as a representation to manipulate a geometric mesh to the use of
|
\acf{RBF} as a representation to manipulate geometric objects to the use of
|
||||||
\acf{FFD} we will use the same definition for evolvability the original author
|
\acf{FFD} we will use the same definition for evolvability the original author
|
||||||
used, namely *regularity*, *variability*, and *improvement potential*. We
|
used, namely *regularity*, *variability*, and *improvement potential*. We
|
||||||
introduce these term in detail in Chapter \ref{sec:intro:rvi}.
|
introduce these term in detail in Chapter \ref{sec:intro:rvi}. In the original
|
||||||
|
publication the author could show a correlation between these
|
||||||
|
evolvability--criteria with the quality and potential of such optimization.
|
||||||
|
|
||||||
In the original publication the author used random sampled points weighted with
|
We will replicate the same setup on the same objects but use \acf{FFD} instead of
|
||||||
\acf{RBF} to deform the mesh and showed that the mentioned criteria of
|
|
||||||
*regularity*, *variability*, and *improvement potential* correlate with the quality
|
|
||||||
and potential of such optimization.
|
|
||||||
|
|
||||||
We will replicate the same setup on the same meshes but use \acf{FFD} instead of
|
|
||||||
\acf{RBF} to create a local deformation near the control points and evaluate if
|
\acf{RBF} to create a local deformation near the control points and evaluate if
|
||||||
the evolution--criteria still work as a predictor given the different deformation
|
the evolution--criteria still work as a predictor for *evolvability* of the
|
||||||
scheme, as suspected in \cite{anrichterEvol}.
|
representation given the different deformation scheme, as suspected in
|
||||||
|
\cite{anrichterEvol}.
|
||||||
## Outline of this thesis
|
|
||||||
|
|
||||||
First we introduce different topics in isolation in Chapter \ref{sec:back}. We
|
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
|
take an abstract look at the definition of \ac{FFD} for a one--dimensional line
|
||||||
@ -79,7 +98,7 @@ In a third step we take a look at the definition of the different evolvability
|
|||||||
criteria established in \cite{anrichterEvol}.
|
criteria established in \cite{anrichterEvol}.
|
||||||
|
|
||||||
In Chapter \ref{sec:impl} we take a look at our implementation of \ac{FFD} and
|
In Chapter \ref{sec:impl} we take a look at our implementation of \ac{FFD} and
|
||||||
the adaptation for 3D--meshes.
|
the adaptation for 3D--meshes that were used.
|
||||||
|
|
||||||
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we use to
|
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we use to
|
||||||
evaluate the different evolvability--criteria incorporating all aspects
|
evaluate the different evolvability--criteria incorporating all aspects
|
||||||
@ -94,13 +113,39 @@ Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
|
|||||||
\label{sec:back:ffd}
|
\label{sec:back:ffd}
|
||||||
|
|
||||||
First of all we have to establish how a \ac{FFD} works and why this is a good
|
First of all we have to establish how a \ac{FFD} works and why this is a good
|
||||||
tool for deforming meshes in the first place. For simplicity we only summarize
|
tool for deforming geometric objects (esp. meshes in our case) in the first
|
||||||
the 1D--case from \cite{spitzmuller1996bezier} here and go into the extension to
|
place. For simplicity we only summarize the 1D--case from
|
||||||
the 3D case in chapter \ref{3dffd}.
|
\cite{spitzmuller1996bezier} here and go into the extension to the 3D case in
|
||||||
|
chapter \ref{3dffd}.
|
||||||
|
|
||||||
|
The main idea of \ac{FFD} is to create a function $s : [0,1[^d \mapsto
|
||||||
|
\mathbb{R}^d$ that spans a certain part of a vector--space and is only linearly
|
||||||
|
parametrized by some special control points $p_i$ and an constant
|
||||||
|
attribution--function $a_i(u)$, so
|
||||||
|
$$
|
||||||
|
s(u) = \sum_i a_i(u) p_i
|
||||||
|
$$
|
||||||
|
can be thought of a representation of the inside of the convex hull generated by
|
||||||
|
the control points where each point can be accessed by the right $u \in [0,1[$.
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.7\textwidth]{img/B-Splines.png}
|
||||||
|
\end{center}
|
||||||
|
\caption[Example of B-Splines]{Example of a parametrization of a line with
|
||||||
|
corresponding deformation to generate a deformed objet}
|
||||||
|
\label{fig:bspline}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
In the example in figure \ref{fig:bspline}, the control--points are indicated as
|
||||||
|
red dots and the color-gradient should hint at the $u$--values ranging from
|
||||||
|
$0$ to $1$.
|
||||||
|
|
||||||
|
We now define a \acf{FFD} by the following:
|
||||||
Given an arbitrary number of points $p_i$ alongside a line, we map a scalar
|
Given an arbitrary number of points $p_i$ alongside a line, we map a scalar
|
||||||
value $\tau_i \in [0,1[$ to each point with $\tau_i < \tau_{i+1} \forall i$.
|
value $\tau_i \in [0,1[$ to each point with $\tau_i < \tau_{i+1} \forall i$
|
||||||
Given a degree of the target polynomial $d$ we define the curve
|
according to the position of $p_i$ on said line.
|
||||||
|
Additionally, given a degree of the target polynomial $d$ we define the curve
|
||||||
$N_{i,d,\tau_i}(u)$ as follows:
|
$N_{i,d,\tau_i}(u)$ as follows:
|
||||||
|
|
||||||
\begin{equation} \label{eqn:ffd1d1}
|
\begin{equation} \label{eqn:ffd1d1}
|
||||||
@ -114,7 +159,7 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
|
|||||||
If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get
|
If we now multiply every $p_i$ with the corresponding $N_{i,d,\tau_i}(u)$ we get
|
||||||
the contribution of each point $p_i$ to the final curve--point parameterized only
|
the contribution of each point $p_i$ to the final curve--point parameterized only
|
||||||
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
|
by $u \in [0,1[$. As can be seen from \eqref{eqn:ffd1d2} we only access points
|
||||||
$[i..i+d]$ for any given $i$^[one more for each recursive step.], which gives
|
$[p_i..p_{i+d}]$ for any given $i$^[one more for each recursive step.], which gives
|
||||||
us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local
|
us, in combination with choosing $p_i$ and $\tau_i$ in order, only a local
|
||||||
interference of $d+1$ points.
|
interference of $d+1$ points.
|
||||||
|
|
||||||
@ -130,10 +175,28 @@ $$s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i$$
|
|||||||
these derivations yield $\frac{\partial^d}{\partial u} s(u) = 0$.
|
these derivations yield $\frac{\partial^d}{\partial u} s(u) = 0$.
|
||||||
|
|
||||||
Another interesting property of these recursive polynomials is that they are
|
Another interesting property of these recursive polynomials is that they are
|
||||||
continuous (given $d \ge 1$) as every $p_i$ gets blended in linearly between
|
continuous (given $d \ge 1$) as every $p_i$ gets blended in between $\tau_i$ and
|
||||||
$\tau_i$ and $\tau_{i+d}$ and out linearly between $\tau_{i+1}$ and
|
$\tau_{i+d}$ and out between $\tau_{i+1}$, and $\tau_{i+d+1}$ as can bee seen from the two coefficients
|
||||||
$\tau_{i+d+1}$ as can bee seen from the two coefficients in every step of the
|
in every step of the recursion.
|
||||||
recursion.
|
|
||||||
|
\improvement[inline]{Weitere Eigenschaften erwähnen:
|
||||||
|
\newline Convex hull
|
||||||
|
\newline $\sum_i N_i = 1$?
|
||||||
|
\newline Bilder von Basisfunktionen zur Visualisierung.
|
||||||
|
}
|
||||||
|
|
||||||
|
For a given number of points $v_1,\dots,v_n$ we can then calculate
|
||||||
|
the contributions $n_{i,j}~:=~N_{j,d,\tau}$ of each control point $p_j$ to get the
|
||||||
|
projection from the control--point--space into the object--space:
|
||||||
|
$$
|
||||||
|
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
||||||
|
$$
|
||||||
|
or written for all points at the same time:
|
||||||
|
$$
|
||||||
|
\vec{v} = \vec{N} \vec{p}
|
||||||
|
$$
|
||||||
|
where $\vec{N}$ is the $n \times m$ transformation--matrix (later on called
|
||||||
|
**deformation matrix**) for $n$ object--space--points and $m$ control--points.
|
||||||
|
|
||||||
### Why is \ac{FFD} a good deformation function?
|
### Why is \ac{FFD} a good deformation function?
|
||||||
\label{sec:back:ffdgood}
|
\label{sec:back:ffdgood}
|
||||||
@ -202,7 +265,7 @@ The general shape of an evolutionary algorithm (adapted from
|
|||||||
denotes the population of parameters in step $t$ of the algorithm. The
|
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
|
population contains $\mu$ individuals $a_i$ that fit the shape of the parameters
|
||||||
we are looking for. Typically these are initialized by a random guess or just
|
we are looking for. Typically these are initialized by a random guess or just
|
||||||
zero. Further on we need a so--called *fitness--function* $\Phi : I \mapsto M$ that can take
|
zero. Further on we need a so--called *fitness--function* $\Phi : I \mapsto M$\improvement{Was ist $I,M$?\newline Bezug Genotyp/Phenotyp} that can take
|
||||||
each parameter to a measurable space along a convergence--function $c : I \mapsto
|
each parameter to a measurable space along a convergence--function $c : I \mapsto
|
||||||
\mathbb{B}$ that terminates the optimization.
|
\mathbb{B}$ that terminates the optimization.
|
||||||
|
|
||||||
@ -263,16 +326,20 @@ 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
|
either not convex or there are so many parameters that an analytic solution
|
||||||
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
(mostly meaning the equivalence to an exhaustive search) is computationally not
|
||||||
feasible. Here evolutionary 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.
|
least get suboptimal solutions fast, which then refine over time.
|
||||||
|
|
||||||
## Criteria for the evolvability of linear deformations
|
## Criteria for the evolvability of linear deformations
|
||||||
\label{sec:intro:rvi}
|
\label{sec:intro:rvi}
|
||||||
|
|
||||||
|
\improvement[inline]{Nomenklatur. Was ist $\vec{U}$? Kurz Matrix--Darstellung
|
||||||
|
des Problems & Rückgriff auf FFD-Kapitel.}
|
||||||
|
|
||||||
|
|
||||||
### Variability
|
### Variability
|
||||||
|
|
||||||
In \cite{anrichterEvol} *variability* is defined as
|
In \cite{anrichterEvol} *variability* is defined as
|
||||||
$$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},$$
|
$$V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},$$
|
||||||
whereby $\vec{U}$ is the $m \times n$ deformation--Matrix used to map the $m$
|
whereby $\vec{U}$ is the $n \times m$ deformation--Matrix \unsure{Nicht $(n\cdot d) \times m$? Wegen $u,v,w$?} used to map the $m$
|
||||||
control points onto the $n$ vertices.
|
control points onto the $n$ vertices.
|
||||||
|
|
||||||
Given $n = m$, an identical number of control--points and vertices, this
|
Given $n = m$, an identical number of control--points and vertices, this
|
||||||
@ -282,10 +349,6 @@ the solution is to trivially move every control--point onto a target--point.
|
|||||||
In praxis the value of $V(\vec{U})$ is typically $\ll 1$, because as
|
In praxis the value of $V(\vec{U})$ is typically $\ll 1$, because as
|
||||||
there are only few control--points for many vertices, so $m \ll n$.
|
there are only few control--points for many vertices, so $m \ll n$.
|
||||||
|
|
||||||
Additionally in our setup we connect neighbouring control--points in a grid so
|
|
||||||
each control point is not independent, but typically depends on $4^d$
|
|
||||||
control--points for an $d$--dimensional control mesh.
|
|
||||||
|
|
||||||
### Regularity
|
### Regularity
|
||||||
|
|
||||||
*Regularity* is defined\cite{anrichterEvol} as
|
*Regularity* is defined\cite{anrichterEvol} as
|
||||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
160
arbeit/ma.tex
160
arbeit/ma.tex
@ -169,7 +169,7 @@ Unless otherwise noted the following holds:
|
|||||||
\improvement[inline]{Mehr Bilder}
|
\improvement[inline]{Mehr Bilder}
|
||||||
|
|
||||||
Many modern industrial design processes require advanced optimization
|
Many modern industrial design processes require advanced optimization
|
||||||
methods do to the increased complexity. These designs have to adhere to
|
methods due to the increased complexity. These designs have to adhere to
|
||||||
more and more degrees of freedom as methods refine and/or other methods
|
more and more degrees of freedom as methods refine and/or other methods
|
||||||
are used. Examples for this are physical domains like aerodynamic
|
are used. Examples for this are physical domains like aerodynamic
|
||||||
(i.e.~drag), fluid dynamics (i.e.~throughput of liquid) --- where the
|
(i.e.~drag), fluid dynamics (i.e.~throughput of liquid) --- where the
|
||||||
@ -182,39 +182,59 @@ time or from case to case.
|
|||||||
Evolutionary 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
|
while addressing all the issues at hand\cite{minai2006complex}. One of
|
||||||
the main concerns in these algorithms is the formulation of the problems
|
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
|
in terms of a \emph{genome} and \emph{fitness--function}. While one can
|
||||||
an arbitrary cost--function for the fitness--functions (i.e.~amount of
|
typically use an arbitrary cost--function for the
|
||||||
drag, amount of space, etc.), the translation of the problem--domain
|
\emph{fitness--functions} (i.e.~amount of drag, amount of space, etc.),
|
||||||
into a simple parametric representation can be challenging.
|
the translation of the problem--domain into a simple parametric
|
||||||
|
representation (the \emph{genome}) can be challenging.
|
||||||
|
|
||||||
The quality of such a representation in biological evolution is called
|
This translation is often necessary as the target of the optimization
|
||||||
\emph{evolvability}\cite{wagner1996complex} and is at the core of this
|
may have too many degrees of freedom. In the example of an aerodynamic
|
||||||
thesis, as the parametrization of the problem has serious implications
|
simulation of drag onto an object, those objects--designs tend to have a
|
||||||
on the convergence speed and the quality of the
|
high number of vertices to adhere to various requirements (visual,
|
||||||
solution\cite{Rothlauf2006}. However, there is no consensus on how
|
practical, physical, etc.). A simpler representation of the same object
|
||||||
\emph{evolvability} is defined and the meaning varies from context to
|
in only a few parameters that manipulate the whole in a sensible matter
|
||||||
context\cite{richter2015evolvability}.
|
are desirable, as this often decreases the computation time
|
||||||
|
significantly.
|
||||||
|
|
||||||
|
Additionally one can exploit the fact, that drag in this case is
|
||||||
|
especially sensitive to non--smooth surfaces, so that a smooth local
|
||||||
|
manipulation of the surface as a whole is more advantageous than merely
|
||||||
|
random manipulation of the vertices.
|
||||||
|
|
||||||
|
The quality of such a low-dimensional representation in biological
|
||||||
|
evolution is strongly tied to the notion of
|
||||||
|
\emph{evolvability}\cite{wagner1996complex}, as the parametrization of
|
||||||
|
the problem has serious implications on the convergence speed and the
|
||||||
|
quality of the solution\cite{Rothlauf2006}. However, there is no
|
||||||
|
consensus on how \emph{evolvability} is defined and the meaning varies
|
||||||
|
from context to context\cite{richter2015evolvability}, so there is need
|
||||||
|
for some criteria we can measure, so that we are able to compare
|
||||||
|
different representations to learn and improve upon these.
|
||||||
|
|
||||||
|
One example of such a general representation of an object is to generate
|
||||||
|
random points and represent vertices of an object as distances to these
|
||||||
|
points --- for example via \acf{RBF}. If one (or the algorithm) would
|
||||||
|
move such a point the object will get deformed locally (due to the
|
||||||
|
\ac{RBF}). As this results in a simple mapping from the parameter-space
|
||||||
|
onto the object one can try out different representations of the same
|
||||||
|
object and evaluate the \emph{evolvability}. This is exactly what
|
||||||
|
Richter et al.\cite{anrichterEvol} have done.
|
||||||
|
|
||||||
As we transfer the results of Richter et al.\cite{anrichterEvol} from
|
As we transfer the results of Richter et al.\cite{anrichterEvol} from
|
||||||
using \acf{RBF} as a representation to manipulate a geometric mesh to
|
using \acf{RBF} as a representation to manipulate geometric objects to
|
||||||
the use of \acf{FFD} we will use the same definition for evolvability
|
the use of \acf{FFD} we will use the same definition for evolvability
|
||||||
the original author used, namely \emph{regularity}, \emph{variability},
|
the original author used, namely \emph{regularity}, \emph{variability},
|
||||||
and \emph{improvement potential}. We introduce these term in detail in
|
and \emph{improvement potential}. We introduce these term in detail in
|
||||||
Chapter \ref{sec:intro:rvi}.
|
Chapter \ref{sec:intro:rvi}. In the original publication the author
|
||||||
|
could show a correlation between these evolvability--criteria with the
|
||||||
|
quality and potential of such optimization.
|
||||||
|
|
||||||
In the original publication the author used random sampled points
|
We will replicate the same setup on the same objects but use \acf{FFD}
|
||||||
weighted with \acf{RBF} to deform the mesh and showed that the mentioned
|
|
||||||
criteria of \emph{regularity}, \emph{variability}, and \emph{improvement
|
|
||||||
potential} correlate with the quality and potential of such
|
|
||||||
optimization.
|
|
||||||
|
|
||||||
We will replicate the same setup on the same meshes but use \acf{FFD}
|
|
||||||
instead of \acf{RBF} to create a local deformation near the control
|
instead of \acf{RBF} to create a local deformation near the control
|
||||||
points and evaluate if the evolution--criteria still work as a predictor
|
points and evaluate if the evolution--criteria still work as a predictor
|
||||||
given the different deformation scheme, as suspected in
|
for \emph{evolvability} of the representation given the different
|
||||||
\cite{anrichterEvol}.
|
deformation scheme, as suspected in \cite{anrichterEvol}.
|
||||||
|
|
||||||
\section{Outline of this thesis}\label{outline-of-this-thesis}
|
|
||||||
|
|
||||||
First we introduce different topics in isolation in Chapter
|
First we introduce different topics in isolation in Chapter
|
||||||
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
|
\ref{sec:back}. We take an abstract look at the definition of \ac{FFD}
|
||||||
@ -227,7 +247,7 @@ definition of the different evolvability criteria established in
|
|||||||
\cite{anrichterEvol}.
|
\cite{anrichterEvol}.
|
||||||
|
|
||||||
In Chapter \ref{sec:impl} we take a look at our implementation of
|
In Chapter \ref{sec:impl} we take a look at our implementation of
|
||||||
\ac{FFD} and the adaptation for 3D--meshes.
|
\ac{FFD} and the adaptation for 3D--meshes that were used.
|
||||||
|
|
||||||
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we
|
Next, in Chapter \ref{sec:eval}, we describe the different scenarios we
|
||||||
use to evaluate the different evolvability--criteria incorporating all
|
use to evaluate the different evolvability--criteria incorporating all
|
||||||
@ -244,14 +264,39 @@ in Chapter \ref{sec:dis}.
|
|||||||
\label{sec:back:ffd}
|
\label{sec:back:ffd}
|
||||||
|
|
||||||
First of all we have to establish how a \ac{FFD} works and why this is a
|
First of all we have to establish how a \ac{FFD} works and why this is a
|
||||||
good tool for deforming meshes in the first place. For simplicity we
|
good tool for deforming geometric objects (esp. meshes in our case) in
|
||||||
only summarize the 1D--case from \cite{spitzmuller1996bezier} here and
|
the first place. For simplicity we only summarize the 1D--case from
|
||||||
go into the extension to the 3D case in chapter \ref{3dffd}.
|
\cite{spitzmuller1996bezier} here and go into the extension to the 3D
|
||||||
|
case in chapter~\ref{3dffd}.
|
||||||
|
|
||||||
|
The main idea of \ac{FFD} is to create a function
|
||||||
|
\(s : [0,1[^d \mapsto \mathbb{R}^d\) that spans a certain part of a
|
||||||
|
vector--space and is only linearly parametrized by some special control
|
||||||
|
points \(p_i\) and an constant attribution--function \(a_i(u)\), so \[
|
||||||
|
s(u) = \sum_i a_i(u) p_i
|
||||||
|
\] can be thought of a representation of the inside of the convex hull
|
||||||
|
generated by the control points where each point can be accessed by the
|
||||||
|
right \(u \in [0,1[\).
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.7\textwidth]{img/B-Splines.png}
|
||||||
|
\end{center}
|
||||||
|
\caption[Example of B-Splines]{Example of a parametrization of a line with
|
||||||
|
corresponding deformation to generate a deformed objet}
|
||||||
|
\label{fig:bspline}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
In the example in figure~\ref{fig:bspline}, the control--points are
|
||||||
|
indicated as red dots and the color-gradient should hint at the
|
||||||
|
\(u\)--values ranging from \(0\) to \(1\).
|
||||||
|
|
||||||
|
We now define a \acf{FFD} by the following:\\
|
||||||
Given an arbitrary number of points \(p_i\) alongside a line, we map a
|
Given an arbitrary number of points \(p_i\) alongside a line, we map a
|
||||||
scalar value \(\tau_i \in [0,1[\) to each point with
|
scalar value \(\tau_i \in [0,1[\) to each point with
|
||||||
\(\tau_i < \tau_{i+1} \forall i\). Given a degree of the target
|
\(\tau_i < \tau_{i+1} \forall i\) according to the position of \(p_i\)
|
||||||
polynomial \(d\) we define the curve \(N_{i,d,\tau_i}(u)\) as follows:
|
on said line. Additionally, given a degree of the target polynomial
|
||||||
|
\(d\) we define the curve \(N_{i,d,\tau_i}(u)\) as follows:
|
||||||
|
|
||||||
\begin{equation} \label{eqn:ffd1d1}
|
\begin{equation} \label{eqn:ffd1d1}
|
||||||
N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases}
|
N_{i,0,\tau}(u) = \begin{cases} 1, & u \in [\tau_i, \tau_{i+1}[ \\ 0, & \mbox{otherwise} \end{cases}
|
||||||
@ -266,10 +311,10 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
|
|||||||
If we now multiply every \(p_i\) with the corresponding
|
If we now multiply every \(p_i\) with the corresponding
|
||||||
\(N_{i,d,\tau_i}(u)\) we get the contribution of each point \(p_i\) to
|
\(N_{i,d,\tau_i}(u)\) we get the contribution of each point \(p_i\) to
|
||||||
the final curve--point parameterized only by \(u \in [0,1[\). As can be
|
the final curve--point parameterized only by \(u \in [0,1[\). As can be
|
||||||
seen from \eqref{eqn:ffd1d2} we only access points \([i..i+d]\) for any
|
seen from \eqref{eqn:ffd1d2} we only access points \([p_i..p_{i+d}]\)
|
||||||
given \(i\)\footnote{one more for each recursive step.}, which gives us,
|
for any given \(i\)\footnote{one more for each recursive step.}, which
|
||||||
in combination with choosing \(p_i\) and \(\tau_i\) in order, only a
|
gives us, in combination with choosing \(p_i\) and \(\tau_i\) in order,
|
||||||
local interference of \(d+1\) points.
|
only a local interference of \(d+1\) points.
|
||||||
|
|
||||||
We can even derive this equation straightforward for an arbitrary
|
We can even derive this equation straightforward for an arbitrary
|
||||||
\(N\)\footnote{\emph{Warning:} in the case of \(d=1\) the
|
\(N\)\footnote{\emph{Warning:} in the case of \(d=1\) the
|
||||||
@ -283,9 +328,26 @@ derivations yield \(\frac{\partial^d}{\partial u} s(u) = 0\).
|
|||||||
|
|
||||||
Another interesting property of these recursive polynomials is that they
|
Another interesting property of these recursive polynomials is that they
|
||||||
are continuous (given \(d \ge 1\)) as every \(p_i\) gets blended in
|
are continuous (given \(d \ge 1\)) as every \(p_i\) gets blended in
|
||||||
linearly between \(\tau_i\) and \(\tau_{i+d}\) and out linearly between
|
between \(\tau_i\) and \(\tau_{i+d}\) and out between \(\tau_{i+1}\),
|
||||||
\(\tau_{i+1}\) and \(\tau_{i+d+1}\) as can bee seen from the two
|
and \(\tau_{i+d+1}\) as can bee seen from the two coefficients in every
|
||||||
coefficients in every step of the recursion.
|
step of the recursion.
|
||||||
|
|
||||||
|
\improvement[inline]{Weitere Eigenschaften erwähnen:
|
||||||
|
\newline Convex hull
|
||||||
|
\newline $\sum_i N_i = 1$?
|
||||||
|
\newline Bilder von Basisfunktionen zur Visualisierung.
|
||||||
|
}
|
||||||
|
|
||||||
|
For a given number of points \(v_1,\dots,v_n\) we can then calculate the
|
||||||
|
contributions \(n_{i,j}~:=~N_{j,d,\tau}\) of each control point \(p_j\)
|
||||||
|
to get the projection from the control--point--space into the
|
||||||
|
object--space: \[
|
||||||
|
v_i = \sum_j n_{i,j} \cdot p_j = \vec{n}_i^{T} \vec{p}
|
||||||
|
\] or written for all points at the same time: \[
|
||||||
|
\vec{v} = \vec{N} \vec{p}
|
||||||
|
\] where \(\vec{N}\) is the \(n \times m\) transformation--matrix (later
|
||||||
|
on called \textbf{deformation matrix}) for \(n\) object--space--points
|
||||||
|
and \(m\) control--points.
|
||||||
|
|
||||||
\subsection{\texorpdfstring{Why is \ac{FFD} a good deformation
|
\subsection{\texorpdfstring{Why is \ac{FFD} a good deformation
|
||||||
function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function}
|
function?}{Why is a good deformation function?}}\label{why-is-a-good-deformation-function}
|
||||||
@ -361,9 +423,11 @@ The general shape of an evolutionary algorithm (adapted from
|
|||||||
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
|
algorithm. The population contains \(\mu\) individuals \(a_i\) that fit
|
||||||
the shape of the parameters we are looking for. Typically these are
|
the shape of the parameters we are looking for. Typically these are
|
||||||
initialized by a random guess or just zero. Further on we need a
|
initialized by a random guess or just zero. Further on we need a
|
||||||
so--called \emph{fitness--function} \(\Phi : I \mapsto M\) that can take
|
so--called \emph{fitness--function}
|
||||||
each parameter to a measurable space along a convergence--function
|
\(\Phi : I \mapsto M\)\improvement{Was ist $I,M$?\newline Bezug Genotyp/Phenotyp}
|
||||||
\(c : I \mapsto \mathbb{B}\) that terminates the optimization.
|
that can take each parameter to a measurable space along a
|
||||||
|
convergence--function \(c : I \mapsto \mathbb{B}\) that terminates the
|
||||||
|
optimization.
|
||||||
|
|
||||||
The main algorithm just repeats the following steps:
|
The main algorithm just repeats the following steps:
|
||||||
|
|
||||||
@ -435,7 +499,7 @@ But in reality many problems have no analytic solution, because the
|
|||||||
problem is either not convex or there are so many parameters that an
|
problem is either not convex or there are so many parameters that an
|
||||||
analytic solution (mostly meaning the equivalence to an exhaustive
|
analytic solution (mostly meaning the equivalence to an exhaustive
|
||||||
search) is computationally not feasible. Here evolutionary optimization
|
search) is computationally not feasible. Here evolutionary optimization
|
||||||
has one more advantage as you can at least get a suboptimal solutions
|
has one more advantage as you can at least get suboptimal solutions
|
||||||
fast, which then refine over time.
|
fast, which then refine over time.
|
||||||
|
|
||||||
\section{Criteria for the evolvability of linear
|
\section{Criteria for the evolvability of linear
|
||||||
@ -443,12 +507,16 @@ deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
|
|||||||
|
|
||||||
\label{sec:intro:rvi}
|
\label{sec:intro:rvi}
|
||||||
|
|
||||||
|
\improvement[inline]{Nomenklatur. Was ist $\vec{U}$? Kurz Matrix--Darstellung
|
||||||
|
des Problems & Rückgriff auf FFD-Kapitel.}
|
||||||
|
|
||||||
\subsection{Variability}\label{variability}
|
\subsection{Variability}\label{variability}
|
||||||
|
|
||||||
In \cite{anrichterEvol} \emph{variability} is defined as
|
In \cite{anrichterEvol} \emph{variability} is defined as
|
||||||
\[V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},\] whereby \(\vec{U}\)
|
\[V(\vec{U}) := \frac{\textrm{rank}(\vec{U})}{n},\] whereby \(\vec{U}\)
|
||||||
is the \(m \times n\) deformation--Matrix used to map the \(m\) control
|
is the \(n \times m\) deformation--Matrix
|
||||||
points onto the \(n\) vertices.
|
\unsure{Nicht $(n\cdot d) \times m$? Wegen $u,v,w$?} used to map the
|
||||||
|
\(m\) control points onto the \(n\) vertices.
|
||||||
|
|
||||||
Given \(n = m\), an identical number of control--points and vertices,
|
Given \(n = m\), an identical number of control--points and vertices,
|
||||||
this quotient will be \(=1\) if all control points are independent of
|
this quotient will be \(=1\) if all control points are independent of
|
||||||
@ -458,10 +526,6 @@ onto a target--point.
|
|||||||
In praxis the value of \(V(\vec{U})\) is typically \(\ll 1\), because as
|
In praxis the value of \(V(\vec{U})\) is typically \(\ll 1\), because as
|
||||||
there are only few control--points for many vertices, so \(m \ll n\).
|
there are only few control--points for many vertices, so \(m \ll n\).
|
||||||
|
|
||||||
Additionally in our setup we connect neighbouring control--points in a
|
|
||||||
grid so each control point is not independent, but typically depends on
|
|
||||||
\(4^d\) control--points for an \(d\)--dimensional control mesh.
|
|
||||||
|
|
||||||
\subsection{Regularity}\label{regularity}
|
\subsection{Regularity}\label{regularity}
|
||||||
|
|
||||||
\emph{Regularity} is defined\cite{anrichterEvol} as
|
\emph{Regularity} is defined\cite{anrichterEvol} as
|
||||||
|
Loading…
Reference in New Issue
Block a user