1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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}
|