Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
72
Task/Draw-a-clock/Lambdatalk/draw-a-clock.lambdatalk
Normal file
72
Task/Draw-a-clock/Lambdatalk/draw-a-clock.lambdatalk
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
1) lambdatalk code
|
||||
{watch} // displays the watch
|
||||
|
||||
{def watch
|
||||
{watch.init}
|
||||
{div {@ id="watch"}}
|
||||
}
|
||||
|
||||
{def watch.draw
|
||||
{lambda {:r :g :b}
|
||||
{svg {@ style="width:300px; height:300px;"}
|
||||
{let { {:r :r} {:g :g} {:b :b} {:t {date}} }
|
||||
{watch.path 150 150 100 20 :r 1 :t}
|
||||
{watch.path 150 150 120 20 :g 2 :t}
|
||||
{watch.path 150 150 140 20 :b 3 :t}
|
||||
{watch.digit :t} }}}}
|
||||
|
||||
{def watch.path
|
||||
{lambda {:x :y :r :e :c :i :t}
|
||||
{path {@ d="{watch.arc :x :y :r {watch.time :i :t}}"
|
||||
fill="none" stroke=":c" stroke-width=":e"}} }}
|
||||
|
||||
{def watch.arc
|
||||
{lambda {:x :y :r :t}
|
||||
{let { {:x :x} {:y :y} {:r :r}
|
||||
{:start {watch.pol2car :x :y :r :t}}
|
||||
{:end {watch.pol2car :x :y :r 0}}
|
||||
{:flag {if {<= :t 180} then 0 else 1}} }
|
||||
M {car :start} {cdr :start}
|
||||
A :r :r 0 :flag 0 {car :end} {cdr :end} }}}
|
||||
|
||||
{def watch.time
|
||||
{lambda {:i :t}
|
||||
{if {= :i 1}
|
||||
then {/ {* 360 {% {S.get {+ :i 2} :t} 12}} 12}
|
||||
else {/ {* 360 {S.get {+ :i 2} :t}} 60} }}}
|
||||
|
||||
{def watch.pol2car
|
||||
{lambda {:cx :cy :r :t}
|
||||
{let { {:cx :cx} {:cy :cy} {:r :r}
|
||||
{:T {* {- :t 90} {/ {PI} 180}}} }
|
||||
{cons {+ :cx {* :r {cos :T}}}
|
||||
{+ :cy {* :r {sin :T}}}} }}}
|
||||
|
||||
{def watch.digit
|
||||
{lambda {:t}
|
||||
{text {@ x="50%" y="48%"
|
||||
base-line="middle"
|
||||
text-anchor="middle"
|
||||
font-size="2.0em"
|
||||
stroke="#ccc"}
|
||||
{S.get 0 :t}/{S.get 1 :t}/{S.get 2 :t} }
|
||||
{text {@ x="50%" y="58%"
|
||||
base-line="middle"
|
||||
text-anchor="middle"
|
||||
font-size="2.0em"
|
||||
stroke="#ccc"}
|
||||
{S.get 3 :t} : {S.get 4 :t} : {S.get 5 :t} } }}
|
||||
|
||||
2) javascript code (for timing)
|
||||
|
||||
{script
|
||||
var update = function () {
|
||||
document.getElementById("watch").innerHTML =
|
||||
LAMBDATALK.eval_forms( "{watch.draw #f00 #0f0 #00f}" )
|
||||
};
|
||||
LAMBDATALK.DICT['watch.init'] = function () {
|
||||
setTimeout( update, 10);
|
||||
setInterval( update, 1000);
|
||||
return ''
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue