home *** CD-ROM | disk | FTP | other *** search
/ Inside Multimedia 1995 July / IMM0795.ISO / demo / optix / optxfpac.set / UHR.OPT < prev    next >
Text File  |  1995-04-05  |  3KB  |  104 lines

  1. def(i)
  2. def(j)
  3. def(mem)
  4. def(stdx)
  5. def(stdy)
  6. def(minx)
  7. def(miny)
  8. def(sekx)
  9. def(seky)
  10. def(sekxmem)
  11. def(sekymem)
  12. defai(sincos,2,360)
  13. procedure uhr(xm,ym,rd,tm)
  14.  
  15.   rem *** Liefert in den globalen Variablen 'stdx,stdy' für den Stunden-
  16.   rem *** zeiger, in 'minx,miny' für den Minutenzeiger und in 'sekx,seky'
  17.   rem *** für den Sekundenzeiger die X/Y-Koordinaten des Zeigerendpunktes,
  18.   rem *** ausgehend vom Uhr-Mittelpunkt 'xm/ym' und dem Radius 'rd' des
  19.   rem *** Sekundenzeigers. Bei dem numerischen Feld 'SINCOS' ist zu beachten, daß
  20.   rem *** daß die SINUS- und KOSINUS-Werte - da OPTIX aus Geschwindigkeits-
  21.   rem *** gründen nur mit Integerwerten arbeitet - mit dem Faktor 1000
  22.   rem *** multipliziert darin enthalten sind und also im Anschluß an die
  23.   rem *** Kreispunktberechnung mit 1000 dividiert werden muß.
  24.  
  25.   locals(i,sek,min,std)
  26.   sek:=tm - tm/100*100
  27.   min:=tm/100 - tm/10000*100
  28.   std:=tm/10000
  29.   mod(std,12)
  30.   i:=360-((std*30)+min/2+180)
  31.   if i<1
  32.     i:=360+i
  33.   endif
  34.   stdx:=xm+(rd*6/10)*sincos[1,i]/1000
  35.   stdy:=ym+(rd*6/10)*sincos[2,i]/1000
  36.   i:=360-(min*6+180)
  37.   if i<1
  38.     i:=360+i
  39.   endif
  40.   minx:=xm+(rd*8/10)*sincos[1,i]/1000
  41.   miny:=ym+(rd*8/10)*sincos[2,i]/1000
  42.   i:=360-(sek*6+180)
  43.   if i<1
  44.     i:=360+i
  45.   endif
  46.   sekx:=xm+rd*sincos[1,i]/1000
  47.   seky:=ym+rd*sincos[2,i]/1000
  48. return
  49. begin
  50.   new(sincos)
  51.   readarr(sincos,'sincos.tab')
  52.   clearscreen(7)
  53.   disk(321,371,40,0)
  54.   disk(319,369,40,15)
  55.   disk(320,370,40,8)
  56.   for i:=0 to 59 step 5 do
  57.     viewport(i/5*2,i/5*2,xmax-i/5*2,ymax-i/5*2)
  58.     plateau(15,8)
  59.     uhr(320,370,-50,i)
  60.     disk(sekx-1,seky-1,3,15)
  61.     disk(sekx+1,seky+1,3,4)
  62.     disk(sekx,seky,3,12)
  63.   next(i)
  64.   i:=360
  65.   scrtobuf
  66.   repeat
  67.     dec(i,6)                               *** 'Grad'-Umlauf
  68.     if i<1
  69.       i:=360
  70.     endif
  71.     j:=361-i
  72.     uhr(320,370,50,time)
  73.     if sekx<>mem
  74.       viewport(270,320,370,420)
  75.       restorebox(0,0)
  76.       setcolor(1)
  77.       brushline(320,370,stdx,stdy,3,0)
  78.       setcolor(14)
  79.       brushline(320,370,minx,miny,2,0)
  80.       setcolor(4)
  81.       brushline(320,370,sekx,seky,1,0)
  82.       disk(320,370,2,255)
  83.       circle(320,370,2,0)
  84.     endif
  85.     mem:=sekx
  86.     copywin(270,320,370,420)
  87.     loadwin(270,320,0,0)
  88.     sekx:=420+60*sincos[1,j]/1000
  89.     seky:=160+60*sincos[2,j]/1000
  90.     viewport(sekx,seky,sekx+2,seky+2)
  91.     cbox(13,0,0)
  92.     sekxmem:=200-30*sincos[1,i]/1000
  93.     sekymem:=100+30*sincos[2,i]/1000
  94.     sekx:=100+70*sincos[1,i]/1000
  95.     seky:=100+70*sincos[2,i]/1000
  96.     vline(sekx,seky,sekxmem,sekymem,0)
  97.   until mousek<>readkey
  98. end
  99.  
  100.  
  101.  
  102.  
  103.  
  104.