summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sphdthesis/example/algorithm.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/sphdthesis/example/algorithm.tex')
-rw-r--r--macros/latex/contrib/sphdthesis/example/algorithm.tex49
1 files changed, 49 insertions, 0 deletions
diff --git a/macros/latex/contrib/sphdthesis/example/algorithm.tex b/macros/latex/contrib/sphdthesis/example/algorithm.tex
new file mode 100644
index 0000000000..cab0e632b2
--- /dev/null
+++ b/macros/latex/contrib/sphdthesis/example/algorithm.tex
@@ -0,0 +1,49 @@
+\begin{SgAlgorithm}[t]
+ \SetKwInOut{Input}{Input}
+ \SetKwInOut{Output}{Output}
+ \SetKwFunction{GenerateAlphaVeins}{GenerateAlphaVeins}
+ \SetKwFunction{GenerateUniLeaf}{GenerateUnilobedLeaf}
+ \SetKwFunction{IntersectLobes}{IntersectLobes}
+ \SetKwFunction{FitBSpline}{FitBSpline}
+ \SetKwFunction{GenerateLaminarMargin}{GenerateLaminarMargin}
+ \SetKwFunction{Index}{Index}
+ \BlankLine
+ \Input{Parameters of the leaf model.}
+ \Output{Laminar shape $M$ as a triangle mesh.}
+ \BlankLine
+ $\{\alpha_i\} \leftarrow \GenerateAlphaVeins(s_0^l, s_0^r, \Delta s)$ \;
+ $L\leftarrow \GenerateUniLeaf(\theta(B^l), \theta(B^r), \theta(A^l), \theta(A^r), \vect{W}^l, \vect{W}^r)$ \;
+ \BlankLine
+ \ForEach{$\alpha$-vein $\alpha_i$}
+ {%
+ $L_i \leftarrow L$ \;
+ $L_i \leftarrow T_i\cdot L_i$ \;
+ }
+ \BlankLine
+ \For{$i=1$ \KwTo $n-1$}
+ {%
+ $\vect{p}^I(v_i) \leftarrow$ \IntersectLobes{$L_i$, $L_{i+1}$} \;
+ $\vect{d}(v_i) \leftarrow \dfrac{\vect{d}(\alpha_i) + \vect{d}(\alpha_{i+1})}{2}$ \;
+ \If{$p(v)$ or $\theta(v)$ is specified}
+ {%
+ $\vect{p}(v_i) \leftarrow \vect{p}^I(v_i) + p(v) l(\alpha_i) \vect{d}(v_i)$ \;
+ }
+ }
+ \BlankLine
+ \For{$i=1$ \KwTo $n-1$}
+ {%
+ \eIf{$p(v)$ or $\theta(v)$ is not specified}
+ {%
+ $M \leftarrow M \cup \left\{\vect{p}_j \mid j \in L_i \wedge \Index(\vect{q}(\alpha_i), L_i) \leq j \leq \Index(\vect{p}^I(v_i), L_i) \right\}$ \;
+ $M \leftarrow M \cup \left\{\vect{p}_j \mid j \in L_{i+1} \wedge \Index(\vect{p}^I(v_i), L_{i+1}) < j \leq \Index(\vect{q}(\alpha_{i+1}), L_{i+1})\right\}$ \;
+ }
+ {%
+ $b_1 \leftarrow \FitBSpline(\vect{q}(\alpha_i), \theta(\vect{q}(\alpha_i)), \vect{W}^l(\alpha_i), \vect{r}(v_i), \theta(v_i))$ \;
+ $b_2 \leftarrow \FitBSpline(\vect{r}(v_i), \theta(v_i), \vect{W}^r(\alpha_{i+1}), \vect{q}(\alpha_{i+1}), \theta(\vect{q}(\alpha_{i+1})))$ \;
+ Discretize $b_1$ and append the points to $M$ \;
+ Discretize $b_2$ and append the points to $M$ \;
+ }
+ }
+ \caption[Laminar shape generation algorithm for multilobed leaves]{Laminar shape generation algorithm for multilobed leaves.}
+ \label{algo:Ch6-ShapeGen}
+\end{SgAlgorithm} \ No newline at end of file