stud

study spacejunk
Log | Files | Refs | LICENSE

commit ac7549f493e99b2955a751945432e29eaf2182a4 (tree)
parent 531f69d6d4f30435bda6ad14603a6a6693f0fd29
Author: Motiejus Jakštys <motiejus@uber.com>
Date:   Tue,  6 Apr 2021 07:51:39 +0300

add curvature

Diffstat:
MIV/Makefile | 4++++
MIV/wm.sql | 12+++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/IV/Makefile b/IV/Makefile @@ -84,3 +84,7 @@ slides-2021-03-29.pdf: slides-2021-03-29.txt slides-2021-03-29.html: slides-2021-03-29.txt pandoc --verbose -t slidy --self-contained $< -o $@ $(SLIDY_ARGS) + +dump-debug_wm.sql.xz: + docker exec -ti wm-mj \ + pg_dump -Uosm osm -t debug_wm | xz > $@ diff --git a/IV/wm.sql b/IV/wm.sql @@ -106,7 +106,7 @@ declare pi constant real default radians(180); -- the threshold when the angle is still "small", so gentle inflections can -- be joined - small_angle constant real default radians(30); + small_angle constant real default radians(45); ptail geometry; -- tail point of tail bend phead geometry[]; -- 3 tail points of head bend i int4; -- bends[i] is the current head @@ -268,7 +268,8 @@ create type t_bend_attrs as ( area real, cmp real, adjsize real, - baselinelength real + baselinelength real, + avg_curvature real ); create function bend_attrs(bends geometry[], dbgname text default null) returns setof t_bend_attrs as $$ declare @@ -285,10 +286,10 @@ begin res.area = 0; res.cmp = 0; res.adjsize = 0; - res.baselinelength = 0; + res.baselinelength = st_distance(st_startpoint(bend), st_endpoint(bend)); + res.avg_curvature = inflection_angle(bend) / st_length(bend); if st_numpoints(bend) >= 3 then polygon = st_makepolygon(st_addpoint(bend, st_startpoint(bend))); - res.baselinelength = st_distance(st_startpoint(bend), st_endpoint(bend)); -- Compactness Index (cmp) is defined as "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". I assume they meant the @@ -314,7 +315,8 @@ begin 'area', res.area, 'cmp', res.cmp, 'adjsize', res.adjsize, - 'baselinelength', res.baselinelength + 'baselinelength', res.baselinelength, + 'avg_curvature', res.avg_curvature ) ); end if;