home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Examples / badModels / badSolidParaboloid.wwModel / model.eve
Encoding:
Text File  |  1995-04-23  |  2.5 KB  |  59 lines

  1. set paraboloid(color) {1.0 0.0 0.0}
  2. set paraboloid(rMax) .5
  3. set paraboloid(zMin) .2
  4. set paraboloid(zMax) .7
  5. set paraboloid(thetaMax) 360.0
  6. set paraboloid(xScale) 1
  7. set paraboloid(yScale) 1
  8. set paraboloid(zScale) 1
  9. set paraboloid(xTranslate) 0
  10. set paraboloid(yTranslate) 0
  11. set paraboloid(zTranslate) 0
  12. set paraboloid(xRotate) 0
  13. set paraboloid(yRotate) 0
  14. set paraboloid(zRotate) 0
  15.  
  16.  
  17.  
  18. proc drawInsideAndBottom {thetaMax zMin zMax rMin rMax innerXMin innerYMin innerXMax innerYMax} { 
  19.   if {[expr int($thetaMax)] % 360} \
  20.   {  Patch bilinear P "0 0 $zMax  \
  21.                        $rMax 0 $zMax  \
  22.                        0 0 $zMin        \
  23.                        $rMin 0 $zMin  \
  24.                       ";
  25.      Patch bilinear P "0 0 $zMax  \
  26.                        $innerXMax $innerYMax $zMax  \
  27.                        0 0 $zMin        \
  28.                        $innerXMin $innerYMin $zMin  \
  29.                       ";
  30.   } {}
  31.   if {$zMin > 0} \
  32.   {  Disk $zMin $rMin $thetaMax;
  33.   } {}
  34. }
  35.  
  36. loadControlPanel controls.nib
  37.  
  38. startShape aParaboloid
  39.   animatable: {set paraboloid(rMin) [expr {$paraboloid(rMax) * sqrt([expr {$paraboloid(zMin) / $paraboloid(zMax)}])}]}
  40.   animatable: {set paraboloid(innerXMax) [expr {$paraboloid(rMax) * cos(radians($paraboloid(thetaMax)))}]}
  41.   animatable: {set paraboloid(innerYMax) [expr {$paraboloid(rMax) * sin(radians($paraboloid(thetaMax)))}]}
  42.   animatable: {set paraboloid(innerXMin) [expr {$paraboloid(rMin) * cos(radians($paraboloid(thetaMax)))}]}
  43.   animatable: {set paraboloid(innerYMin) [expr {$paraboloid(rMin) * sin(radians($paraboloid(thetaMax)))}]}
  44.   animatable: {Color $paraboloid(color)}
  45.   animatable: {Scale $paraboloid(xScale) $paraboloid(yScale) $paraboloid(zScale)}
  46.   animatable: {Translate $paraboloid(xTranslate) $paraboloid(yTranslate) $paraboloid(zTranslate)}
  47.   animatable: {Rotate $paraboloid(xRotate) 1 0 0 }
  48.   animatable: {Rotate $paraboloid(yRotate) 0 1 0 }
  49.   animatable: {Rotate $paraboloid(zRotate) 0 0 1 }
  50.   SolidBegin primitive
  51.     EveProc {drawInsideAndBottom $paraboloid(thetaMax) $paraboloid(zMin) $paraboloid(zMax) \
  52.                                  $paraboloid(rMin) $paraboloid(rMax) \
  53.                                  $paraboloid(innerXMin) $paraboloid(innerYMin) \
  54.                                  $paraboloid(innerXMax) $paraboloid(innerYMax)}
  55.     animatable: {Paraboloid $paraboloid(rMax) $paraboloid(zMin) $paraboloid(zMax) $paraboloid(thetaMax)}
  56.     animatable: {Disk $paraboloid(zMax) $paraboloid(rMax) $paraboloid(thetaMax)}
  57.   SolidEnd
  58. endShape
  59.