added appended image for 3d
This commit is contained in:
parent
5b2abd2fa5
commit
da01bd0e35
137
arbeit/ma.md
137
arbeit/ma.md
@ -10,10 +10,10 @@ chapter.
|
|||||||
Unless otherwise noted the following holds:
|
Unless otherwise noted the following holds:
|
||||||
|
|
||||||
- lowercase letters $x,y,z$
|
- lowercase letters $x,y,z$
|
||||||
refer to real variables and represent a point in 3D-Space.
|
refer to real variables and represent a point in 3D--Space.
|
||||||
- lowercase letters $u,v,w$
|
- lowercase letters $u,v,w$
|
||||||
refer to real variables between $0$ and $1$ used as coefficients in a 3D
|
refer to real variables between $0$ and $1$ used as coefficients in a 3D
|
||||||
B-Spline grid.
|
B--Spline grid.
|
||||||
- other lowercase letters
|
- other lowercase letters
|
||||||
refer to other scalar (real) variables.
|
refer to other scalar (real) variables.
|
||||||
- lowercase **bold** letters (e.g. $\vec{x},\vec{y}$)
|
- lowercase **bold** letters (e.g. $\vec{x},\vec{y}$)
|
||||||
@ -29,9 +29,9 @@ Many modern industrial design processes require advanced optimization methods
|
|||||||
do to the increased complexity. These designs have to adhere to more and more
|
do 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
|
||||||
spatial resolution of the simulation -- or known hard algorithmic problems in
|
spatial resolution of the simulation --- or known hard algorithmic problems in
|
||||||
informatics (i.e. layouting of circuit boards or stacking of 3D-objects).
|
informatics (i.e. layouting of circuit boards or stacking of 3D--objects).
|
||||||
Moreover these are typically not static environments but requirements shift over
|
Moreover these are typically not static environments but requirements shift over
|
||||||
time or from case to case.
|
time or from case to case.
|
||||||
|
|
||||||
@ -39,8 +39,8 @@ Evolutional 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 a 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 can be challenging.
|
||||||
|
|
||||||
The quality of such a representation in biological evolution is called
|
The quality of such a representation in biological evolution is called
|
||||||
@ -61,26 +61,26 @@ and potential of such optimization.
|
|||||||
|
|
||||||
We will replicate the same setup on the same meshes but use \acf{FFD} instead of
|
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 given the different deformation
|
||||||
scheme, as suspected in \cite{anrichterEvol}.
|
scheme, as suspected in \cite{anrichterEvol}.
|
||||||
|
|
||||||
## Outline of this thesis
|
## 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
|
||||||
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
|
(in \ref{sec:back:ffd}) and discuss why this is a sensible deformation function
|
||||||
(in \ref{sec:back:ffdgood}).
|
(in \ref{sec:back:ffdgood}).
|
||||||
Then we establish some background-knowledge of evolutional algorithms (in
|
Then we establish some background--knowledge of evolutional algorithms (in
|
||||||
\ref{sec:back:evo}) and why this is useful in our domain (in
|
\ref{sec:back:evo}) and why this is useful in our domain (in
|
||||||
\ref{sec:back:evogood}).
|
\ref{sec:back:evogood}).
|
||||||
In a third step we take a look at the definition of the different evolvability
|
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.
|
||||||
|
|
||||||
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
|
||||||
introduced in Chapter \ref{sec:back}. Following that, we evaluate the results in
|
introduced in Chapter \ref{sec:back}. Following that, we evaluate the results in
|
||||||
Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
|
Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ Chapter \ref{sec:res} with further on discussion in Chapter \ref{sec:dis}.
|
|||||||
|
|
||||||
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 meshes in the first place. For simplicity we only summarize
|
||||||
the 1D-case from \cite{spitzmuller1996bezier} here and go into the extension to
|
the 1D--case from \cite{spitzmuller1996bezier} here and go into the extension to
|
||||||
the 3D case in chapter \ref{3dffd}.
|
the 3D case in chapter \ref{3dffd}.
|
||||||
|
|
||||||
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
|
||||||
@ -110,20 +110,20 @@ N_{i,d,\tau}(u) = \frac{u-\tau_i}{\tau_{i+d}} N_{i,d-1,\tau}(u) + \frac{\tau_{i+
|
|||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
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
|
$[i..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.
|
||||||
|
|
||||||
We can even derive this equation straightforward for an arbitrary
|
We can even derive this equation straightforward for an arbitrary
|
||||||
$N$^[*Warning:* in the case of $d=1$ the recursion-formula yields a $0$
|
$N$^[*Warning:* in the case of $d=1$ the recursion--formula yields a $0$
|
||||||
denominator, but $N$ is also $0$. The right solution for this case is a
|
denominator, but $N$ is also $0$. The right solution for this case is a
|
||||||
derivative of $0$]:
|
derivative of $0$]:
|
||||||
|
|
||||||
$$\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)$$
|
$$\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)$$
|
||||||
|
|
||||||
For a B-Spline
|
For a B--Spline
|
||||||
$$s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i$$
|
$$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$.
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ recursion.
|
|||||||
|
|
||||||
The usage of \ac{FFD} as a tool for manipulating follows directly from the
|
The usage of \ac{FFD} as a tool for manipulating follows directly from the
|
||||||
properties of the polynomials and the correspondence to the control points.
|
properties of the polynomials and the correspondence to the control points.
|
||||||
Having only a few control points gives the user a nicer high-level-interface, as
|
Having only a few control points gives the user a nicer high--level--interface, as
|
||||||
she only needs to move these points and the model follows in an intuitive
|
she only needs to move these points and the model follows in an intuitive
|
||||||
manner. The deformation is smooth as the underlying polygon is smooth as well
|
manner. The deformation is smooth as the underlying polygon is smooth as well
|
||||||
and affects as many vertices of the model as needed. Moreover the changes are
|
and affects as many vertices of the model as needed. Moreover the changes are
|
||||||
@ -150,11 +150,11 @@ plateau can be difficult to
|
|||||||
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
||||||
|
|
||||||
This disadvantages led to the formulation of
|
This disadvantages led to the formulation of
|
||||||
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
\acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||||
interacts with the surface-mesh. All interactions will be applied
|
interacts with the surface--mesh. All interactions will be applied
|
||||||
proportionally to the control-points that make up the parametrization of the
|
proportionally to the control--points that make up the parametrization of the
|
||||||
interaction-point itself yielding a smooth deformation of the surface *at* the
|
interaction--point itself yielding a smooth deformation of the surface *at* the
|
||||||
surface without seemingly arbitrary scattered control-points. Moreover this
|
surface without seemingly arbitrary scattered control--points. Moreover this
|
||||||
increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which
|
increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which
|
||||||
we will use later on.
|
we will use later on.
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ But this approach also has downsides as can be seen in figure
|
|||||||
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a major impact
|
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a major impact
|
||||||
on the deformation itself.
|
on the deformation itself.
|
||||||
|
|
||||||
All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a high-polygon
|
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a high--polygon
|
||||||
mesh albeit the downsides.
|
mesh albeit the downsides.
|
||||||
|
|
||||||
## What is evolutional optimization?
|
## What is evolutional optimization?
|
||||||
@ -181,12 +181,12 @@ mesh albeit the downsides.
|
|||||||
|
|
||||||
\change[inline]{Needs citations}
|
\change[inline]{Needs citations}
|
||||||
The main advantage of evolutional algorithms is the ability to find optima of
|
The main advantage of evolutional algorithms is the ability to find optima of
|
||||||
general functions just with the help of a given error-function (or
|
general functions just with the help of a given error--function (or
|
||||||
fitness-function in this domain). This avoids the general pitfalls of
|
fitness--function in this domain). This avoids the general pitfalls of
|
||||||
gradient-based procedures, which often target the same error-function as an
|
gradient--based procedures, which often target the same error--function as an
|
||||||
evolutional algorithm, but can get stuck in local optima.
|
evolutional algorithm, but can get stuck in local optima.
|
||||||
|
|
||||||
This is mostly due to the fact that a gradient-based procedure has only one
|
This is mostly due to the fact that a gradient--based procedure has only one
|
||||||
point of observation from where it evaluates the next steps, whereas an
|
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 starts with a population of guessed solutions. Because an
|
||||||
evolutional strategy modifies the solution randomly, keeps the best solutions
|
evolutional strategy modifies the solution randomly, keeps the best solutions
|
||||||
@ -194,7 +194,7 @@ 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
|
same time where the local optima die out in the face of other, better
|
||||||
candidates.
|
candidates.
|
||||||
|
|
||||||
If an analytic best solution exists (i.e. because the error-function is convex)
|
If an analytic best solution exists (i.e. because the error--function is convex)
|
||||||
an evolutional algorithm is not the right choice. Although both converge to the
|
an evolutional algorithm is not the right choice. Although both converge to the
|
||||||
same solution, the analytic one is usually faster. But in reality many problems
|
same solution, the analytic one is usually faster. But in reality many problems
|
||||||
have no analytic solution, because the problem is not convex. Here evolutional
|
have no analytic solution, because the problem is not convex. Here evolutional
|
||||||
@ -208,31 +208,31 @@ over time.
|
|||||||
|
|
||||||
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 $m \times n$ deformation--Matrix 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
|
||||||
quotient will be $=1$ if all control points are independent of each other and
|
quotient will be $=1$ if all control points are independent of each other and
|
||||||
the solution is to trivially move every control-point onto a target-point.
|
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
|
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$
|
each control point is not independent, but typically depends on $4^d$
|
||||||
control-points for an $d$-dimensional control mesh.
|
control--points for an $d$--dimensional control mesh.
|
||||||
|
|
||||||
### Regularity
|
### Regularity
|
||||||
|
|
||||||
*Regularity* is defined\cite{anrichterEvol} as
|
*Regularity* is defined\cite{anrichterEvol} as
|
||||||
$$R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}$$
|
$$R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}$$
|
||||||
where $\sigma_{min}$ and $\sigma_{max}$ are the smallest and greatest right singular
|
where $\sigma_{min}$ and $\sigma_{max}$ are the smallest and greatest right singular
|
||||||
value of the deformation-matrix $\vec{U}$.
|
value of the deformation--matrix $\vec{U}$.
|
||||||
|
|
||||||
As we deform the given Object only based on the parameters as $\vec{p} \mapsto
|
As we deform the given Object only based on the parameters as $\vec{p} \mapsto
|
||||||
f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto
|
f(\vec{x} + \vec{U}\vec{p})$ this makes sure that $\|\vec{Up}\| \propto
|
||||||
\|\vec{p}\|$ when $\kappa(\vec{U}) \approx 1$. The inversion of $\kappa(\vec{U})$
|
\|\vec{p}\|$ when $\kappa(\vec{U}) \approx 1$. The inversion of $\kappa(\vec{U})$
|
||||||
is only performed to map the criterion-range to $[0..1]$, whereas $1$ is the
|
is only performed to map the criterion--range to $[0..1]$, whereas $1$ is the
|
||||||
optimal value and $0$ is the worst value.
|
optimal value and $0$ is the worst value.
|
||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
This criterion should be characteristic for numeric stability on the on
|
||||||
@ -243,7 +243,7 @@ locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
|||||||
### Improvement Potential
|
### Improvement Potential
|
||||||
|
|
||||||
In contrast to the general nature of *variability* and *regularity*, which are
|
In contrast to the general nature of *variability* and *regularity*, which are
|
||||||
agnostic of the fitness-function at hand the third criterion should reflect a
|
agnostic of the fitness--function at hand the third criterion should reflect a
|
||||||
notion of potential.
|
notion of potential.
|
||||||
|
|
||||||
As during optimization some kind of gradient $g$ is available to suggest a
|
As during optimization some kind of gradient $g$ is available to suggest a
|
||||||
@ -254,20 +254,20 @@ The definition for an *improvement potential* $P$ is\cite{anrichterEvol}:
|
|||||||
$$
|
$$
|
||||||
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
|
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
|
||||||
$$
|
$$
|
||||||
given some approximate $n \times d$ fitness-gradient $\vec{G}$, normalized to
|
given some approximate $n \times d$ fitness--gradient $\vec{G}$, normalized to
|
||||||
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius-Norm.
|
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius--Norm.
|
||||||
|
|
||||||
# Implementation of \acf{FFD}
|
# Implementation of \acf{FFD}
|
||||||
\label{sec:impl}
|
\label{sec:impl}
|
||||||
|
|
||||||
The general formulation of B-Splines has two free parameters $d$ and $\tau$
|
The general formulation of B--Splines has two free parameters $d$ and $\tau$
|
||||||
which must be chosen beforehand.
|
which must be chosen beforehand.
|
||||||
|
|
||||||
As we usually work with regular grids in our \ac{FFD} we define $\tau$
|
As we usually work with regular grids in our \ac{FFD} we define $\tau$
|
||||||
statically as $\tau_i = \nicefrac{i}{n}$ whereby $n$ is the number of
|
statically as $\tau_i = \nicefrac{i}{n}$ whereby $n$ is the number of
|
||||||
control-points in that direction.
|
control--points in that direction.
|
||||||
|
|
||||||
$d$ defines the *degree* of the B-Spline-Function (the number of times this
|
$d$ defines the *degree* of the B--Spline--Function (the number of times this
|
||||||
function is differentiable) and for our purposes we fix $d$ to $3$, but give the
|
function is differentiable) and for our purposes we fix $d$ to $3$, but give the
|
||||||
formulas for the general case so it can be adapted quite freely.
|
formulas for the general case so it can be adapted quite freely.
|
||||||
|
|
||||||
@ -275,21 +275,21 @@ formulas for the general case so it can be adapted quite freely.
|
|||||||
## Adaption of \ac{FFD}
|
## Adaption of \ac{FFD}
|
||||||
|
|
||||||
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
||||||
\ac{FFD}-displacement as
|
\ac{FFD}--displacement as
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Note that we only sum up the $\Delta$-displacements in the control points $c_i$ to get
|
Note that we only sum up the $\Delta$--displacements in the control points $c_i$ to get
|
||||||
the change in position of the point we are interested in.
|
the change in position of the point we are interested in.
|
||||||
|
|
||||||
In this way every deformed vertex is defined by
|
In this way every deformed vertex is defined by
|
||||||
$$
|
$$
|
||||||
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
||||||
$$
|
$$
|
||||||
with $u \in [0..1[$ being the variable that connects the high-detailed
|
with $u \in [0..1[$ being the variable that connects the high--detailed
|
||||||
vertex-mesh to the low-detailed control-grid. To actually calculate the new
|
vertex--mesh to the low--detailed control--grid. To actually calculate the new
|
||||||
position of the vertex we first have to calculate the $u$-value for each
|
position of the vertex we first have to calculate the $u$--value for each
|
||||||
vertex. This is achieved by finding out the parametrization of $v$ in terms of
|
vertex. This is achieved by finding out the parametrization of $v$ in terms of
|
||||||
$c_i$
|
$c_i$
|
||||||
$$
|
$$
|
||||||
@ -299,35 +299,36 @@ so we can minimize the error between those two:
|
|||||||
$$
|
$$
|
||||||
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
|
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
|
||||||
$$
|
$$
|
||||||
|
As this error--term is quadratic we just derive by $u$ yielding
|
||||||
|
$$
|
||||||
|
\begin{array}{rl}
|
||||||
|
\frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
|
||||||
|
= & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
|
||||||
|
\end{array}
|
||||||
|
$$
|
||||||
|
and do a gradient--descend to approximate the value of $u$ up to an $\epsilon$ of $0.0001$.
|
||||||
|
|
||||||
As this error-term is quadratic we just derive by $u$ yielding
|
For this we use the Gauss--Newton algorithm\cite{gaussNewton} as the solution to
|
||||||
\begin{eqnarray*}
|
|
||||||
& \frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
|
|
||||||
& = & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
|
|
||||||
\end{eqnarray*}
|
|
||||||
and do a gradient-descend to approximate the value of $u$ up to an $\epsilon$ of $0.0001$.
|
|
||||||
|
|
||||||
For this we use the Gauss-Newton algorithm\cite{gaussNewton} as the solution to
|
|
||||||
this problem may not be deterministic, because we usually have way more vertices
|
this problem may not be deterministic, because we usually have way more vertices
|
||||||
than control points ($\#v \gg \#c$).
|
than control points ($\#v~\gg~\#c$).
|
||||||
|
|
||||||
## Adaption of \ac{FFD} for a 3D-Mesh
|
## Adaption of \ac{FFD} for a 3D--Mesh
|
||||||
\label{3dffd}
|
\label{3dffd}
|
||||||
|
|
||||||
This is a straightforward extension of the 1D-method presented in the last
|
This is a straightforward extension of the 1D--method presented in the last
|
||||||
chapter. But this time things get a bit more complicated. As we have a
|
chapter. But this time things get a bit more complicated. As we have a
|
||||||
3-dimensional grid we may have a different amount of control-points in each
|
3--dimensional grid we may have a different amount of control--points in each
|
||||||
direction.
|
direction.
|
||||||
|
|
||||||
Given $n,m,o$ control points in $x,y,z$-direction each Point on the curve is
|
Given $n,m,o$ control points in $x,y,z$--direction each Point on the curve is
|
||||||
defined by
|
defined by
|
||||||
$$V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.$$
|
$$V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.$$
|
||||||
|
|
||||||
In this case we have three different B-Splines (one for each dimension) and also
|
In this case we have three different B--Splines (one for each dimension) and also
|
||||||
3 variables $u,v,w$ for each vertex we want to approximate.
|
3 variables $u,v,w$ for each vertex we want to approximate.
|
||||||
|
|
||||||
Given a target vertex $\vec{p}^*$ and an initial guess $\vec{p}=V(u,v,w)$
|
Given a target vertex $\vec{p}^*$ and an initial guess $\vec{p}=V(u,v,w)$
|
||||||
we define the error-function for the gradient-descent as:
|
we define the error--function for the gradient--descent as:
|
||||||
|
|
||||||
$$Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)$$
|
$$Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)$$
|
||||||
|
|
||||||
@ -368,7 +369,7 @@ $$
|
|||||||
\right)
|
\right)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
With the Gauss-Newton algorithm we iterate via the formula
|
With the Gauss--Newton algorithm we iterate via the formula
|
||||||
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
|
$$J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)$$
|
||||||
and use Cramers rule for inverting the small Jacobian and solving this system of
|
and use Cramers rule for inverting the small Jacobian and solving this system of
|
||||||
linear equations.
|
linear equations.
|
||||||
@ -378,7 +379,7 @@ linear equations.
|
|||||||
|
|
||||||
- Nachteile von Parametrisierung
|
- Nachteile von Parametrisierung
|
||||||
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||||
- => DM-FFD?
|
- => DM--FFD?
|
||||||
|
|
||||||
|
|
||||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||||
@ -388,7 +389,7 @@ linear equations.
|
|||||||
|
|
||||||
### Optimierungszenario
|
### Optimierungszenario
|
||||||
|
|
||||||
- Ebene -> Template-Fit
|
- Ebene -> Template--Fit
|
||||||
|
|
||||||
### Matching in 1D
|
### Matching in 1D
|
||||||
|
|
||||||
@ -398,7 +399,7 @@ linear equations.
|
|||||||
|
|
||||||
- Analytische Lösung einzig beste
|
- Analytische Lösung einzig beste
|
||||||
- Ergebnis auch bei Rauschen konstant?
|
- Ergebnis auch bei Rauschen konstant?
|
||||||
- normierter 1-Vektor auf den Gradienten addieren
|
- normierter 1--Vektor auf den Gradienten addieren
|
||||||
- Kegel entsteht
|
- Kegel entsteht
|
||||||
|
|
||||||
## Test Scenario: 3D Function Approximation
|
## Test Scenario: 3D Function Approximation
|
||||||
@ -419,7 +420,7 @@ linear equations.
|
|||||||
# Evaluation of Scenarios
|
# Evaluation of Scenarios
|
||||||
\label{sec:res}
|
\label{sec:res}
|
||||||
|
|
||||||
## Spearman/Pearson-Metriken
|
## Spearman/Pearson--Metriken
|
||||||
|
|
||||||
- Was ist das?
|
- Was ist das?
|
||||||
- Wieso sollte uns das interessieren?
|
- Wieso sollte uns das interessieren?
|
||||||
@ -445,7 +446,7 @@ linear equations.
|
|||||||
|
|
||||||
|
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
\includegraphics[width=\textwidth]{img/evolution3d/20170926_3dFit_both_append.png}
|
\includegraphics[width=\textwidth]{img/evolution3d/20170926_3dFit_all_append.png}
|
||||||
\caption{Results 3D}
|
\caption{Results 3D}
|
||||||
|
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
BIN
arbeit/ma.pdf
BIN
arbeit/ma.pdf
Binary file not shown.
198
arbeit/ma.tex
198
arbeit/ma.tex
@ -9,7 +9,11 @@ titlepage,
|
|||||||
% pagesize=auto
|
% pagesize=auto
|
||||||
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
||||||
% draft % schneller compillieren, Bild-dummy
|
% draft % schneller compillieren, Bild-dummy
|
||||||
% appendixprefix % Anhang mit Bezeichner
|
% appendixprefix, % Anhang mit Bezeichner
|
||||||
|
bibtotocnumbered,
|
||||||
|
liststotocnumbered,
|
||||||
|
listof=totocnumbered,
|
||||||
|
index=totocnumbered,
|
||||||
xcolor=dvipsnames,
|
xcolor=dvipsnames,
|
||||||
]{scrbook}
|
]{scrbook}
|
||||||
|
|
||||||
@ -53,10 +57,10 @@ xcolor=dvipsnames,
|
|||||||
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
|
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
|
||||||
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
|
|
||||||
\titleformat{name=\section,numberless}[hang]{\large\bfseries\ }{#1}{32pt}{\large\bfseries\ }
|
\titleformat{name=\section,numberless}[hang]{\Large\bfseries\ }{#1}{32pt}{\Large\bfseries\ }
|
||||||
\titleformat{\section}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\section}[hang]{\Large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
\titleformat{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ }
|
\titleformat{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
|
||||||
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
|
|
||||||
% ### fr 1 seitig
|
% ### fr 1 seitig
|
||||||
%\usepackage{fancyhdr} %
|
%\usepackage{fancyhdr} %
|
||||||
@ -124,7 +128,8 @@ xcolor=dvipsnames,
|
|||||||
%
|
%
|
||||||
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
||||||
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
||||||
\tableofcontents % Rueckseite leer
|
\renewcommand{\autodot}{}
|
||||||
|
\tableofcontents % Rueckseite leer
|
||||||
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
||||||
|
|
||||||
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
||||||
@ -143,11 +148,11 @@ Unless otherwise noted the following holds:
|
|||||||
\tightlist
|
\tightlist
|
||||||
\item
|
\item
|
||||||
lowercase letters \(x,y,z\)\\
|
lowercase letters \(x,y,z\)\\
|
||||||
refer to real variables and represent a point in 3D-Space.
|
refer to real variables and represent a point in 3D--Space.
|
||||||
\item
|
\item
|
||||||
lowercase letters \(u,v,w\)\\
|
lowercase letters \(u,v,w\)\\
|
||||||
refer to real variables between \(0\) and \(1\) used as coefficients
|
refer to real variables between \(0\) and \(1\) used as coefficients
|
||||||
in a 3D B-Spline grid.
|
in a 3D B--Spline grid.
|
||||||
\item
|
\item
|
||||||
other lowercase letters\\
|
other lowercase letters\\
|
||||||
refer to other scalar (real) variables.
|
refer to other scalar (real) variables.
|
||||||
@ -167,10 +172,10 @@ Many modern industrial design processes require advanced optimization
|
|||||||
methods do to the increased complexity. These designs have to adhere to
|
methods do 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
|
||||||
complexity increases with the temporal and spatial resolution of the
|
complexity increases with the temporal and spatial resolution of the
|
||||||
simulation -- or known hard algorithmic problems in informatics
|
simulation --- or known hard algorithmic problems in informatics
|
||||||
(i.e.~layouting of circuit boards or stacking of 3D-objects). Moreover
|
(i.e.~layouting of circuit boards or stacking of 3D--objects). Moreover
|
||||||
these are typically not static environments but requirements shift over
|
these are typically not static environments but requirements shift over
|
||||||
time or from case to case.
|
time or from case to case.
|
||||||
|
|
||||||
@ -178,9 +183,9 @@ Evolutional 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 genome and a fitness function. While one can typically use
|
||||||
an arbitrary cost-function for the fitness-functions (i.e.~amount of
|
an arbitrary cost--function for the fitness--functions (i.e.~amount of
|
||||||
drag, amount of space, etc.), the translation of the problem-domain into
|
drag, amount of space, etc.), the translation of the problem--domain
|
||||||
a simple parametric representation can be challenging.
|
into a simple parametric representation can be challenging.
|
||||||
|
|
||||||
The quality of such a representation in biological evolution is called
|
The quality of such a representation in biological evolution is called
|
||||||
\emph{evolvability}\cite{wagner1996complex} and is at the core of this
|
\emph{evolvability}\cite{wagner1996complex} and is at the core of this
|
||||||
@ -203,7 +208,7 @@ optimization.
|
|||||||
|
|
||||||
We will replicate the same setup on the same meshes but use \acf{FFD}
|
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
|
given the different deformation scheme, as suspected in
|
||||||
\cite{anrichterEvol}.
|
\cite{anrichterEvol}.
|
||||||
|
|
||||||
@ -211,19 +216,19 @@ given the different deformation scheme, as suspected in
|
|||||||
|
|
||||||
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}
|
||||||
for a one-dimensional line (in \ref{sec:back:ffd}) and discuss why this
|
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
|
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 evolutional algorithms (in
|
||||||
\ref{sec:back:evo}) and why this is useful in our domain (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
|
\ref{sec:back:evogood}). In a third step we take a look at the
|
||||||
definition of the different evolvability criteria established in
|
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.
|
||||||
|
|
||||||
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
|
||||||
aspects introduced in Chapter \ref{sec:back}. Following that, we
|
aspects introduced in Chapter \ref{sec:back}. Following that, we
|
||||||
evaluate the results in Chapter \ref{sec:res} with further on discussion
|
evaluate the results in Chapter \ref{sec:res} with further on discussion
|
||||||
in Chapter \ref{sec:dis}.
|
in Chapter \ref{sec:dis}.
|
||||||
@ -238,8 +243,8 @@ in Chapter \ref{sec:dis}.
|
|||||||
|
|
||||||
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 meshes in the first place. For simplicity we
|
||||||
only summarize the 1D-case from \cite{spitzmuller1996bezier} here and go
|
only summarize the 1D--case from \cite{spitzmuller1996bezier} here and
|
||||||
into the extension to the 3D case in chapter \ref{3dffd}.
|
go into the extension to the 3D case in chapter \ref{3dffd}.
|
||||||
|
|
||||||
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
|
||||||
@ -258,7 +263,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
|
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 \([i..i+d]\) for any
|
||||||
given \(i\)\footnote{one more for each recursive step.}, which gives us,
|
given \(i\)\footnote{one more for each recursive step.}, which gives us,
|
||||||
in combination with choosing \(p_i\) and \(\tau_i\) in order, only a
|
in combination with choosing \(p_i\) and \(\tau_i\) in order, only a
|
||||||
@ -266,12 +271,12 @@ 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
|
||||||
recursion-formula yields a \(0\) denominator, but \(N\) is also \(0\).
|
recursion--formula yields a \(0\) denominator, but \(N\) is also
|
||||||
The right solution for this case is a derivative of \(0\)}:
|
\(0\). The right solution for this case is a derivative of \(0\)}:
|
||||||
|
|
||||||
\[\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)\]
|
\[\frac{\partial}{\partial u} N_{i,d,r}(u) = \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u)\]
|
||||||
|
|
||||||
For a B-Spline \[s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i\] these
|
For a B--Spline \[s(u) = \sum_{i} N_{i,d,\tau_i}(u) p_i\] these
|
||||||
derivations yield \(\frac{\partial^d}{\partial u} s(u) = 0\).
|
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
|
||||||
@ -288,7 +293,7 @@ function?}{Why is a good deformation function?}}\label{why-is-a-good-deformatio
|
|||||||
The usage of \ac{FFD} as a tool for manipulating follows directly from
|
The usage of \ac{FFD} as a tool for manipulating follows directly from
|
||||||
the properties of the polynomials and the correspondence to the control
|
the properties of the polynomials and the correspondence to the control
|
||||||
points. Having only a few control points gives the user a nicer
|
points. Having only a few control points gives the user a nicer
|
||||||
high-level-interface, as she only needs to move these points and the
|
high--level--interface, as she only needs to move these points and the
|
||||||
model follows in an intuitive manner. The deformation is smooth as the
|
model follows in an intuitive manner. The deformation is smooth as the
|
||||||
underlying polygon is smooth as well and affects as many vertices of the
|
underlying polygon is smooth as well and affects as many vertices of the
|
||||||
model as needed. Moreover the changes are always local so one risks not
|
model as needed. Moreover the changes are always local so one risks not
|
||||||
@ -300,12 +305,12 @@ as creating a plateau can be difficult to
|
|||||||
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
||||||
|
|
||||||
This disadvantages led to the formulation of
|
This disadvantages led to the formulation of
|
||||||
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
\acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||||
interacts with the surface-mesh. All interactions will be applied
|
interacts with the surface--mesh. All interactions will be applied
|
||||||
proportionally to the control-points that make up the parametrization of
|
proportionally to the control--points that make up the parametrization
|
||||||
the interaction-point itself yielding a smooth deformation of the
|
of the interaction--point itself yielding a smooth deformation of the
|
||||||
surface \emph{at} the surface without seemingly arbitrary scattered
|
surface \emph{at} the surface without seemingly arbitrary scattered
|
||||||
control-points. Moreover this increases the efficiency of an
|
control--points. Moreover this increases the efficiency of an
|
||||||
evolutionary optimization\cite{Menzel2006}, which we will use later on.
|
evolutionary optimization\cite{Menzel2006}, which we will use later on.
|
||||||
|
|
||||||
\begin{figure}[!ht]
|
\begin{figure}[!ht]
|
||||||
@ -318,8 +323,8 @@ But this approach also has downsides as can be seen in figure
|
|||||||
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a
|
\ref{fig:hsu_fig7}, as the tessellation of the invisible grid has a
|
||||||
major impact on the deformation itself.
|
major impact on the deformation itself.
|
||||||
|
|
||||||
All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a
|
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
|
||||||
high-polygon mesh albeit the downsides.
|
high--polygon mesh albeit the downsides.
|
||||||
|
|
||||||
\section{What is evolutional
|
\section{What is evolutional
|
||||||
optimization?}\label{what-is-evolutional-optimization}
|
optimization?}\label{what-is-evolutional-optimization}
|
||||||
@ -335,12 +340,12 @@ algorithms}\label{advantages-of-evolutional-algorithms}
|
|||||||
|
|
||||||
\change[inline]{Needs citations} The main advantage of evolutional
|
\change[inline]{Needs citations} The main advantage of evolutional
|
||||||
algorithms is the ability to find optima of general functions just with
|
algorithms is the ability to find optima of general functions just with
|
||||||
the help of a given error-function (or fitness-function in this domain).
|
the help of a given error--function (or fitness--function in this
|
||||||
This avoids the general pitfalls of gradient-based procedures, which
|
domain). This avoids the general pitfalls of gradient--based procedures,
|
||||||
often target the same error-function as an evolutional algorithm, but
|
which often target the same error--function as an evolutional algorithm,
|
||||||
can get stuck in local optima.
|
but can get stuck in local optima.
|
||||||
|
|
||||||
This is mostly due to the fact that a gradient-based procedure has only
|
This is mostly due to the fact that a gradient--based procedure has only
|
||||||
one point of observation from where it evaluates the next steps, whereas
|
one point of observation from where it evaluates the next steps, whereas
|
||||||
an evolutional strategy starts with a population of guessed solutions.
|
an evolutional strategy starts with a population of guessed solutions.
|
||||||
Because an evolutional strategy modifies the solution randomly, keeps
|
Because an evolutional strategy modifies the solution randomly, keeps
|
||||||
@ -348,7 +353,7 @@ 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
|
different hypothesis at the same time where the local optima die out in
|
||||||
the face of other, better candidates.
|
the face of other, better candidates.
|
||||||
|
|
||||||
If an analytic best solution exists (i.e.~because the error-function is
|
If an analytic best solution exists (i.e.~because the error--function is
|
||||||
convex) an evolutional algorithm is not the right choice. Although both
|
convex) an evolutional algorithm is not the right choice. Although both
|
||||||
converge to the same solution, the analytic one is usually faster. But
|
converge to the same solution, the analytic one is usually faster. But
|
||||||
in reality many problems have no analytic solution, because the problem
|
in reality many problems have no analytic solution, because the problem
|
||||||
@ -364,33 +369,33 @@ deformations}\label{criteria-for-the-evolvability-of-linear-deformations}
|
|||||||
|
|
||||||
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 \(m \times n\) deformation--Matrix used to map the \(m\) control
|
||||||
points onto the \(n\) vertices.
|
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
|
||||||
each other and the solution is to trivially move every control-point
|
each other and the solution is to trivially move every control--point
|
||||||
onto a target-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
|
Additionally in our setup we connect neighbouring control--points in a
|
||||||
grid so each control point is not independent, but typically depends on
|
grid so each control point is not independent, but typically depends on
|
||||||
\(4^d\) control-points for an \(d\)-dimensional control mesh.
|
\(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
|
||||||
\[R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}\]
|
\[R(\vec{U}) := \frac{1}{\kappa(\vec{U})} = \frac{\sigma_{min}}{\sigma_{max}}\]
|
||||||
where \(\sigma_{min}\) and \(\sigma_{max}\) are the smallest and
|
where \(\sigma_{min}\) and \(\sigma_{max}\) are the smallest and
|
||||||
greatest right singular value of the deformation-matrix \(\vec{U}\).
|
greatest right singular value of the deformation--matrix \(\vec{U}\).
|
||||||
|
|
||||||
As we deform the given Object only based on the parameters as
|
As we deform the given Object only based on the parameters as
|
||||||
\(\vec{p} \mapsto f(\vec{x} + \vec{U}\vec{p})\) this makes sure that
|
\(\vec{p} \mapsto f(\vec{x} + \vec{U}\vec{p})\) this makes sure that
|
||||||
\(\|\vec{Up}\| \propto \|\vec{p}\|\) when \(\kappa(\vec{U}) \approx 1\).
|
\(\|\vec{Up}\| \propto \|\vec{p}\|\) when \(\kappa(\vec{U}) \approx 1\).
|
||||||
The inversion of \(\kappa(\vec{U})\) is only performed to map the
|
The inversion of \(\kappa(\vec{U})\) is only performed to map the
|
||||||
criterion-range to \([0..1]\), whereas \(1\) is the optimal value and
|
criterion--range to \([0..1]\), whereas \(1\) is the optimal value and
|
||||||
\(0\) is the worst value.
|
\(0\) is the worst value.
|
||||||
|
|
||||||
This criterion should be characteristic for numeric stability on the on
|
This criterion should be characteristic for numeric stability on the on
|
||||||
@ -402,7 +407,7 @@ locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
|||||||
\subsection{Improvement Potential}\label{improvement-potential}
|
\subsection{Improvement Potential}\label{improvement-potential}
|
||||||
|
|
||||||
In contrast to the general nature of \emph{variability} and
|
In contrast to the general nature of \emph{variability} and
|
||||||
\emph{regularity}, which are agnostic of the fitness-function at hand
|
\emph{regularity}, which are agnostic of the fitness--function at hand
|
||||||
the third criterion should reflect a notion of potential.
|
the third criterion should reflect a notion of potential.
|
||||||
|
|
||||||
As during optimization some kind of gradient \(g\) is available to
|
As during optimization some kind of gradient \(g\) is available to
|
||||||
@ -412,87 +417,83 @@ can be achieved in the given direction.
|
|||||||
The definition for an \emph{improvement potential} \(P\)
|
The definition for an \emph{improvement potential} \(P\)
|
||||||
is\cite{anrichterEvol}: \[
|
is\cite{anrichterEvol}: \[
|
||||||
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
|
P(\vec{U}) := 1 - \|(\vec{1} - \vec{UU}^+)\vec(G)\|^2_F
|
||||||
\] given some approximate \(n \times d\) fitness-gradient \(\vec{G}\),
|
\] given some approximate \(n \times d\) fitness--gradient \(\vec{G}\),
|
||||||
normalized to \(\|\vec{G}\|_F = 1\), whereby \(\|\cdot\|_F\) denotes the
|
normalized to \(\|\vec{G}\|_F = 1\), whereby \(\|\cdot\|_F\) denotes the
|
||||||
Frobenius-Norm.
|
Frobenius--Norm.
|
||||||
|
|
||||||
\chapter{\texorpdfstring{Implementation of
|
\chapter{\texorpdfstring{Implementation of
|
||||||
\acf{FFD}}{Implementation of }}\label{implementation-of}
|
\acf{FFD}}{Implementation of }}\label{implementation-of}
|
||||||
|
|
||||||
\label{sec:impl}
|
\label{sec:impl}
|
||||||
|
|
||||||
The general formulation of B-Splines has two free parameters \(d\) and
|
The general formulation of B--Splines has two free parameters \(d\) and
|
||||||
\(\tau\) which must be chosen beforehand.
|
\(\tau\) which must be chosen beforehand.
|
||||||
|
|
||||||
As we usually work with regular grids in our \ac{FFD} we define \(\tau\)
|
As we usually work with regular grids in our \ac{FFD} we define \(\tau\)
|
||||||
statically as \(\tau_i = \nicefrac{i}{n}\) whereby \(n\) is the number
|
statically as \(\tau_i = \nicefrac{i}{n}\) whereby \(n\) is the number
|
||||||
of control-points in that direction.
|
of control--points in that direction.
|
||||||
|
|
||||||
\(d\) defines the \emph{degree} of the B-Spline-Function (the number of
|
\(d\) defines the \emph{degree} of the B--Spline--Function (the number
|
||||||
times this function is differentiable) and for our purposes we fix \(d\)
|
of times this function is differentiable) and for our purposes we fix
|
||||||
to \(3\), but give the formulas for the general case so it can be
|
\(d\) to \(3\), but give the formulas for the general case so it can be
|
||||||
adapted quite freely.
|
adapted quite freely.
|
||||||
|
|
||||||
\section{\texorpdfstring{Adaption of
|
\section{\texorpdfstring{Adaption of
|
||||||
\ac{FFD}}{Adaption of }}\label{adaption-of}
|
\ac{FFD}}{Adaption of }}\label{adaption-of}
|
||||||
|
|
||||||
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
||||||
\ac{FFD}-displacement as
|
\ac{FFD}--displacement as
|
||||||
|
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
Note that we only sum up the \(\Delta\)-displacements in the control
|
Note that we only sum up the \(\Delta\)--displacements in the control
|
||||||
points \(c_i\) to get the change in position of the point we are
|
points \(c_i\) to get the change in position of the point we are
|
||||||
interested in.
|
interested in.
|
||||||
|
|
||||||
In this way every deformed vertex is defined by \[
|
In this way every deformed vertex is defined by \[
|
||||||
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
||||||
\] with \(u \in [0..1[\) being the variable that connects the
|
\] with \(u \in [0..1[\) being the variable that connects the
|
||||||
high-detailed vertex-mesh to the low-detailed control-grid. To actually
|
high--detailed vertex--mesh to the low--detailed control--grid. To
|
||||||
calculate the new position of the vertex we first have to calculate the
|
actually calculate the new position of the vertex we first have to
|
||||||
\(u\)-value for each vertex. This is achieved by finding out the
|
calculate the \(u\)--value for each vertex. This is achieved by finding
|
||||||
parametrization of \(v\) in terms of \(c_i\) \[
|
out the parametrization of \(v\) in terms of \(c_i\) \[
|
||||||
v_x \overset{!}{=} \sum_i N_{i,d,\tau_i}(u) c_i
|
v_x \overset{!}{=} \sum_i N_{i,d,\tau_i}(u) c_i
|
||||||
\] so we can minimize the error between those two: \[
|
\] so we can minimize the error between those two: \[
|
||||||
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
|
\underset{u}{\argmin}\,Err(u,v_x) = \underset{u}{\argmin}\,2 \cdot \|v_x - \sum_i N_{i,d,\tau_i}(u) c_i\|^2_2
|
||||||
\]
|
\] As this error--term is quadratic we just derive by \(u\) yielding \[
|
||||||
|
\begin{array}{rl}
|
||||||
As this error-term is quadratic we just derive by \(u\) yielding
|
\frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
|
||||||
|
= & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
|
||||||
\begin{eqnarray*}
|
\end{array}
|
||||||
& \frac{\partial}{\partial u} & v_x - \sum_i N_{i,d,\tau_i}(u) c_i \\
|
\] and do a gradient--descend to approximate the value of \(u\) up to an
|
||||||
& = & - \sum_i \left( \frac{d}{\tau_{i+d} - \tau_i} N_{i,d-1,\tau}(u) - \frac{d}{\tau_{i+d+1} - \tau_{i+1}} N_{i+1,d-1,\tau}(u) \right) c_i
|
|
||||||
\end{eqnarray*}
|
|
||||||
|
|
||||||
and do a gradient-descend to approximate the value of \(u\) up to an
|
|
||||||
\(\epsilon\) of \(0.0001\).
|
\(\epsilon\) of \(0.0001\).
|
||||||
|
|
||||||
For this we use the Gauss-Newton algorithm\cite{gaussNewton} as the
|
For this we use the Gauss--Newton algorithm\cite{gaussNewton} as the
|
||||||
solution to this problem may not be deterministic, because we usually
|
solution to this problem may not be deterministic, because we usually
|
||||||
have way more vertices than control points (\(\#v \gg \#c\)).
|
have way more vertices than control points (\(\#v~\gg~\#c\)).
|
||||||
|
|
||||||
\section{\texorpdfstring{Adaption of \ac{FFD} for a
|
\section{\texorpdfstring{Adaption of \ac{FFD} for a
|
||||||
3D-Mesh}{Adaption of for a 3D-Mesh}}\label{adaption-of-for-a-3d-mesh}
|
3D--Mesh}{Adaption of for a 3D--Mesh}}\label{adaption-of-for-a-3dmesh}
|
||||||
|
|
||||||
\label{3dffd}
|
\label{3dffd}
|
||||||
|
|
||||||
This is a straightforward extension of the 1D-method presented in the
|
This is a straightforward extension of the 1D--method presented in the
|
||||||
last chapter. But this time things get a bit more complicated. As we
|
last chapter. But this time things get a bit more complicated. As we
|
||||||
have a 3-dimensional grid we may have a different amount of
|
have a 3--dimensional grid we may have a different amount of
|
||||||
control-points in each direction.
|
control--points in each direction.
|
||||||
|
|
||||||
Given \(n,m,o\) control points in \(x,y,z\)-direction each Point on the
|
Given \(n,m,o\) control points in \(x,y,z\)--direction each Point on the
|
||||||
curve is defined by
|
curve is defined by
|
||||||
\[V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.\]
|
\[V(u,v,w) = \sum_i \sum_j \sum_k N_{i,d,\tau_i}(u) N_{j,d,\tau_j}(v) N_{k,d,\tau_k}(w) \cdot C_{ijk}.\]
|
||||||
|
|
||||||
In this case we have three different B-Splines (one for each dimension)
|
In this case we have three different B--Splines (one for each dimension)
|
||||||
and also 3 variables \(u,v,w\) for each vertex we want to approximate.
|
and also 3 variables \(u,v,w\) for each vertex we want to approximate.
|
||||||
|
|
||||||
Given a target vertex \(\vec{p}^*\) and an initial guess
|
Given a target vertex \(\vec{p}^*\) and an initial guess
|
||||||
\(\vec{p}=V(u,v,w)\) we define the error-function for the
|
\(\vec{p}=V(u,v,w)\) we define the error--function for the
|
||||||
gradient-descent as:
|
gradient--descent as:
|
||||||
|
|
||||||
\[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\]
|
\[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\]
|
||||||
|
|
||||||
@ -533,7 +534,7 @@ J(Err(u,v,w)) =
|
|||||||
\right)
|
\right)
|
||||||
\]
|
\]
|
||||||
|
|
||||||
With the Gauss-Newton algorithm we iterate via the formula
|
With the Gauss--Newton algorithm we iterate via the formula
|
||||||
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
|
\[J(Err(u,v,w)) \cdot \Delta \left( \begin{array}{c} u \\ v \\ w \end{array} \right) = -Err(u,v,w)\]
|
||||||
and use Cramers rule for inverting the small Jacobian and solving this
|
and use Cramers rule for inverting the small Jacobian and solving this
|
||||||
system of linear equations.
|
system of linear equations.
|
||||||
@ -547,7 +548,7 @@ system of linear equations.
|
|||||||
\item
|
\item
|
||||||
Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||||
\item
|
\item
|
||||||
=\textgreater{} DM-FFD?
|
=\textgreater{} DM--FFD?
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\chapter{\texorpdfstring{Scenarios for testing evolvability criteria
|
\chapter{\texorpdfstring{Scenarios for testing evolvability criteria
|
||||||
@ -564,7 +565,7 @@ Approximation}\label{test-scenario-1d-function-approximation}
|
|||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\tightlist
|
\tightlist
|
||||||
\item
|
\item
|
||||||
Ebene -\textgreater{} Template-Fit
|
Ebene -\textgreater{} Template--Fit
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Matching in 1D}\label{matching-in-1d}
|
\subsection{Matching in 1D}\label{matching-in-1d}
|
||||||
@ -585,7 +586,7 @@ Auswertung}\label{besonderheiten-der-auswertung}
|
|||||||
\item
|
\item
|
||||||
Ergebnis auch bei Rauschen konstant?
|
Ergebnis auch bei Rauschen konstant?
|
||||||
\item
|
\item
|
||||||
normierter 1-Vektor auf den Gradienten addieren
|
normierter 1--Vektor auf den Gradienten addieren
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\tightlist
|
\tightlist
|
||||||
@ -628,7 +629,7 @@ Optimierung}\label{besonderheiten-der-optimierung}
|
|||||||
|
|
||||||
\label{sec:res}
|
\label{sec:res}
|
||||||
|
|
||||||
\section{Spearman/Pearson-Metriken}\label{spearmanpearson-metriken}
|
\section{Spearman/Pearson--Metriken}\label{spearmanpearsonmetriken}
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\tightlist
|
\tightlist
|
||||||
@ -668,28 +669,28 @@ Approximation}\label{results-of-3d-function-approximation}
|
|||||||
|
|
||||||
HAHA .. als ob -.-
|
HAHA .. als ob -.-
|
||||||
|
|
||||||
\backmatter
|
% \backmatter
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
|
|
||||||
\renewcommand\thesection{\Roman{section}}
|
\renewcommand\thechapter{\Alph{chapter}}
|
||||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
|
||||||
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
|
|
||||||
\chapter*{Appendix}
|
\chapter*{Appendix}
|
||||||
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
|
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
|
||||||
|
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
||||||
|
\setcounter{chapter}{0} % reset section to 1 so its stars I, II, III,...
|
||||||
\pagenumbering{roman}
|
\pagenumbering{roman}
|
||||||
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
||||||
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
||||||
\bibliography{bibma}
|
\bibliography{bibma}
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
||||||
% \clearpage %spaeter alles wieder rein
|
% \clearpage %spaeter alles wieder rein
|
||||||
% % \input{files/appendix}
|
% % \input{files/appendix}
|
||||||
\input{settings/abkuerzungen}
|
\input{settings/abkuerzungen}
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations}
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
% \listofalgorithms
|
% \listofalgorithms
|
||||||
@ -698,10 +699,13 @@ HAHA .. als ob -.-
|
|||||||
% \newpage
|
% \newpage
|
||||||
%
|
%
|
||||||
\listoffigures
|
\listoffigures
|
||||||
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
|
||||||
|
% \addtocounter{chapter}{1}
|
||||||
|
\newpage
|
||||||
% \listoftables
|
% \listoftables
|
||||||
\listoftodos
|
\listoftodos
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs}
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
% \printindex
|
% \printindex
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
\chapter*{Abbreviations}
|
\chapter{Abbreviations}
|
||||||
\label{cha:abbrev}
|
\label{cha:abbrev}
|
||||||
\begin{acronym}
|
\begin{acronym}
|
||||||
% Zugriff ueber \ac{BWT} 1te mal Vollreferenz, danach Abk.
|
% Zugriff ueber \ac{BWT} 1te mal Vollreferenz, danach Abk.
|
||||||
@ -10,8 +10,8 @@
|
|||||||
%
|
%
|
||||||
%\acro{GPL}{GNU General Public License} --
|
%\acro{GPL}{GNU General Public License} --
|
||||||
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
|
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
|
||||||
\acro{FFD}{Freeform-Deformation}
|
\acro{FFD}{Freeform--Deformation}
|
||||||
\acro{DM-FFD}{Direct Manipulation Freeform-Deformation}
|
\acro{DM--FFD}{Direct Manipulation Freeform--Deformation}
|
||||||
\acro{RBF}{Radial Basis Function}
|
\acro{RBF}{Radial Basis Function}
|
||||||
|
|
||||||
%
|
%
|
||||||
|
@ -9,7 +9,11 @@ titlepage,
|
|||||||
% pagesize=auto
|
% pagesize=auto
|
||||||
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
||||||
% draft % schneller compillieren, Bild-dummy
|
% draft % schneller compillieren, Bild-dummy
|
||||||
% appendixprefix % Anhang mit Bezeichner
|
% appendixprefix, % Anhang mit Bezeichner
|
||||||
|
bibtotocnumbered,
|
||||||
|
liststotocnumbered,
|
||||||
|
listof=totocnumbered,
|
||||||
|
index=totocnumbered,
|
||||||
xcolor=dvipsnames,
|
xcolor=dvipsnames,
|
||||||
]{scrbook}
|
]{scrbook}
|
||||||
|
|
||||||
@ -53,10 +57,10 @@ xcolor=dvipsnames,
|
|||||||
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
|
\titleformat{name=\chapter,numberless}[hang]{\Huge\bfseries\ }{#1}{20pt}{\Huge\bfseries\ }
|
||||||
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\chapter}[hang]{\Huge\bfseries\ }{\color{CadetBlue}\thechapter}{20pt}{\begin{tabular}[t]{@{\color{CadetBlue}\vrule width 2pt}>{\hangindent=20pt\hsp}p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
|
|
||||||
\titleformat{name=\section,numberless}[hang]{\large\bfseries\ }{#1}{32pt}{\large\bfseries\ }
|
\titleformat{name=\section,numberless}[hang]{\Large\bfseries\ }{#1}{32pt}{\Large\bfseries\ }
|
||||||
\titleformat{\section}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\section}[hang]{\Large\bfseries\ }{\color{CadetBlue}\thesection}{32pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
\titleformat{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ }
|
\titleformat{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
|
||||||
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
\titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||||
|
|
||||||
% ### fr 1 seitig
|
% ### fr 1 seitig
|
||||||
%\usepackage{fancyhdr} %
|
%\usepackage{fancyhdr} %
|
||||||
@ -124,7 +128,8 @@ xcolor=dvipsnames,
|
|||||||
%
|
%
|
||||||
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
||||||
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
||||||
\tableofcontents % Rueckseite leer
|
\renewcommand{\autodot}{}
|
||||||
|
\tableofcontents % Rueckseite leer
|
||||||
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
||||||
|
|
||||||
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
||||||
@ -134,28 +139,28 @@ xcolor=dvipsnames,
|
|||||||
\pagenumbering{arabic}
|
\pagenumbering{arabic}
|
||||||
$body$
|
$body$
|
||||||
|
|
||||||
\backmatter
|
% \backmatter
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
|
|
||||||
\renewcommand\thesection{\Roman{section}}
|
\renewcommand\thechapter{\Alph{chapter}}
|
||||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
|
||||||
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
|
|
||||||
\chapter*{Appendix}
|
\chapter*{Appendix}
|
||||||
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
|
\addcontentsline{toc}{chapter}{\protect\numberline{}Appendix}
|
||||||
|
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
||||||
|
\setcounter{chapter}{0} % reset section to 1 so its stars I, II, III,...
|
||||||
\pagenumbering{roman}
|
\pagenumbering{roman}
|
||||||
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
||||||
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
||||||
\bibliography{bibma}
|
\bibliography{bibma}
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
||||||
% \clearpage %spaeter alles wieder rein
|
% \clearpage %spaeter alles wieder rein
|
||||||
% % \input{files/appendix}
|
% % \input{files/appendix}
|
||||||
\input{settings/abkuerzungen}
|
\input{settings/abkuerzungen}
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations}
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
|
|
||||||
% \listofalgorithms
|
% \listofalgorithms
|
||||||
@ -164,10 +169,13 @@ $body$
|
|||||||
% \newpage
|
% \newpage
|
||||||
%
|
%
|
||||||
\listoffigures
|
\listoffigures
|
||||||
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
|
||||||
|
% \addtocounter{chapter}{1}
|
||||||
|
\newpage
|
||||||
% \listoftables
|
% \listoftables
|
||||||
\listoftodos
|
\listoftodos
|
||||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs}
|
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
|
||||||
\addtocounter{section}{1}
|
% \addtocounter{chapter}{1}
|
||||||
\newpage
|
\newpage
|
||||||
% \printindex
|
% \printindex
|
||||||
|
|
||||||
|
BIN
dokumentation/evolution3d/20171007_3dFit_all_append.png
Normal file
BIN
dokumentation/evolution3d/20171007_3dFit_all_append.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
Loading…
Reference in New Issue
Block a user