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:
|
||||
|
||||
- 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$
|
||||
refer to real variables between $0$ and $1$ used as coefficients in a 3D
|
||||
B-Spline grid.
|
||||
B--Spline grid.
|
||||
- other lowercase letters
|
||||
refer to other scalar (real) variables.
|
||||
- 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
|
||||
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.
|
||||
throughput of liquid) -- where the complexity increases with the temporal and
|
||||
spatial resolution of the simulation -- or known hard algorithmic problems in
|
||||
informatics (i.e. layouting of circuit boards or stacking of 3D-objects).
|
||||
throughput of liquid) --- where the complexity increases with the temporal and
|
||||
spatial resolution of the simulation --- or known hard algorithmic problems in
|
||||
informatics (i.e. layouting of circuit boards or stacking of 3D--objects).
|
||||
Moreover these are typically not static environments but requirements shift over
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
representation can be challenging.
|
||||
|
||||
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
|
||||
\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}.
|
||||
|
||||
## Outline of this thesis
|
||||
|
||||
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: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:evogood}).
|
||||
In a third step we take a look at the definition of the different evolvability
|
||||
criteria established in \cite{anrichterEvol}.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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}.
|
||||
|
||||
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}
|
||||
|
||||
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
|
||||
$[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
|
||||
interference of $d+1$ points.
|
||||
|
||||
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
|
||||
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)$$
|
||||
|
||||
For a B-Spline
|
||||
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$.
|
||||
|
||||
@ -138,7 +138,7 @@ recursion.
|
||||
|
||||
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.
|
||||
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
|
||||
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
|
||||
@ -150,11 +150,11 @@ plateau can be difficult to
|
||||
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
||||
|
||||
This disadvantages led to the formulation of
|
||||
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||
interacts with the surface-mesh. All interactions will be applied
|
||||
proportionally to the control-points that make up the parametrization of the
|
||||
interaction-point itself yielding a smooth deformation of the surface *at* the
|
||||
surface without seemingly arbitrary scattered control-points. Moreover this
|
||||
\acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||
interacts with the surface--mesh. All interactions will be applied
|
||||
proportionally to the control--points that make up the parametrization of the
|
||||
interaction--point itself yielding a smooth deformation of the surface *at* the
|
||||
surface without seemingly arbitrary scattered control--points. Moreover this
|
||||
increases the efficiency of an evolutionary optimization\cite{Menzel2006}, which
|
||||
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
|
||||
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.
|
||||
|
||||
## What is evolutional optimization?
|
||||
@ -181,12 +181,12 @@ mesh albeit the downsides.
|
||||
|
||||
\change[inline]{Needs citations}
|
||||
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
|
||||
fitness-function in this domain). This avoids the general pitfalls of
|
||||
gradient-based procedures, which often target the same error-function as an
|
||||
general functions just with the help of a given error--function (or
|
||||
fitness--function in this domain). This avoids the general pitfalls of
|
||||
gradient--based procedures, which often target the same error--function as an
|
||||
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
|
||||
evolutional strategy starts with a population of guessed solutions. Because an
|
||||
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
|
||||
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
|
||||
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
|
||||
@ -208,31 +208,31 @@ over time.
|
||||
|
||||
In \cite{anrichterEvol} *variability* is defined as
|
||||
$$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.
|
||||
|
||||
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
|
||||
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
|
||||
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$
|
||||
control-points for an $d$-dimensional control mesh.
|
||||
control--points for an $d$--dimensional control mesh.
|
||||
|
||||
### Regularity
|
||||
|
||||
*Regularity* is defined\cite{anrichterEvol} as
|
||||
$$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
|
||||
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
|
||||
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})$
|
||||
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.
|
||||
|
||||
This criterion should be characteristic for numeric stability on the on
|
||||
@ -243,7 +243,7 @@ locality\cite{weise2012evolutionary,thorhauer2014locality}.
|
||||
### Improvement Potential
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
$$
|
||||
given some approximate $n \times d$ fitness-gradient $\vec{G}$, normalized to
|
||||
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius-Norm.
|
||||
given some approximate $n \times d$ fitness--gradient $\vec{G}$, normalized to
|
||||
$\|\vec{G}\|_F = 1$, whereby $\|\cdot\|_F$ denotes the Frobenius--Norm.
|
||||
|
||||
# Implementation of \acf{FFD}
|
||||
\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.
|
||||
|
||||
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
|
||||
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
|
||||
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}
|
||||
|
||||
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
||||
\ac{FFD}-displacement as
|
||||
\ac{FFD}--displacement as
|
||||
\begin{equation}
|
||||
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
||||
\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.
|
||||
|
||||
In this way every deformed vertex is defined by
|
||||
$$
|
||||
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
||||
$$
|
||||
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
|
||||
position of the vertex we first have to calculate the $u$-value for each
|
||||
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
|
||||
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
|
||||
$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
|
||||
$$
|
||||
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
|
||||
\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
|
||||
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
|
||||
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}
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
$$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.
|
||||
|
||||
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)$$
|
||||
|
||||
@ -368,7 +369,7 @@ $$
|
||||
\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)$$
|
||||
and use Cramers rule for inverting the small Jacobian and solving this system of
|
||||
linear equations.
|
||||
@ -378,7 +379,7 @@ linear equations.
|
||||
|
||||
- Nachteile von Parametrisierung
|
||||
- Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||
- => DM-FFD?
|
||||
- => DM--FFD?
|
||||
|
||||
|
||||
# Scenarios for testing evolvability criteria using \acf{FFD}
|
||||
@ -388,7 +389,7 @@ linear equations.
|
||||
|
||||
### Optimierungszenario
|
||||
|
||||
- Ebene -> Template-Fit
|
||||
- Ebene -> Template--Fit
|
||||
|
||||
### Matching in 1D
|
||||
|
||||
@ -398,7 +399,7 @@ linear equations.
|
||||
|
||||
- Analytische Lösung einzig beste
|
||||
- Ergebnis auch bei Rauschen konstant?
|
||||
- normierter 1-Vektor auf den Gradienten addieren
|
||||
- normierter 1--Vektor auf den Gradienten addieren
|
||||
- Kegel entsteht
|
||||
|
||||
## Test Scenario: 3D Function Approximation
|
||||
@ -419,7 +420,7 @@ linear equations.
|
||||
# Evaluation of Scenarios
|
||||
\label{sec:res}
|
||||
|
||||
## Spearman/Pearson-Metriken
|
||||
## Spearman/Pearson--Metriken
|
||||
|
||||
- Was ist das?
|
||||
- Wieso sollte uns das interessieren?
|
||||
@ -445,7 +446,7 @@ linear equations.
|
||||
|
||||
|
||||
\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}
|
||||
|
||||
\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
|
||||
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
||||
% draft % schneller compillieren, Bild-dummy
|
||||
% appendixprefix % Anhang mit Bezeichner
|
||||
% appendixprefix, % Anhang mit Bezeichner
|
||||
bibtotocnumbered,
|
||||
liststotocnumbered,
|
||||
listof=totocnumbered,
|
||||
index=totocnumbered,
|
||||
xcolor=dvipsnames,
|
||||
]{scrbook}
|
||||
|
||||
@ -53,10 +57,10 @@ xcolor=dvipsnames,
|
||||
\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{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{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ }
|
||||
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||
\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{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
|
||||
\titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||
|
||||
% ### fr 1 seitig
|
||||
%\usepackage{fancyhdr} %
|
||||
@ -124,7 +128,8 @@ xcolor=dvipsnames,
|
||||
%
|
||||
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
||||
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
||||
\tableofcontents % Rueckseite leer
|
||||
\renewcommand{\autodot}{}
|
||||
\tableofcontents % Rueckseite leer
|
||||
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
||||
|
||||
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
||||
@ -143,11 +148,11 @@ Unless otherwise noted the following holds:
|
||||
\tightlist
|
||||
\item
|
||||
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
|
||||
lowercase letters \(u,v,w\)\\
|
||||
refer to real variables between \(0\) and \(1\) used as coefficients
|
||||
in a 3D B-Spline grid.
|
||||
in a 3D B--Spline grid.
|
||||
\item
|
||||
other lowercase letters\\
|
||||
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
|
||||
more and more 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.~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
|
||||
simulation -- or known hard algorithmic problems in informatics
|
||||
(i.e.~layouting of circuit boards or stacking of 3D-objects). Moreover
|
||||
simulation --- or known hard algorithmic problems in informatics
|
||||
(i.e.~layouting of circuit boards or stacking of 3D--objects). Moreover
|
||||
these are typically not static environments but requirements shift over
|
||||
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
|
||||
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
|
||||
an arbitrary 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 representation can be challenging.
|
||||
an arbitrary 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 representation can be challenging.
|
||||
|
||||
The quality of such a representation in biological evolution is called
|
||||
\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}
|
||||
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
|
||||
\cite{anrichterEvol}.
|
||||
|
||||
@ -211,19 +216,19 @@ given the different deformation scheme, as suspected in
|
||||
|
||||
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 (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
|
||||
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:evogood}). In a third step we take a look at the
|
||||
definition of the different evolvability criteria established in
|
||||
\cite{anrichterEvol}.
|
||||
|
||||
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
|
||||
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
|
||||
evaluate the results in Chapter \ref{sec:res} with further on discussion
|
||||
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
|
||||
good 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 3D case in chapter \ref{3dffd}.
|
||||
only summarize the 1D--case from \cite{spitzmuller1996bezier} here and
|
||||
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
|
||||
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
|
||||
\(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
|
||||
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
|
||||
@ -266,12 +271,12 @@ local interference of \(d+1\) points.
|
||||
|
||||
We can even derive this equation straightforward for an arbitrary
|
||||
\(N\)\footnote{\emph{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 derivative of \(0\)}:
|
||||
recursion--formula yields a \(0\) denominator, but \(N\) is also
|
||||
\(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)\]
|
||||
|
||||
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\).
|
||||
|
||||
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 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 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
|
||||
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
|
||||
@ -300,12 +305,12 @@ as creating a plateau can be difficult to
|
||||
achieve\cite[chapter~3.2]{hsu1991dmffd}\cite{hsu1992direct}.
|
||||
|
||||
This disadvantages led to the formulation of
|
||||
\acf{DM-FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||
interacts with the surface-mesh. All interactions will be applied
|
||||
proportionally to the control-points that make up the parametrization of
|
||||
the interaction-point itself yielding a smooth deformation of the
|
||||
\acf{DM--FFD}\cite[chapter~3.3]{hsu1991dmffd} in which the user directly
|
||||
interacts with the surface--mesh. All interactions will be applied
|
||||
proportionally to the control--points that make up the parametrization
|
||||
of the interaction--point itself yielding a smooth deformation of the
|
||||
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.
|
||||
|
||||
\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
|
||||
major impact on the deformation itself.
|
||||
|
||||
All in all \ac{FFD} and \ac{DM-FFD} are still good ways to deform a
|
||||
high-polygon mesh albeit the downsides.
|
||||
All in all \ac{FFD} and \ac{DM--FFD} are still good ways to deform a
|
||||
high--polygon mesh albeit the downsides.
|
||||
|
||||
\section{What is evolutional
|
||||
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
|
||||
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).
|
||||
This avoids the general pitfalls of gradient-based procedures, which
|
||||
often target the same error-function as an evolutional algorithm, but
|
||||
can get stuck in local optima.
|
||||
the help of a given error--function (or fitness--function in this
|
||||
domain). This avoids the general pitfalls of gradient--based procedures,
|
||||
which often target the same error--function as an evolutional algorithm,
|
||||
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
|
||||
an evolutional strategy starts with a population of guessed solutions.
|
||||
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
|
||||
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
|
||||
converge to the same solution, the analytic one is usually faster. But
|
||||
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
|
||||
\[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.
|
||||
|
||||
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
|
||||
each other and the solution is to trivially move every control-point
|
||||
onto a target-point.
|
||||
each other and 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
|
||||
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
|
||||
\(4^d\) control-points for an \(d\)-dimensional control mesh.
|
||||
\(4^d\) control--points for an \(d\)--dimensional control mesh.
|
||||
|
||||
\subsection{Regularity}\label{regularity}
|
||||
|
||||
\emph{Regularity} is defined\cite{anrichterEvol} as
|
||||
\[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 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
|
||||
\(\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\).
|
||||
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.
|
||||
|
||||
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}
|
||||
|
||||
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.
|
||||
|
||||
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\)
|
||||
is\cite{anrichterEvol}: \[
|
||||
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
|
||||
Frobenius-Norm.
|
||||
Frobenius--Norm.
|
||||
|
||||
\chapter{\texorpdfstring{Implementation of
|
||||
\acf{FFD}}{Implementation of }}\label{implementation-of}
|
||||
|
||||
\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.
|
||||
|
||||
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 control-points in that direction.
|
||||
of control--points in that direction.
|
||||
|
||||
\(d\) defines the \emph{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 formulas for the general case so it can be
|
||||
\(d\) defines the \emph{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 formulas for the general case so it can be
|
||||
adapted quite freely.
|
||||
|
||||
\section{\texorpdfstring{Adaption of
|
||||
\ac{FFD}}{Adaption of }}\label{adaption-of}
|
||||
|
||||
As we have established in Chapter \ref{sec:back:ffd} we can define an
|
||||
\ac{FFD}-displacement as
|
||||
\ac{FFD}--displacement as
|
||||
|
||||
\begin{equation}
|
||||
\Delta_x(u) = \sum_i N_{i,d,\tau_i}(u) \Delta_x c_i
|
||||
\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
|
||||
interested in.
|
||||
|
||||
In this way every deformed vertex is defined by \[
|
||||
\textrm{Deform}(v_x) = v_x + \Delta_x(u)
|
||||
\] 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 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 \(c_i\) \[
|
||||
high--detailed 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 vertex. This is achieved by finding
|
||||
out the parametrization of \(v\) in terms of \(c_i\) \[
|
||||
v_x \overset{!}{=} \sum_i N_{i,d,\tau_i}(u) c_i
|
||||
\] 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
|
||||
\]
|
||||
|
||||
As this error-term is quadratic we just derive by \(u\) yielding
|
||||
|
||||
\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
|
||||
\] 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\).
|
||||
|
||||
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
|
||||
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
|
||||
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}
|
||||
|
||||
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
|
||||
have a 3-dimensional grid we may have a different amount of
|
||||
control-points in each direction.
|
||||
have a 3--dimensional grid we may have a different amount of
|
||||
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
|
||||
\[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.
|
||||
|
||||
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:
|
||||
\(\vec{p}=V(u,v,w)\) we define the error--function for the
|
||||
gradient--descent as:
|
||||
|
||||
\[Err(u,v,w,\vec{p}^{*}) = \vec{p}^{*} - V(u,v,w)\]
|
||||
|
||||
@ -533,7 +534,7 @@ J(Err(u,v,w)) =
|
||||
\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)\]
|
||||
and use Cramers rule for inverting the small Jacobian and solving this
|
||||
system of linear equations.
|
||||
@ -547,7 +548,7 @@ system of linear equations.
|
||||
\item
|
||||
Deformation ist um einen Kontrollpunkt viel direkter zu steuern.
|
||||
\item
|
||||
=\textgreater{} DM-FFD?
|
||||
=\textgreater{} DM--FFD?
|
||||
\end{itemize}
|
||||
|
||||
\chapter{\texorpdfstring{Scenarios for testing evolvability criteria
|
||||
@ -564,7 +565,7 @@ Approximation}\label{test-scenario-1d-function-approximation}
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
\item
|
||||
Ebene -\textgreater{} Template-Fit
|
||||
Ebene -\textgreater{} Template--Fit
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Matching in 1D}\label{matching-in-1d}
|
||||
@ -585,7 +586,7 @@ Auswertung}\label{besonderheiten-der-auswertung}
|
||||
\item
|
||||
Ergebnis auch bei Rauschen konstant?
|
||||
\item
|
||||
normierter 1-Vektor auf den Gradienten addieren
|
||||
normierter 1--Vektor auf den Gradienten addieren
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
@ -628,7 +629,7 @@ Optimierung}\label{besonderheiten-der-optimierung}
|
||||
|
||||
\label{sec:res}
|
||||
|
||||
\section{Spearman/Pearson-Metriken}\label{spearmanpearson-metriken}
|
||||
\section{Spearman/Pearson--Metriken}\label{spearmanpearsonmetriken}
|
||||
|
||||
\begin{itemize}
|
||||
\tightlist
|
||||
@ -668,28 +669,28 @@ Approximation}\label{results-of-3d-function-approximation}
|
||||
|
||||
HAHA .. als ob -.-
|
||||
|
||||
\backmatter
|
||||
% \backmatter
|
||||
\cleardoublepage
|
||||
|
||||
\renewcommand\thesection{\Roman{section}}
|
||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
||||
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
|
||||
\renewcommand\thechapter{\Alph{chapter}}
|
||||
\chapter*{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}
|
||||
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
||||
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
||||
\bibliography{bibma}
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
|
||||
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
||||
% \clearpage %spaeter alles wieder rein
|
||||
% % \input{files/appendix}
|
||||
\input{settings/abkuerzungen}
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations}
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
|
||||
% \listofalgorithms
|
||||
@ -698,10 +699,13 @@ HAHA .. als ob -.-
|
||||
% \newpage
|
||||
%
|
||||
\listoffigures
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
% \listoftables
|
||||
\listoftodos
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs}
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
% \printindex
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
\chapter*{Abbreviations}
|
||||
\chapter{Abbreviations}
|
||||
\label{cha:abbrev}
|
||||
\begin{acronym}
|
||||
% Zugriff ueber \ac{BWT} 1te mal Vollreferenz, danach Abk.
|
||||
@ -10,8 +10,8 @@
|
||||
%
|
||||
%\acro{GPL}{GNU General Public License} --
|
||||
% License for free software, see \url{http://www.gnu.org/copyleft/gpl.html}.
|
||||
\acro{FFD}{Freeform-Deformation}
|
||||
\acro{DM-FFD}{Direct Manipulation Freeform-Deformation}
|
||||
\acro{FFD}{Freeform--Deformation}
|
||||
\acro{DM--FFD}{Direct Manipulation Freeform--Deformation}
|
||||
\acro{RBF}{Radial Basis Function}
|
||||
|
||||
%
|
||||
|
@ -9,7 +9,11 @@ titlepage,
|
||||
% pagesize=auto
|
||||
% openany, % Kapitel koennen auch auf geraden Seiten starten
|
||||
% draft % schneller compillieren, Bild-dummy
|
||||
% appendixprefix % Anhang mit Bezeichner
|
||||
% appendixprefix, % Anhang mit Bezeichner
|
||||
bibtotocnumbered,
|
||||
liststotocnumbered,
|
||||
listof=totocnumbered,
|
||||
index=totocnumbered,
|
||||
xcolor=dvipsnames,
|
||||
]{scrbook}
|
||||
|
||||
@ -53,10 +57,10 @@ xcolor=dvipsnames,
|
||||
\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{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{name=\subsection,numberless}[hang]{\bfseries\ }{#1}{27pt}{\bfseries\ }
|
||||
\titleformat{\subsection}[hang]{\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||
\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{name=\subsection,numberless}[hang]{\large\bfseries\ }{#1}{27pt}{\large\bfseries\ }
|
||||
\titleformat{\subsection}[hang]{\large\bfseries\ }{\color{CadetBlue}\thesubsection}{27pt}{\begin{tabular}[t]{p{\dimexpr 1\textwidth -44pt}}#1\end{tabular}}
|
||||
|
||||
% ### fr 1 seitig
|
||||
%\usepackage{fancyhdr} %
|
||||
@ -124,7 +128,8 @@ xcolor=dvipsnames,
|
||||
%
|
||||
%%%%%%%%%%%%%%% Verzeichnisse %%%%%%%%%%%%%%%
|
||||
\frontmatter % Abstrakte Gliederungsebene: Anfang des Buches
|
||||
\tableofcontents % Rueckseite leer
|
||||
\renewcommand{\autodot}{}
|
||||
\tableofcontents % Rueckseite leer
|
||||
%\lstlistoflistings % fuer listingsverzeichnis mit package listings
|
||||
|
||||
%%%%%%%%%%%%%%% Hauptteil %%%%%%%%%%%%%%%
|
||||
@ -134,28 +139,28 @@ xcolor=dvipsnames,
|
||||
\pagenumbering{arabic}
|
||||
$body$
|
||||
|
||||
\backmatter
|
||||
% \backmatter
|
||||
\cleardoublepage
|
||||
|
||||
\renewcommand\thesection{\Roman{section}}
|
||||
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
|
||||
\setcounter{section}{1} % reset section to 1 so its stars I, II, III,...
|
||||
\renewcommand\thechapter{\Alph{chapter}}
|
||||
\chapter*{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}
|
||||
%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%
|
||||
\bibliographystyle{unsrtdin} % \bibliographystyle{natdin}
|
||||
\bibliography{bibma}
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Bibliography} % Literaturverzeichnis in das Inhaltsverzeichnis aufnehmen
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
|
||||
%%%%%%%%%%%%%%% Anhang %%%%%%%%%%%%%%%
|
||||
% \clearpage %spaeter alles wieder rein
|
||||
% % \input{files/appendix}
|
||||
\input{settings/abkuerzungen}
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}Abbreviations}
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}Abbreviations}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
|
||||
% \listofalgorithms
|
||||
@ -164,10 +169,13 @@ $body$
|
||||
% \newpage
|
||||
%
|
||||
\listoffigures
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}List of Figures}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
% \listoftables
|
||||
\listoftodos
|
||||
\addcontentsline{toc}{section}{\protect\numberline{\thesection}TODOs}
|
||||
\addtocounter{section}{1}
|
||||
% \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}TODOs}
|
||||
% \addtocounter{chapter}{1}
|
||||
\newpage
|
||||
% \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