From d77753a0c054f93d2b6cf399e6b1cd669cead39e Mon Sep 17 00:00:00 2001 From: Cristobal Sciutto Date: Fri, 9 Jun 2023 18:49:43 -0400 Subject: consistent ordering of corners --- virtual-programs/new-program-web-editor.folk | 348 ++++++++++++++------------- virtual-programs/tags-and-calibration.folk | 21 +- virtual-programs/web-editor.folk | 2 +- 3 files changed, 188 insertions(+), 183 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/new-program-web-editor.folk b/virtual-programs/new-program-web-editor.folk index 67a18832..692b00e0 100644 --- a/virtual-programs/new-program-web-editor.folk +++ b/virtual-programs/new-program-web-editor.folk @@ -1,177 +1,179 @@ Wish the web server handles route "/new" with handler { html { - - - - - - Status -
- -

-

-        
- - - - + + } } -} -}; -wsConnect(); - -function handleDrag() { -let [top, left, w, h] = [ele.offsetTop, ele.offsetLeft, ele.offsetWidth, ele.offsetHeight]; -send(` -set top [expr {int(double(${(top + (top/window.innerHeight) * h)}) * (double($Display::HEIGHT) / ${window.innerHeight}))}] -set left [expr {int(double(${(left + (left/window.innerWidth) * w)}) * (double($Display::WIDTH) / ${window.innerWidth}))}] -proc handleConfigure {program x y w h} { - set vertices [list [list $x $y] \ - [list [expr {$x+$w}] $y] \ - [list [expr {$x+$w}] [expr {$y+$h}]] \ - [list $x [expr {$y+$h}]]] - set edges [list [list 0 1] [list 1 2] [list 2 3] [list 3 0]] - Retract web claims $program has region /something/ - Assert web claims $program has region [list $vertices $edges] -} -handleConfigure {${program}} $left $top {${w}} {${h}} -if {$::isLaptop} { Step } -`); -} -function handleSave() { -const code = document.getElementById("code").value; -send(` -Retract web claims {${program}} has program code /something/ -Assert web claims {${program}} has program code {${code}} -if {$::isLaptop} { Step } -`); -setTimeout(() => { - send(`list ERROR: [Statements::findMatches [list {${program}} has error /err/ with info /errorInfo/]]`); -}, 500); -} -let jobid; -function handlePrint() { -const code = document.getElementById("code").value; -jobid = String(Math.random()); -send(`Assert web wishes to print {${code}} with job id {${jobid}}`); -setTimeout(500, () => { - send(`Retract web wishes to print {${code}} with job id {${jobid}}`); -}); -document.getElementById('printback').style.display = ''; -} -function handlePrintBack() { -send(`Assert web wishes to print the back of job id {${jobid}}`); -setTimeout(500, () => { - send(`Retract web wishes to print the back of job id {${jobid}}`); -}); -} - - - - } -} \ No newline at end of file diff --git a/virtual-programs/tags-and-calibration.folk b/virtual-programs/tags-and-calibration.folk index 0d52edf7..eb7b2da2 100644 --- a/virtual-programs/tags-and-calibration.folk +++ b/virtual-programs/tags-and-calibration.folk @@ -63,13 +63,13 @@ proc ::cameraToProjector {cameraPoint} { set Hy [expr {$Hy / $Hz}] return [list $Hx $Hy] } + proc ::projectorToCamera {projectorPoint} { lassign [::math::linearalgebra::matmul $::Hinv [list [lindex $projectorPoint 0] [lindex $projectorPoint 1] 1]] Hinvx Hinvy Hinvz set Hinvx [expr {$Hinvx / $Hinvz}] set Hinvy [expr {$Hinvy / $Hinvz}] return [list $Hinvx $Hinvy] } -# Wish $this is highlighted white When (non-capturing) tag /tag/ has center /c/ size /size/ { Claim tag $tag is a tag @@ -89,22 +89,25 @@ When (non-capturing) tag /tag/ is a tag { Claim $tag has program code $code } - When (non-capturing) tag /tag/ has corners /corners/ { - set tagcorners [lmap p $corners {::cameraToProjector $p}] - # foreach tagcorner $tagcorners { Display::text fb {*}$tagcorner 10 "$tag" } - Display::fillQuad {*}$tagcorners white + set tagCorners [lmap p $corners {::cameraToProjector $p}] + # foreach tagCorner $tagCorners { Display::text fb {*}$tagCorner 1 $tagCorner } + # Display::fillQuad {*}$tagCorners white - set tagbottom [sub [lindex $tagcorners 1] [lindex $tagcorners 0]] - set tagright [sub [lindex $tagcorners 2] [lindex $tagcorners 1]] + set vecBottom [sub [lindex $tagCorners 1] [lindex $tagCorners 0]] + set vecRight [sub [lindex $tagCorners 2] [lindex $tagCorners 1]] set offsets {{-4.7 -2.6} {1 -2.6} {1 0.8} {-4.7 0.8}} - set corners [add $tagcorners [matmul $offsets [list $tagbottom $tagright]]] + set scales [matmul $offsets [list $vecBottom $vecRight]] + set corners [add $tagCorners $scales] + set edges [list] for {set i 0} {$i < [llength $corners]} {incr i} { if {$i > 0} { lappend edges [list [expr {$i - 1}] $i] } } lappend edges [list [expr {[llength $corners] - 1}] 0] - set region [list $corners $edges [::tcl::mathfunc::atan2 {*}$tagright]] + + set region [list $corners $edges [::tcl::mathfunc::atan2 {*}$vecRight]] + Claim $tag has region $region } diff --git a/virtual-programs/web-editor.folk b/virtual-programs/web-editor.folk index 5b68746d..cc474f84 100644 --- a/virtual-programs/web-editor.folk +++ b/virtual-programs/web-editor.folk @@ -96,4 +96,4 @@ function handlePrint() { }] } -} \ No newline at end of file +} -- cgit v1.2.3