diff options
| author | Naveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com> | 2023-06-18 16:53:39 +0000 |
|---|---|---|
| committer | Naveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com> | 2023-06-18 16:53:39 +0000 |
| commit | e4da354cfc8ed5593701b6553db65ed3f82eb7ed (patch) | |
| tree | a0b2a45d4c637c36da2dbcb60abfc35106f0c06c /virtual-programs | |
| parent | Fix camera slice on rotated systems like folk0? (diff) | |
| download | folk-e4da354cfc8ed5593701b6553db65ed3f82eb7ed.tar.gz folk-e4da354cfc8ed5593701b6553db65ed3f82eb7ed.zip | |
More region math
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 } |
