Red: Rotating Images: feedback requested
Michael J. Lew
michaell at unimelb.edu.au
Wed Jun 25 18:15:00 EDT 2003
Richmond Mathewson was >Having some problems with rotation...
I don't know anything much about rotating images, but if the project
is just a clock then why not move a graphic around rather than rotate
an image? I'm sure you could recalculate the points of even a quite
complex graphic in very little time. The code below is from a clock
that I built when first learning to use Revolution. It seems to work
OK and you can get the trigonometric transformations from it.
on oneTick
global gClockRunning
if gClockRunning then send "oneTick" to me in 500 milliseconds
set the tickMessageID of me to the result
--seconds
put the secondHandLength of group "clock" into L
put the clockTime of group "clock" + 1 into currentTime
put the long time into theTime
convert theTime to dateItems
put item 6 of theTime into mySec
add item 5 of theTime*60 to mySec
add item 4 of theTime*3600 to mySec
put -pi/2 +mySec*2*pi/60 into theta
put round(L*sin(theta)) into y
put round(L*cos(theta)) into x
put the loc of graphic "spindle" into myPoint
add x to item 1 of myPoint
add y to item 2 of myPoint
put the loc of graphic "spindle" & return & myPoint into handPoints
set the points of graphic "secondHand" to handPoints
--minutes (do only every 6 seconds)
if currentTime mod 6 = 0 then
put the minuteHandLength of group "clock" into L
put -pi/2 +mySec*2*pi/3600 into theta
put round(L*sin(theta)) into y
put round(L*cos(theta)) into x
put the loc of graphic "spindle" into myPoint
add x to item 1 of myPoint
add y to item 2 of myPoint
put the loc of graphic "spindle" & return & myPoint into handPoints
set the points of graphic "minuteHand" to handPoints
end if
--hours (do only every 60 seconds)
if currentTime mod 60 = 0 then
put the hourHandLength of group "clock" into L
put -pi/2 +mySec*2*pi/(12*60*60) into theta
put round(L*sin(theta)) into y
put round(L*cos(theta)) into x
put the loc of graphic "spindle" into myPoint
add x to item 1 of myPoint
add y to item 2 of myPoint
put the loc of graphic "spindle" & return & myPoint into handPoints
set the points of graphic "hourHand" to handPoints
end if
end oneTick
Regards,
--
Michael J. Lew
Senior Lecturer
Department of Pharmacology
The University of Melbourne
Parkville 3010
Victoria
Australia
Phone +613 8344 8304
**
New email address: michaell at unimelb.edu.au
**
More information about the use-livecode
mailing list