Add another example

This commit is contained in:
arnekeller 2019-04-06 18:17:37 +02:00
parent ab4fcd5af3
commit 0dc2911a79
3 changed files with 133 additions and 3 deletions

View File

@ -226,8 +226,6 @@ Wenn in jedem Schritt jede andere Polygonecke berücksichtigt wird, hat der Algo
\section{Bedienung des Programms} \section{Bedienung des Programms}
Das Programm liest die Problemstellung von der Standardeingabe ein. Die grafische Ausgabe wird in die Standardausgabe geschrieben. Wird $-t$ übergeben, kann die Ausgabe in einem \LaTeX-Dokument verwendet werden. Standardmäßig wird ein SVG-Dokument erzeugt. Mit $-s$ werden auch Zwischenlösungen im aktuellen Ordner als SVG-Dateien gespeichert. Falls man die Geschwindigkeit von Lisa oder dem Bus verändern will, kann man dies mit $-l$ bzw. $-b$ tun. Für zusätzliche Debug-Ausgaben kann man $-d$ verwenden. Die Standardoptionen $-h$ und $-V$ zeigen die Hilfe und die Version des Programms an. Das Programm liest die Problemstellung von der Standardeingabe ein. Die grafische Ausgabe wird in die Standardausgabe geschrieben. Wird $-t$ übergeben, kann die Ausgabe in einem \LaTeX-Dokument verwendet werden. Standardmäßig wird ein SVG-Dokument erzeugt. Mit $-s$ werden auch Zwischenlösungen im aktuellen Ordner als SVG-Dateien gespeichert. Falls man die Geschwindigkeit von Lisa oder dem Bus verändern will, kann man dies mit $-l$ bzw. $-b$ tun. Für zusätzliche Debug-Ausgaben kann man $-d$ verwenden. Die Standardoptionen $-h$ und $-V$ zeigen die Hilfe und die Version des Programms an.
\lstinputlisting[caption=Hilfetext des Programmes,frame=single,breaklines=true]{help.txt} \lstinputlisting[caption=Hilfetext des Programmes,frame=single,breaklines=true]{help.txt}
\subsection{Eigene Beispiele}
Das vorgegebene Eingabeformat ist mühsam zu schreiben. Daher kann das Programm auch SVG-Dateien einlesen. Punkte werden als Startpunkte interpretiert, sonstige Pfade sind Hindernisse. Das vorgegebene Eingabeformat ist mühsam zu schreiben. Daher kann das Programm auch SVG-Dateien einlesen. Punkte werden als Startpunkte interpretiert, sonstige Pfade sind Hindernisse.
\section{Umsetzung} \section{Umsetzung}
@ -241,7 +239,7 @@ Wie bereits in der Laufzeitanalyse kurz angesprochen, benutzt das Programm besti
Um zu überprüfen, ob ein Routenabschnitt die Hindernisse schneidet, wird unter anderem ein R*-Baum benutzt. Fûr ca. 40 Polygonen ist diese Methode ca. 5-6x schneller als alle Polygone zu überprüfen. Die Geschwindigkeitsgewinne werden größer, je mehr Polygone vorhanden sind. Zudem wird das Ergebnis in einer Hashtabelle gespeichert, was die insgesamte Performanz ca. 6-10x steigert ($\frac{n*(n-1)}{2}$ Berechnungen statt $n!$). Um zu überprüfen, ob ein Routenabschnitt die Hindernisse schneidet, wird unter anderem ein R*-Baum benutzt. Fûr ca. 40 Polygonen ist diese Methode ca. 5-6x schneller als alle Polygone zu überprüfen. Die Geschwindigkeitsgewinne werden größer, je mehr Polygone vorhanden sind. Zudem wird das Ergebnis in einer Hashtabelle gespeichert, was die insgesamte Performanz ca. 6-10x steigert ($\frac{n*(n-1)}{2}$ Berechnungen statt $n!$).
\section{Beispiele} \section{Beispiele}
Alle Beispiele sind im Maßstab 1:70m. Alle Beispiele sind im Maßstab 1:70m. Für die folgenden fünf Beispiele benötigt das Programm höchstens 10 ms Rechenzeit.
\lstinputlisting[caption=Lösung für lisarennt1.txt,frame=single,breaklines=true]{run1.txt} \lstinputlisting[caption=Lösung für lisarennt1.txt,frame=single,breaklines=true]{run1.txt}
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -313,6 +311,13 @@ Alle Beispiele sind im Maßstab 1:70m.
\caption{Oktagone} \caption{Oktagone}
\label{fig:ebsp6} \label{fig:ebsp6}
\end{figure} \end{figure}
\lstinputlisting[caption=Lösung für Abb. \ref{fig:ebsp7},frame=single,breaklines=true]{runwelt8.txt}
\begin{figure}[H]
\centering
\input{welt8.tkz}
\caption{Höhle}
\label{fig:ebsp7}
\end{figure}
\section{Quellcode (Hauptalgorithmus)} \section{Quellcode (Hauptalgorithmus)}
\lstinputlisting[frame=single,language=Rust,breaklines=true]{src/main.rs} \lstinputlisting[frame=single,language=Rust,breaklines=true]{src/main.rs}

