diff options
| author | Omar Rizwan <omar@omar.website> | 2023-07-09 20:26:28 +0000 |
|---|---|---|
| committer | Omar Rizwan <omar@omar.website> | 2023-07-09 20:26:28 +0000 |
| commit | ba97d2928ec3d15f2baacd41e3e8455b81b5932f (patch) | |
| tree | d4361282f9e77425fdca1e2ad630647f3e086c8b /virtual-programs | |
| parent | Fix `region scale` for rotated regions (diff) | |
| download | folk-ba97d2928ec3d15f2baacd41e3e8455b81b5932f.tar.gz folk-ba97d2928ec3d15f2baacd41e3e8455b81b5932f.zip | |
Implement `region rotate` helper
Diffstat (limited to 'virtual-programs')
| -rw-r--r-- | virtual-programs/regions.folk | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/virtual-programs/regions.folk b/virtual-programs/regions.folk index 10684a59..b1cf45a0 100644 --- a/virtual-programs/regions.folk +++ b/virtual-programs/regions.folk @@ -127,6 +127,17 @@ namespace eval ::region { vec2 scale $vecsum 0.25 } + proc rotate {r angle} { + set theta [angle $r] + set c [centroid $r] + mapVertices v $r { + set v [vec2 sub $v $c] + set v [vec2 rotate $v $angle] + set v [vec2 add $v $c] + set v + } + } + # Scales about the center of the region, along the x and y axes of # the space of the region (not the global x and y). proc scale {r args} { |
