home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 July
/
IMM0795.ISO
/
demo
/
optix
/
optxfpac.set
/
UHR.OPT
< prev
next >
Wrap
Text File
|
1995-04-05
|
3KB
|
104 lines
def(i)
def(j)
def(mem)
def(stdx)
def(stdy)
def(minx)
def(miny)
def(sekx)
def(seky)
def(sekxmem)
def(sekymem)
defai(sincos,2,360)
procedure uhr(xm,ym,rd,tm)
rem *** Liefert in den globalen Variablen 'stdx,stdy' für den Stunden-
rem *** zeiger, in 'minx,miny' für den Minutenzeiger und in 'sekx,seky'
rem *** für den Sekundenzeiger die X/Y-Koordinaten des Zeigerendpunktes,
rem *** ausgehend vom Uhr-Mittelpunkt 'xm/ym' und dem Radius 'rd' des
rem *** Sekundenzeigers. Bei dem numerischen Feld 'SINCOS' ist zu beachten, daß
rem *** daß die SINUS- und KOSINUS-Werte - da OPTIX aus Geschwindigkeits-
rem *** gründen nur mit Integerwerten arbeitet - mit dem Faktor 1000
rem *** multipliziert darin enthalten sind und also im Anschluß an die
rem *** Kreispunktberechnung mit 1000 dividiert werden muß.
locals(i,sek,min,std)
sek:=tm - tm/100*100
min:=tm/100 - tm/10000*100
std:=tm/10000
mod(std,12)
i:=360-((std*30)+min/2+180)
if i<1
i:=360+i
endif
stdx:=xm+(rd*6/10)*sincos[1,i]/1000
stdy:=ym+(rd*6/10)*sincos[2,i]/1000
i:=360-(min*6+180)
if i<1
i:=360+i
endif
minx:=xm+(rd*8/10)*sincos[1,i]/1000
miny:=ym+(rd*8/10)*sincos[2,i]/1000
i:=360-(sek*6+180)
if i<1
i:=360+i
endif
sekx:=xm+rd*sincos[1,i]/1000
seky:=ym+rd*sincos[2,i]/1000
return
begin
new(sincos)
readarr(sincos,'sincos.tab')
clearscreen(7)
disk(321,371,40,0)
disk(319,369,40,15)
disk(320,370,40,8)
for i:=0 to 59 step 5 do
viewport(i/5*2,i/5*2,xmax-i/5*2,ymax-i/5*2)
plateau(15,8)
uhr(320,370,-50,i)
disk(sekx-1,seky-1,3,15)
disk(sekx+1,seky+1,3,4)
disk(sekx,seky,3,12)
next(i)
i:=360
scrtobuf
repeat
dec(i,6) *** 'Grad'-Umlauf
if i<1
i:=360
endif
j:=361-i
uhr(320,370,50,time)
if sekx<>mem
viewport(270,320,370,420)
restorebox(0,0)
setcolor(1)
brushline(320,370,stdx,stdy,3,0)
setcolor(14)
brushline(320,370,minx,miny,2,0)
setcolor(4)
brushline(320,370,sekx,seky,1,0)
disk(320,370,2,255)
circle(320,370,2,0)
endif
mem:=sekx
copywin(270,320,370,420)
loadwin(270,320,0,0)
sekx:=420+60*sincos[1,j]/1000
seky:=160+60*sincos[2,j]/1000
viewport(sekx,seky,sekx+2,seky+2)
cbox(13,0,0)
sekxmem:=200-30*sincos[1,i]/1000
sekymem:=100+30*sincos[2,i]/1000
sekx:=100+70*sincos[1,i]/1000
seky:=100+70*sincos[2,i]/1000
vline(sekx,seky,sekxmem,sekymem,0)
until mousek<>readkey
end