From e2cd8504aaafe779b801d41f6d837385ade02651 Mon Sep 17 00:00:00 2001 From: Jacob Haip Date: Wed, 26 Apr 2023 21:36:08 -0400 Subject: save laser-region-manager.folk and highlight-laser-region.folk --- user-programs/haippi7/highlight-laser-region.folk | 27 ++++ user-programs/haippi7/laser-region-manager.folk | 153 ++++++++++++++++++++++ 2 files changed, 180 insertions(+) create mode 100644 user-programs/haippi7/highlight-laser-region.folk create mode 100644 user-programs/haippi7/laser-region-manager.folk (limited to 'user-programs') diff --git a/user-programs/haippi7/highlight-laser-region.folk b/user-programs/haippi7/highlight-laser-region.folk new file mode 100644 index 00000000..56e7d3dc --- /dev/null +++ b/user-programs/haippi7/highlight-laser-region.folk @@ -0,0 +1,27 @@ +source "vendor/math/geometry.tcl" + +When /someone/ claims /something/ region /id/ data /regionData/ & \ + laser blob /t/ has center /c/ size /s/ { + # Unnest {{0 0} {1 1}} into {0 0 1 1} + set unnestedRegionDataPoints $regionData + while {[set t [join $unnestedRegionDataPoints]] ne $unnestedRegionDataPoints} {set unnestedRegionDataPoints $t} + if {[::math::geometry::pointInsidePolygon $c $unnestedRegionDataPoints]} { + Claim laser blob $t inside region $id + } +} + +When laser blob /something/ inside region /id/ & \ + /someone/ claims /something/ region /id/ data /regionData/ { + set tl [::cameraToProjector [lindex $regionData 0]] + set tr [::cameraToProjector [lindex $regionData 1]] + set br [::cameraToProjector [lindex $regionData 2]] + set bl [::cameraToProjector [lindex $regionData 3]] + Display::stroke [list $tl $tr] 5 red + Display::stroke [list $tr $br] 5 red + Display::stroke [list $br $bl] 5 red + Display::stroke [list $bl $tl] 5 red +} + +When laser blob /something/ inside region 1 { + Display::text fb 500 50 20 "Laser inside region 1!" 0 +} \ No newline at end of file diff --git a/user-programs/haippi7/laser-region-manager.folk b/user-programs/haippi7/laser-region-manager.folk new file mode 100644 index 00000000..cfca7d46 --- /dev/null +++ b/user-programs/haippi7/laser-region-manager.folk @@ -0,0 +1,153 @@ +When the collected matches for [list /someone/ claims /something/ region /id/ data /data/] are /regionMatches/ { + set regionDataJsStrList {} + foreach match $regionMatches { + set m [dict get $match data] + # Convert tcl list to javascript array + lappend regionDataJsStrList "\[[string map {"{" "\[" "}" "\]" " " ", "} $m]\]" + } + set jsArrayString "\[[join $regionDataJsStrList ", "]\]" + Wish the web server handles route "/laser-regions-test" with handler [list Evaluator::tryRunInSerializedEnvironment { + html [string map [list REGION_DATA $jsArrayString] { + + +
+ Status + + + +
+ +

Regions

+ + + + + + }] + } [Evaluator::serializeEnvironment]] +} \ No newline at end of file -- cgit v1.2.3