summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2023-07-09 22:27:08 +0000
committerOmar Rizwan <omar@omar.website>2023-07-09 22:27:08 +0000
commit26266ab14c2c24632aeedc7b1b129b1bee0f32db (patch)
treee02b6686c80ca05e0f4848cb0964660166452073 /virtual-programs
parentImplement `region rotate` helper (diff)
downloadfolk-26266ab14c2c24632aeedc7b1b129b1bee0f32db.tar.gz
folk-26266ab14c2c24632aeedc7b1b129b1bee0f32db.zip
Fix region and vec2 rotate
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/regions.folk10
1 files changed, 6 insertions, 4 deletions
diff --git a/virtual-programs/regions.folk b/virtual-programs/regions.folk
index b1cf45a0..0e261b34 100644
--- a/virtual-programs/regions.folk
+++ b/virtual-programs/regions.folk
@@ -15,8 +15,8 @@ namespace eval ::vec2 {
}
proc rotate {a theta} {
lassign $a x y
- list [expr {$x*cos($theta) - $y*sin($theta)}] \
- [expr {$x*sin($theta) + $y*cos($theta)}]
+ list [expr {$x*cos($theta) + $y*sin($theta)}] \
+ [expr {-$x*sin($theta) + $y*cos($theta)}]
}
proc distance {a b} {
lassign $a ax ay
@@ -130,12 +130,14 @@ namespace eval ::region {
proc rotate {r angle} {
set theta [angle $r]
set c [centroid $r]
- mapVertices v $r {
+ set r' [mapVertices v $r {
set v [vec2 sub $v $c]
set v [vec2 rotate $v $angle]
set v [vec2 add $v $c]
set v
- }
+ }]
+ lset r' 2 [+ $theta $angle]
+ set r'
}
# Scales about the center of the region, along the x and y axes of