summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorNaveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com>2023-06-18 16:53:39 +0000
committerNaveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com>2023-06-18 16:53:39 +0000
commite4da354cfc8ed5593701b6553db65ed3f82eb7ed (patch)
treea0b2a45d4c637c36da2dbcb60abfc35106f0c06c /virtual-programs
parentFix camera slice on rotated systems like folk0? (diff)
downloadfolk-e4da354cfc8ed5593701b6553db65ed3f82eb7ed.tar.gz
folk-e4da354cfc8ed5593701b6553db65ed3f82eb7ed.zip
More region math
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/regions.folk15
1 files changed, 14 insertions, 1 deletions
diff --git a/virtual-programs/regions.folk b/virtual-programs/regions.folk
index 169af718..1702bbfa 100644
--- a/virtual-programs/regions.folk
+++ b/virtual-programs/regions.folk
@@ -14,6 +14,10 @@ namespace eval ::vec2 {
lassign $b bx by
expr {sqrt(pow($ax-$bx, 2) + pow($ay-$by, 2))}
}
+ proc normalize {a} {
+ set l2 [vec2 distance $a [list 0 0]]
+ vec2 scale [/ 1 $l2] $a
+ }
proc dot {a b} {
expr {[lindex $a 0]*[lindex $b 0] + [lindex $a 1]*[lindex $b 1]}
}
@@ -68,7 +72,16 @@ namespace eval ::region {
0 <= $dot_bcbp && $dot_bcbp <= [vec2 dot $bc $bc]}
}
- namespace export distance contains
+ proc centroid {r1} {
+ # This only works for rectangular regions
+ lassign $r1 vertices edges
+ lassign $vertices a b c d
+
+ set vecsum [vec2 add [vec2 add [vec2 add $a $b] $c] $d]
+ vec2 scale 0.25 $vecsum
+ }
+
+ namespace export distance contains centroid
namespace ensemble create
}