commit 06c42af1c653eb5c5033c08ccb09528edb516d4c
parent f10bd6f0b1029f2d5d8eb3aef75af55a1f5ea023
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Sat, 30 Mar 2019 13:34:35 +0300
main part
Diffstat:
main.tex | | | 129 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- |
references.bib | | | 10 | +++++++++- |
2 files changed, 130 insertions(+), 9 deletions(-)
diff --git a/main.tex b/main.tex
@@ -60,10 +60,10 @@ In the original programme~\cite{hull2010} that visualises ship lines and
calculates hydrostatic characteristics, ship hull is described by a collection
of curves; however, for a programme that simulates ship dynamics in rough sea
this description is not convenient. A better representation would be a
-collection of triangles that approximate analytically given ship hull geometry.
-At the centre of each triangle pressure force induced by ocean waves is
-applied, and then these forces are used to calculate ship motion. Triangles is
-a better representation because they
+collection of triangles (a \emph{triangular mesh}) that approximate
+analytically given ship hull geometry. At the centre of each triangle pressure
+force induced by ocean waves is applied, and then these forces are used to
+calculate ship motion. Triangles is a better representation because they
\begin{itemize}
\item do not require recomputation every frame (like analytic curves),
\item have simple formula for area (which is needed for pressure force
@@ -71,9 +71,122 @@ a better representation because they
\item the same representation is used internally by graphical accelerators
that visualise simulation frames.
\end{itemize}
-
-
-
+In the following paragraphs we describe how analytically given ship hull is
+transformed into a fully-connected collection of triangles.
+
+In Vessel database each ship hull is divided into three sections
+(fig.~\ref{fig:sections}): aft, main and bow sections. Main section consists of
+frames each of which is defined by a collection of points lying in transverse
+plane. Smooth curve that goes though all of these points is created by cubic
+Hermite spline interpolation. Each frame may not have the same number of points
+(but usually do), and there are no additional points between endpoints of
+subsequent frames in longitudinal plane. Aft and bow sections consist of
+frames in transverse plane and a curve in longitudinal plane that defines the
+shape of the ship hull in this plane. This curve go through (usually) all
+frames and defines intermediate points between endpoints of subsequent frames.
+If it does not go between some frames, then there are no intermediate points
+between them. Curves are not closed and define only left part of the ship hull,
+the full ship hull model is created by mirroring each point of the curve with
+respect to longitudinal axis and connection corresponding curve endpoints by
+straight lines.
+
+\begin{figure}
+ \centering
+ \caption{\label{fig:sections}}
+\end{figure}
+
+Ship hull is transformed from analytic to discrete form by using
+\emph{intermediate representation} in a form of two-dimensional rectangular
+array of points, which makes it easy to obtain triangular mesh. Each ship hull
+section is transformed to such an array, then arrays are concatenated. Each row
+of the resulting array represents a frame, and each frame is an array of points
+of this frame. Since the array have to be rectangular, the number of points
+equal the maximum number of points across original frames in VSL file. After
+that, endpoints are added to make curves closed, and the whole array is
+mirrored with respect to longitudinal axis. Then each rectangular patch of the
+resulting array is divided into two triangles to obtain triangular mesh.
+Duplicate vertices and faces, that may have been introduced by mirroring or
+making curves closed, are removed from the mesh. So, intermediate
+representation is easy to transform to a triangular mesh, but all frame have to
+have the same number of points in order to transform them to such a
+representation.
+
+It is straightforward to transform main section to a rectangular array of
+points in one stage. First, we determine the maximum number of points in a
+frame across all ship hull frames. Then for each frame we use cubic Hermite
+spline interpolation to generate the specified number of points. If each frame
+has the same number of point, we generate the same points that the original
+frame had, because the spline goes through all of them.
+
+In contrast to the main section, transformation of bow and aft sections is done
+in multiple stages. During the first stage we generate intermediate points
+between subsequent frames using the curve describing the ship hull shape in
+longitudinal plane. For that purpose we create a polygon in longitudinal plane
+(fig.~\ref{fig:polygon}) that consists of all points of this curve, all points
+of the frame that is the closest to the curve endpoints, but does not cross the
+curve, and all endpoints of the frames that are between this frame and the
+curve (it happens when first and last endpoint of the curve are close to
+different frames). Frame points that lie outside this polygon are removed.
+Polygon points that lie between subsequent frames become intermediate points.
+At this stage we decompose a bow/aft section into a collection of
+``rectangular'' patches vertical sides of which are curves created from
+subsequent frames and horizontal sides of which are curves created from
+intermediate points.
+
+\begin{figure}
+ \centering
+ \caption{\label{fig:polygon}}
+\end{figure}
+
+A patch that is defined by four curves is called Coons
+patch~\cite{coons1967surfaces}. Coons patch is a parametric surface \(S(u,v)\)
+between four curves \(c_0(u)\), \(c_1(u)\), \(d_0(v)\), \(d_1(v)\):
+\begin{align*}
+ & S(u,v) = C_1(u,v) + C_2(u,v) - C_3(u,v), \\
+ & C_1(u,v) = v' c_0(u) + v c_1(u), \quad v' = 1-v, \\
+ & C_2(u,v) = u' d_0(v) + u d_1(v), \quad u' = 1-u, \\
+ & C_3(u,v) =
+ c_0(0)u'v' +
+ c_0(1)uv' +
+ c_1(0)u'v +
+ c_1(1)uv, \\
+ & c_0(0) = d_0(0),
+ \quad c_0(1) = d_1(0), \quad c_1(0) = d_0(1),
+ \quad c_1(1) = d_1(1).
+\end{align*}
+Here \(C_1\) is linear interpolation between points \(c_0(u)\) and \(c_1(u)\),
+\(C_2\) is linear interpolation between points \(d_0(v)\) and \(d_1(v)\), and
+\(C_3\) is bilinear interpolation between corner points of the patch. \(C_1\)
+and \(C_2\) are ruled surfaces~--- surfaces between two curves, that generated
+by interpolating corresponding curve points. Bicubic interpolation can be used
+instead of bilinear to get the same derivative when joining multiple Coons
+patches together, but for a grid of interior points linear interpolation is
+enough.
+
+Using these formulae we generate a grid of interior points between curves of
+each bow/aft patch during the second stage. Our first approach was use one
+Coons patch for each subsequent pair of frames, but we have found that some
+ship hulls have horizontal curves with large curvatures which cause linear
+interpolation to produce cusps on the resulting surface (fig.~\ref{fig:cusp}).
+We solved this problem by using multiple vertically arranged Coons patches for
+each subsequent pair of frames. This approach removes the cusps, but the
+vertical size of the patch have to be small enough to reduce effect of large
+curvature of the horizontal curve. We concatenate grids of subsequent frames'
+grids to obtain rectangular array for bow/aft sections.
+
+\begin{figure}
+ \centering
+ \caption{\label{fig:cusp}}
+\end{figure}
+
+After transforming each section of the ship hull into a rectangular array and
+concatenating them, we obtain an array of dimensions \(m\times{}n\). We then
+use two-dimensional cubic Hermite spline interpolation to generate a grid of
+\((2m-1)\times{}(2n-1)\) points. Additional points increase surface smoothness
+and provide better approximation for the original ship hull. Finally, we
+transform the resulting grid into triangular mesh to obtain three-dimensional
+discrete ship hull model, which is ready for use in ship motion simulation and
+visualisation.
\section{Results}
@@ -81,7 +194,7 @@ a better representation because they
\section{Conclusion}
-\subsubsection*{Acknowledgments.}
+\subsubsection*{Acknowledgements.}
Research work is supported by Saint Petersburg State University (grant
no.~26520170).
diff --git a/references.bib b/references.bib
@@ -1,6 +1,6 @@
@Misc{ hull2010,
- title = {Analytical ship hull shape construction, wave resistance
+ title = {Analytic ship hull shape construction, wave resistance
calculations, theoretical blueprint feature curve
calculations, and ship stability diagrams (in {Russian})},
author = {Vasily Khramushin},
@@ -18,3 +18,11 @@
url = {http://www1.fips.ru/fips_servl/fips_servlet?DB=EVM&DocNumber=2015621368&TypeFile=html},
fipsnumber = {2015621368}
}
+
+
+@techreport{coons1967surfaces,
+ title={Surfaces for computer-aided design of space forms},
+ author={Coons, Steven A},
+ year={1967},
+ institution={Massachusetts Institute of Technology}
+}