summaryrefslogtreecommitdiffstats
path: root/virtual-programs
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2023-07-09 20:26:28 +0000
committerOmar Rizwan <omar@omar.website>2023-07-09 20:26:28 +0000
commitba97d2928ec3d15f2baacd41e3e8455b81b5932f (patch)
treed4361282f9e77425fdca1e2ad630647f3e086c8b /virtual-programs
parentFix `region scale` for rotated regions (diff)
downloadfolk-ba97d2928ec3d15f2baacd41e3e8455b81b5932f.tar.gz
folk-ba97d2928ec3d15f2baacd41e3e8455b81b5932f.zip
Implement `region rotate` helper
Diffstat (limited to 'virtual-programs')
-rw-r--r--virtual-programs/regions.folk11
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} {