adjusted size and compactness index

This commit is contained in:
Motiejus Jakštys 2021-05-19 22:57:47 +03:00 committed by Motiejus Jakštys
parent 2fea945908
commit 42bdf894f2
2 changed files with 34 additions and 5 deletions

View File

@ -458,7 +458,7 @@ bends need to be checked.
\subsection{Attributes of a Single Bend}
Compactness Index $cmp$ is "the ratio of the area of the polygon over the
\textsc{Compactness Index} is "the ratio of the area of the polygon over the
circle whose circumference length is the same as the length of the
circumference of the polygon" \cite{wang1998line}. We assume the area of the
circle is meant. Given a bend, its compactness index is calculated as follows:
@ -486,10 +486,39 @@ circle is meant. Given a bend, its compactness index is calculated as follows:
\end{enumerate}
Other than that, once this section is implemented, each bend will have a list
of properties, upon which actions later will be performed.
\subsection{Shape of a Bend}
This section introduces \textsc{adjusted size}, which trivially derives from
\textsc{compactness index} $cmp$ and shape's area $A$:
\[
adjsize = \frac{0.75 A}{cmp}
\]
Adjusted size becomes necessary later to compare bends with each other, and
find out similar ones.
\subsection{The Context of a Bend: Isolated and Similar Bends}
To find out whether two bends are similar, they are compared by 3 components:
\begin{enumerate}
\item \textsc{Adjusted Size}
\item \textsc{Compactness index}
\item Baseline length
\end{enumerate}
These 3 components represent a point in the 3-dimensional space, and Euclidean
distance $d$ between those is calculated to differentiate between bends $p$ and
$q$:
\[
d(p,q) = \sqrt{(adjsize_p - adjsize_q)^2 + (cmp_p - cmp_q)^2 + (baseline_p - baseline_q)^2}
\]
\subsection{Elimination Operator}
\subsection{Combination Operator}
@ -524,8 +553,8 @@ We strongly believe in the ability to reproduce the results is critical for any
This was tested on Linux Debian 11 with upstream packages only.
\subsection{Algorithm code listings}
\inputminted[fontsize=\small]{postgresql}{wm.sql}
%\subsection{Algorithm code listings}
%\inputminted[fontsize=\small]{postgresql}{wm.sql}
\end{appendices}
\end{document}

4
wm.sql
View File

@ -353,8 +353,8 @@ begin
-- area of the circle. So here goes:
-- 1. get polygon area P.
-- 2. get polygon perimeter = u. Pretend it's our circle's circumference.
-- 3. get A (area) of the circle from u: A = (u^2)/(4*pi)
-- 4. divide P by A: cmp = P/A = P/((u^2)*4*pi) = 4*pi*P/u^2
-- 3. get A (area) of the circle from u: A = u^2/(4pi)
-- 4. divide P by A: cmp = P/A = P/(u^2/(4pi)) = 4pi*P/u^2
res.area = st_area(polygon);
res.cmp = fourpi*res.area/(st_perimeter(polygon)^2);
if res.cmp > 0 then