diff options
| author | Omar Rizwan <omar@omar.website> | 2023-07-09 22:27:08 +0000 |
|---|---|---|
| committer | Omar Rizwan <omar@omar.website> | 2023-07-09 22:27:08 +0000 |
| commit | 26266ab14c2c24632aeedc7b1b129b1bee0f32db (patch) | |
| tree | e02b6686c80ca05e0f4848cb0964660166452073 /virtual-programs | |
| parent | Implement `region rotate` helper (diff) | |
| download | folk-26266ab14c2c24632aeedc7b1b129b1bee0f32db.tar.gz folk-26266ab14c2c24632aeedc7b1b129b1bee0f32db.zip | |
Fix region and vec2 rotate
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/regions.folk | 10 |
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 |
