commit 0ee48680591b8d011dfcac40618df0bdbcff0f85 (tree)
parent 26f864be5467f4ec2efcc2ac58867adf10ae2544
Author: Motiejus Jakštys <motiejus@uber.com>
Date: Mon, 12 Apr 2021 13:33:51 +0300
additional gentle-inflection illustration
Diffstat:
| M | IV/Makefile | | | 23 | ++++++++++++++++++++++- |
| M | IV/mj-msc.tex | | | 84 | +++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- |
2 files changed, 78 insertions(+), 29 deletions(-)
diff --git a/IV/Makefile b/IV/Makefile
@@ -7,7 +7,9 @@ NON_ARCHIVABLES = notes.txt referatui.txt slides-2021-03-29.txt
ARCHIVABLES = $(filter-out $(NON_ARCHIVABLES),$(shell git ls-files .))
FIGURES = fig8-definition-of-a-bend.pdf \
fig5-gentle-inflection-before.pdf \
- fig5-gentle-inflection-after.pdf
+ fig5-gentle-inflection-after.pdf \
+ inflection-1-gentle-inflection-before.pdf \
+ inflection-1-gentle-inflection-after.pdf
.PHONY: test
test: .faux_test
@@ -89,6 +91,25 @@ fig5-gentle-inflection-after.pdf: layer2img.py Makefile .faux_test
--group2-where="name='fig5' AND stage='cinflections-polygon' AND gen=1" \
--outfile=$@
+inflection-1-gentle-inflection-before.pdf: layer2img.py Makefile .faux_test
+ python ./layer2img.py \
+ --group1-table=wm_debug \
+ --group1-where="name='inflection-1' AND stage='bbends' AND gen=1" \
+ --group2-cmap=1 \
+ --group2-table=wm_debug \
+ --group2-where="name='inflection-1' AND stage='bbends-polygon' AND gen=1" \
+ --outfile=$@
+
+inflection-1-gentle-inflection-after.pdf: layer2img.py Makefile .faux_test
+ python ./layer2img.py \
+ --group1-table=wm_debug \
+ --group1-where="name='inflection-1' AND stage='cinflections' AND gen=1" \
+ --group2-cmap=1 \
+ --group2-table=wm_debug \
+ --group2-where="name='inflection-1' AND stage='cinflections-polygon' AND gen=1" \
+ --outfile=$@
+
+
.faux_test: tests.sql wm.sql .faux_db
./db -f tests.sql
touch $@
diff --git a/IV/mj-msc.tex b/IV/mj-msc.tex
@@ -185,12 +185,43 @@ The original \cite{wang1998line} leaves something to be desired for a practical
implementation: it is not straightforward to implement the algorithm from the
paper alone.
+Explanations in this document are meant to expand, rather than substitute, the
+original description in \cite{wang1998line}. Therefore familiarity with the
+original paper is assumed, and, for some sections, having it close-by is
+necessary to meaningfully follow this document.
+
In this paper we describe {\WM} in a detail that is more useful for algorithm:
each section will be expanded, with more elaborate and exact illustrations for
every step of the algorithm.
Algorithms discussed in this paper assume Euclidean geometry.
+\section{Vocabulary and terminology}
+
+This section defines vocabulary and terms as defined in the rest of the paper.
+
+\begin{description}
+
+ \item[Vertex] is a point on a plane, can be expressed by a pair of $(x,y)$
+ coordinates.
+
+ \item[Line Segment (or Segment)] joins two vertices by a straight line. A
+ segment can be expressed by two coordinate pairs: $(x_1, y_1)$ and
+ $(x_2, y_2)$. Line Segment and Segment are used interchangeably.
+
+ \item[Line] represents a single linear feature in the real world. For
+ example, a river or a coastline. {\tt LINESTRING} in GIS terms.
+
+ Geometrically, A line is a series of connected line segments, or,
+ equivalently, a series of connected vertices. Each vertex connects to
+ two other vertices, except those vertices at either ends of the line:
+ these two connect to a single other vertex.
+
+ \item[Bend] is a subset of a line that humans perceive as a curve. For the
+ purpose of this paper, the geometric definition is complex and is
+ discussed in section~\onpage{sec:definition-of-a-bend}.
+\end{description}
+
\section{Automated tests}
\label{sec:automated-tests}
@@ -215,31 +246,6 @@ The full test suite can be executed with a single command, and completes in a
few seconds. Having an easily accessible test suite boosts confidence that no
unexpected bugs have snug in while modifying the algorithm.
-\section{Vocabulary and terminology}
-
-This section defines vocabulary and terms as defined in the rest of the paper.
-
-\begin{description}
- \item[Vertex] is a point on a plane, can be expressed unambiguously by a
- pair of $(x,y)$ coordinates.
-
- \item[Line Segment (or Segment)] joins two vertices by a straight line. A
- segment can be expressed by two coordinate pairs: $(x_1, y_1)$ and
- $(x_2, y_2)$. Line Segment and Segment are used interchangeably.
-
- \item[Line] represents a single linear feature in the real world. For
- example, a river or a coastline. {\tt LINESTRING} in GIS terms.
-
- Geometrically, A line is a series of connected line segments, or,
- equivalently, a series of connected vertices. Each vertex connects to
- two other vertices, except those vertices at either ends of the line:
- these two connect to a single other vertex.
-
- \item[Bend] is a subset of a line that humans perceive as a curve. For the
- purpose of this paper, the geometric definition is complex and is
- discussed in section~\onpage{sec:definition-of-a-bend}.
-\end{description}
-
\chapter{Description of the implementation}
Like alluded in section~\onpage{sec:introduction}, \cite{wang1998line} paper
@@ -281,27 +287,49 @@ illustration of the detected bends.
\section{Gentle Inflection at End of a Bend}
+Figure~\ref{fig:fig5-gentle-inflection} visualizes original paper's Figure 5,
+when a single vertex is moved outwards the end of the bend.
+
+\begin{figure}[h]
+ \centering
+ \begin{subfigure}[b]{.45\textwidth}
+ \includegraphics[width=\textwidth]{fig5-gentle-inflection-before}
+ \caption{Before applying the inflection rule}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}[b]{.45\textwidth}
+ \includegraphics[width=\textwidth]{fig5-gentle-inflection-after}
+ \caption{After applying the inflection rule}
+ \end{subfigure}
+ \caption{Originally Figure 5: gentle inflections at the ends of the bend}
+ \label{fig:fig5-gentle-inflection}
+\end{figure}
+
The example in this section was clear, but insufficient: it does not specify
how many vertices should be included when calculating the end-of-bend
inflection. We chose the iterative approach -- as long as the angle is "right"
and the distance is decreasing, the algorithm should keep going; practically
not having an upper bound on the number of iterations.
+Additional example, not found in the original paper, is illustrated in
+figure~\onpage{fig:inflection-1-gentle-inflection}: it moves a few vertices.
+
\begin{figure}[h]
\centering
\begin{subfigure}[b]{.45\textwidth}
- \includegraphics[width=\textwidth]{fig5-gentle-inflection-before}
+ \includegraphics[width=\textwidth]{inflection-1-gentle-inflection-before}
\caption{Before applying the inflection rule}
\end{subfigure}
\hfill
\begin{subfigure}[b]{.45\textwidth}
- \includegraphics[width=\textwidth]{fig5-gentle-inflection-after}
+ \includegraphics[width=\textwidth]{inflection-1-gentle-inflection-after}
\caption{After applying the inflection rule}
\end{subfigure}
\caption{Originally Figure 5: gentle inflections at the ends of the bend}
- \label{fig:fig5-gentle-inflection}
+ \label{fig:inflection-1-gentle-inflection}
\end{figure}
+
\section{Self-line Crossing When Cutting a Bend}
\section{Attributes of a Single Bend}