View File

@ -11,3 +11,4 @@ target/release/aufgabe1 -t < welt4.svg > >(tee welt4.tkz) 2> >(tee runwelt4.txt
target/release/aufgabe1 -t < welt5.svg > >(tee welt5.tkz) 2> >(tee runwelt5.txt >&2) target/release/aufgabe1 -t < welt5.svg > >(tee welt5.tkz) 2> >(tee runwelt5.txt >&2)
target/release/aufgabe1 -t < welt6.svg > >(tee welt6.tkz) 2> >(tee runwelt6.txt >&2) target/release/aufgabe1 -t < welt6.svg > >(tee welt6.tkz) 2> >(tee runwelt6.txt >&2)
target/release/aufgabe1 -t < welt7b.svg > >(tee welt7b.tkz) 2> >(tee runwelt7b.txt >&2) target/release/aufgabe1 -t < welt7b.svg > >(tee welt7b.tkz) 2> >(tee runwelt7b.txt >&2)
target/release/aufgabe1 -t < welt8.svg > >(tee welt8.tkz) 2> >(tee runwelt8.txt >&2)

124
welt8.svg Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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="1000mm"
height="1000mm"
viewBox="0 0 1000 1000"
version="1.1"
id="svg8"
sodipodi:docname="welt8.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="735"
id="namedview121"
showgrid="false"
inkscape:zoom="0.1766117"
inkscape:cx="2589.6046"
inkscape:cy="2022.724"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<defs
id="defs2">
<marker
orient="auto"
refY="0"
refX="0"
id="DotL"
style="overflow:visible">
<path
id="path920"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(0.8,0,0,0.8,5.92,0.8)" />
</marker>
</defs>
<metadata
id="metadata5">
<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>
<path
id="path30"
d="M 802.89501,748.89294 Z"
style="fill:#00ff00;fill-opacity:1;stroke:#00ff00;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#DotL);paint-order:normal"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 620.21653,889.14003 539.31872,791.76302 509.35657,668.91823 524.33764,547.5715 438.94552,469.66991 265.16504,516.11125 163.29372,423.22858 146.81454,294.39131 167.78805,164.05596 278.648,95.143015 l 191.75777,55.429975 103.36943,97.377 98.87511,130.33535 115.35428,58.42619 82.39591,97.37701 -16.47918,106.36563 16.47918,140.82212 35.95457,62.92051 34.45647,47.93945 43.44514,-16.4792 L 946.80399,674.91064 942.30967,537.08474 895.86833,390.2702 819.46484,327.34969 653.17491,137.09003 533.32631,81.660046 370.03257,47.203574 196.25209,57.690326 62.920517,140.08624 l 1.498108,151.30888 7.490539,151.30886 53.931876,89.88644 104.86752,62.92054 71.90918,-28.46406 89.88644,-2.99622 61.42242,31.46028 13.48295,82.3959 v 89.88645 l 29.96216,86.89025 68.91295,49.43755 z"
id="path123"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 235.20289,243.45567 56.92809,-68.91295 28.46403,89.88645 z"
id="path125"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 239.69721,303.37998 5.99243,58.42619 43.44512,-20.97352 z"
id="path127"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 313.10447,445.7002 32.95838,-43.44514 5.99242,52.43377 z"
id="path129"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 376.02501,206.00297 -7.49054,49.43756 40.44889,4.49432 z"
id="path133"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 455.42469,210.4973 v 43.44512 l 34.45648,-1.49811 z"
id="path143"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 371.53068,595.51093 1.49812,193.2559 26.96594,-4.49434 -11.98489,-191.75775 z"
id="path153"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 281.64423,668.91821 8.98863,299.62152 h 17.9773 l -7.49053,-298.1234 z"
id="path155"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 414.9758,337.83645 -1.49812,50.93565 71.90917,-5.99244 z"
id="path200"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 509.35657,277.91214 -4.49432,34.45647 64.41863,16.47918 z"
id="path202"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 316.10069,306.37617 16.47918,58.42622 34.45648,-50.93568 z"
id="path204"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB