Yet Another Clock
Jim Hurley
jhurley at infostations.com
Tue May 31 13:30:54 EDT 2005
>
>Message: 12
>Date: Tue, 31 May 2005 02:22:08 -0700
>From: Scott Rossi <scott at tactilemedia.com>
>Subject: Yet Another Clock
>To: How to use Revolution <use-revolution at lists.runrev.com>
>Message-ID: <BEC17AD0.1904B%scott at tactilemedia.com>
>Content-Type: text/plain; charset="US-ASCII"
>
>At the risk of beating a dead clock, here is another more visual approach to
>the display of time which uses the points of a hidden graphic to
>determine the location of each "hand" (still pretty minimal/efficient code).
>In your message box:
>
> go url "http://www.tactilemedia.com/download/ballclock.rev"
>
>This actually took a lot longer than three minutes to build in that I had to
>figure out how to create a vector graphic that contained 60 equidistant
>points (the solution was to create the source ring in a vector program and
>then import into Rev using Alejandro Tejada's EPSimport stack). Of course
>this could be done using math by the Jim Hurley types on the list but that
>kind of thing eludes me...
>
>See the card script for details.
>
>Regards,
>
>Scott Rossi
>Creative Director
>Tactile Media, Development & Design
>-----
>E: scott at tactilemedia.com
>W: http://www.tactilemedia.com
Scott,
Enjoyed your Ball Clock. I need to sit down and figure out where
those minute and hour settings come from.
The sixty points on the circle can be derived from the following
handlers which convert 60 radial coordinates into 60 rectangular
coordinates.
on mouseUP
put 100 into R
repeat with a = 1 to 360 step 6
put XYcorGivenRAcor(R,a) & cr after results
end repeat
set the points of grc "myPoly" to results
end mouseUP
function XYcorGivenRAcor r,a
put the width of this stack/2 into x0
put the height of this stack/2 into y0
put r*cos(a*pi/180) into x
put r*sin(a*pi/180) into y
return round(x0-x),round(y0-y)
end XYcorGivenRAcor
Couldn't resist a Turtle Graphics (actually the Tell Turtles version
thereof) formulation of the clock problem. It uses your same three
objects to represent the seconds, minutes and hours. The setRA
function is similar to the XYcorGivenRAcor function above.
on setTime
set the itemdelimiter to ":"
put word 1 of the long time into T
tell "seconds"; setRA r,90-6*item 3 of T
tell "minutes"; setRA r,90 - (6 * item 2 of T) - (item 3 of T) / 10
tell "hours"; setRA r, 90 - (30 * item 1 of T) - (item 2 of T) / 2
send "setTime" to me in 1 sec
end setTime
Jim
More information about the use-livecode
mailing list