Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
50
Task/Active-object/Tcl/active-object.tcl
Normal file
50
Task/Active-object/Tcl/active-object.tcl
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
package require Tcl 8.6
|
||||
oo::class create integrator {
|
||||
variable e sum delay tBase t0 k0 aid
|
||||
constructor {{interval 1}} {
|
||||
set delay $interval
|
||||
set tBase [clock microseconds]
|
||||
set t0 0
|
||||
set e { 0.0 }
|
||||
set k0 0.0
|
||||
set sum 0.0
|
||||
set aid [after $delay [namespace code {my Step}]]
|
||||
}
|
||||
destructor {
|
||||
after cancel $aid
|
||||
}
|
||||
method input expression {
|
||||
set e $expression
|
||||
}
|
||||
method output {} {
|
||||
return $sum
|
||||
}
|
||||
method Eval t {
|
||||
expr $e
|
||||
}
|
||||
method Step {} {
|
||||
set aid [after $delay [namespace code {my Step}]]
|
||||
set t [expr {([clock microseconds] - $tBase) / 1e6}]
|
||||
set k1 [my Eval $t]
|
||||
set sum [expr {$sum + ($k1 + $k0) * ($t - $t0) / 2.}]
|
||||
set t0 $t
|
||||
set k0 $k1
|
||||
}
|
||||
}
|
||||
|
||||
set pi 3.14159265
|
||||
proc pause {time} {
|
||||
yield [after [expr {int($time * 1000)}] [info coroutine]]
|
||||
}
|
||||
proc task {script} {
|
||||
coroutine task_ apply [list {} "$script;set ::done ok"]
|
||||
vwait done
|
||||
}
|
||||
task {
|
||||
integrator create i
|
||||
i input {sin(2*$::pi * 0.5 * $t)}
|
||||
pause 2
|
||||
i input { 0.0 }
|
||||
pause 0.5
|
||||
puts [format %.15f [i output]]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue