home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / SHARE / prog / POVRAY / CLOCKMOD.ZIP / CLOCKMOD.INC < prev    next >
Encoding:
Text File  |  1997-06-24  |  3.5 KB  |  89 lines

  1. // *********************************************************
  2. // CLOCK MODIFIER INCLUDE FILE FOR PERSISTENCE OF VISION 3.x
  3. // *********************************************************
  4. //
  5. // Created by Chris Colefax, 24 June 1997
  6. //
  7. // See "ClockMod.txt" for more information.
  8. //
  9. // *********************************************************
  10.  
  11. // CHECK CLOCK PARAMETERS
  12. // **********************
  13.    #declare _CM_tempver = version #version 3.0
  14.    #ifndef (clock_type)     #declare clock_type     = ""    #end
  15.    #ifndef (clock_start)    #declare clock_start    = 0     #end
  16.    #ifndef (clock_finish)   #declare clock_finish   = 1     #end
  17.    #ifndef (clock_repeat)   #declare clock_repeat   = 1     #end
  18.    #ifndef (clock_strength) #declare clock_strength = 1     #end
  19.    #ifndef (clock_combine)  #declare clock_combine  = ""    #end
  20.    #ifndef (clock_preview)  #declare clock_preview  = false #end
  21.    #ifndef (_CM_combine)    #declare _CM_combine    = 0     #end
  22.  
  23.    #if (clock_start >= clock_finish)
  24.       #warning "clock_start must be less than clock_finish!\n"
  25.       #declare clock_start = 0 #declare clock_finish = 1
  26.    #end
  27.  
  28.    #if (clock_repeat <= 0)
  29.       #warning "clock_repeat must be larger than 0!\n"
  30.       #declare clock_repeat = 1
  31.    #end
  32.  
  33. // DETERMINE CURRENT CLOCK VALUE
  34. // *****************************
  35.    #if (_CM_combine = 0) #if (clock_preview = false) #declare iclock = clock #end
  36.       #else #declare iclock = mclock #end
  37.  
  38. // DETERMINE COMBINATION CLOCK TYPE
  39. // ********************************
  40.    #if (strlen(clock_combine) > 0 & _CM_combine = 0)
  41.       #declare _CM_type = asc(strupr(clock_combine))
  42.       #declare _CM_clock = iclock
  43.       #declare _CM_clevel = 1
  44.  
  45. // DETERMINE CLOCK TYPE
  46. // ********************
  47.    #else #if (strlen(clock_type) = 0) #declare _CM_type = 0
  48.       #else #declare _CM_type = asc(strupr(clock_type)) #end
  49.       #if (iclock < clock_start) #declare _CM_clock = 0
  50.          #else #if (iclock > clock_finish) #declare _CM_clock = 1
  51.          #else #declare _CM_clock = mod((iclock - clock_start) * clock_repeat / (clock_finish - clock_start), 1)
  52.       #end #end
  53.       #declare _CM_clevel = 0
  54.    #end
  55.  
  56. // CALCULATE MODIFIED CLOCK VALUE
  57. // ******************************
  58.    #switch (_CM_type)
  59.       #case (asc("A"))
  60.          #declare mclock = pow(_CM_clock, 2 * clock_strength) #break
  61.       #case (asc("D"))
  62.          #declare mclock = pow(_CM_clock, .5 / clock_strength) #break
  63.       #case (asc("S"))
  64.          #declare mclock = sin((_CM_clock - .5) * pi) / 2 + .5 #break
  65.       #case (asc("T"))
  66.          #declare mclock = (abs(_CM_clock - .5) - .5) * -2 #break
  67.       #case (asc("J"))
  68.          #declare mclock = 1 - pow(abs(_CM_clock * 2 - 1), 2 * clock_strength) #break
  69.       #case (asc("B"))
  70.          #declare mclock = 1 - pow(1 - abs(_CM_clock * 2 - 1), 2 * clock_strength) #break
  71.       #case (asc("O"))
  72.          #declare mclock = sin(_CM_clock * 2 * pi) #break
  73.       #case (asc("W"))
  74.          #declare mclock = sin((_CM_clock -.25) * 2 * pi) * .5 + .5 #break
  75.       #case (asc("R"))
  76.          #declare mclock = (_CM_clock < 0.5 ?
  77.             pow(_CM_clock * 2, .25 / clock_strength) :
  78.             pow(1 - (_CM_clock * 2 - 1), 4 * clock_strength)) #break
  79.       #else
  80.          #declare mclock = _CM_clock
  81.    #end
  82.  
  83. // CALCULATE COMBINED CLOCK
  84. // ************************
  85.    #declare _CM_combine = _CM_combine + 1
  86.    #if (_CM_combine > _CM_clevel) #declare _CM_combine = 0 #end
  87.    #if (_CM_combine > 0) #include "ClockMod.inc" #end
  88.    #version _CM_tempver
  89.