adjusted size and compactness index

This commit is contained in:
Motiejus Jakštys 2021-04-14 16:48:11 +03:00
parent 4c5d6e6e59
commit f5da753322
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} \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 circle whose circumference length is the same as the length of the
circumference of the polygon" \cite{wang1998line}. We assume the area 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: 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} \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} \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} \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{Elimination Operator}
\subsection{Combination 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. This was tested on Linux Debian 11 with upstream packages only.
\subsection{Algorithm code listings} %\subsection{Algorithm code listings}
\inputminted[fontsize=\small]{postgresql}{wm.sql} %\inputminted[fontsize=\small]{postgresql}{wm.sql}
\end{appendices} \end{appendices}
\end{document} \end{document}

View File

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