diff options
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/regions.folk | 15 |
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 } |
