home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / org / papervision3d / objects / primitives / Sphere.as < prev   
Encoding:
Text File  |  2010-06-23  |  5.4 KB  |  147 lines

  1. package org.papervision3d.objects.primitives
  2. {
  3.    import org.papervision3d.Papervision3D;
  4.    import org.papervision3d.core.geom.*;
  5.    import org.papervision3d.core.geom.renderables.Triangle3D;
  6.    import org.papervision3d.core.geom.renderables.Vertex3D;
  7.    import org.papervision3d.core.math.NumberUV;
  8.    import org.papervision3d.core.proto.*;
  9.    
  10.    public class Sphere extends TriangleMesh3D
  11.    {
  12.       public static var DEFAULT_RADIUS:Number = 100;
  13.       
  14.       public static var DEFAULT_SCALE:Number = 1;
  15.       
  16.       public static var DEFAULT_SEGMENTSW:Number = 8;
  17.       
  18.       public static var DEFAULT_SEGMENTSH:Number = 6;
  19.       
  20.       public static var MIN_SEGMENTSW:Number = 3;
  21.       
  22.       public static var MIN_SEGMENTSH:Number = 2;
  23.       
  24.       private var segmentsH:Number;
  25.       
  26.       private var segmentsW:Number;
  27.       
  28.       public function Sphere(param1:MaterialObject3D = null, param2:Number = 100, param3:int = 8, param4:int = 6)
  29.       {
  30.          super(param1,new Array(),new Array(),null);
  31.          this.segmentsW = Math.max(MIN_SEGMENTSW,param3 || DEFAULT_SEGMENTSW);
  32.          this.segmentsH = Math.max(MIN_SEGMENTSH,param4 || DEFAULT_SEGMENTSH);
  33.          if(param2 == 0)
  34.          {
  35.             param2 = DEFAULT_RADIUS;
  36.          }
  37.          var _loc5_:Number = DEFAULT_SCALE;
  38.          this.buildSphere(param2);
  39.       }
  40.       
  41.       private function buildSphere(param1:Number) : void
  42.       {
  43.          var _loc2_:Number = NaN;
  44.          var _loc3_:Number = NaN;
  45.          var _loc4_:Number = NaN;
  46.          var _loc11_:Triangle3D = null;
  47.          var _loc12_:Number = NaN;
  48.          var _loc13_:Number = NaN;
  49.          var _loc14_:Number = NaN;
  50.          var _loc15_:Array = null;
  51.          var _loc16_:Vertex3D = null;
  52.          var _loc17_:Number = NaN;
  53.          var _loc18_:Number = NaN;
  54.          var _loc19_:Number = NaN;
  55.          var _loc20_:int = 0;
  56.          var _loc21_:* = false;
  57.          var _loc22_:Vertex3D = null;
  58.          var _loc23_:Vertex3D = null;
  59.          var _loc24_:Vertex3D = null;
  60.          var _loc25_:Vertex3D = null;
  61.          var _loc26_:Number = NaN;
  62.          var _loc27_:Number = NaN;
  63.          var _loc28_:Number = NaN;
  64.          var _loc29_:Number = NaN;
  65.          var _loc30_:NumberUV = null;
  66.          var _loc31_:NumberUV = null;
  67.          var _loc32_:NumberUV = null;
  68.          var _loc33_:NumberUV = null;
  69.          var _loc5_:Number = Math.max(3,this.segmentsW);
  70.          var _loc6_:Number = Math.max(2,this.segmentsH);
  71.          var _loc7_:Array = this.geometry.vertices;
  72.          var _loc8_:Array = this.geometry.faces;
  73.          var _loc9_:Array = new Array();
  74.          _loc3_ = 0;
  75.          while(_loc3_ < _loc6_ + 1)
  76.          {
  77.             _loc12_ = Number(_loc3_ / _loc6_);
  78.             _loc13_ = -param1 * Math.cos(_loc12_ * Math.PI);
  79.             _loc14_ = param1 * Math.sin(_loc12_ * Math.PI);
  80.             _loc15_ = new Array();
  81.             _loc2_ = 0;
  82.             while(_loc2_ < _loc5_)
  83.             {
  84.                _loc17_ = Number(2 * _loc2_ / _loc5_);
  85.                _loc18_ = _loc14_ * Math.sin(_loc17_ * Math.PI);
  86.                _loc19_ = _loc14_ * Math.cos(_loc17_ * Math.PI);
  87.                if(!((_loc3_ == 0 || _loc3_ == _loc6_) && _loc2_ > 0))
  88.                {
  89.                   _loc16_ = new Vertex3D(_loc19_,_loc13_,_loc18_);
  90.                   _loc7_.push(_loc16_);
  91.                }
  92.                _loc15_.push(_loc16_);
  93.                _loc2_++;
  94.             }
  95.             _loc9_.push(_loc15_);
  96.             _loc3_++;
  97.          }
  98.          var _loc10_:int = int(_loc9_.length);
  99.          _loc3_ = 0;
  100.          while(_loc3_ < _loc10_)
  101.          {
  102.             _loc20_ = int(_loc9_[_loc3_].length);
  103.             if(_loc3_ > 0)
  104.             {
  105.                _loc2_ = 0;
  106.                while(_loc2_ < _loc20_)
  107.                {
  108.                   _loc21_ = _loc2_ == _loc20_ - 1;
  109.                   _loc22_ = _loc9_[_loc3_][_loc21_ ? 0 : _loc2_ + 1];
  110.                   _loc23_ = _loc9_[_loc3_][_loc21_ ? _loc20_ - 1 : _loc2_];
  111.                   _loc24_ = _loc9_[_loc3_ - 1][_loc21_ ? _loc20_ - 1 : _loc2_];
  112.                   _loc25_ = _loc9_[_loc3_ - 1][_loc21_ ? 0 : _loc2_ + 1];
  113.                   _loc26_ = _loc3_ / (_loc10_ - 1);
  114.                   _loc27_ = (_loc3_ - 1) / (_loc10_ - 1);
  115.                   _loc28_ = (_loc2_ + 1) / _loc20_;
  116.                   _loc29_ = _loc2_ / _loc20_;
  117.                   _loc30_ = new NumberUV(_loc28_,_loc27_);
  118.                   _loc31_ = new NumberUV(_loc28_,_loc26_);
  119.                   _loc32_ = new NumberUV(_loc29_,_loc26_);
  120.                   _loc33_ = new NumberUV(_loc29_,_loc27_);
  121.                   if(_loc3_ < _loc9_.length - 1)
  122.                   {
  123.                      _loc8_.push(new Triangle3D(this,new Array(_loc22_,_loc23_,_loc24_),material,new Array(_loc31_,_loc32_,_loc33_)));
  124.                   }
  125.                   if(_loc3_ > 1)
  126.                   {
  127.                      _loc8_.push(new Triangle3D(this,new Array(_loc22_,_loc24_,_loc25_),material,new Array(_loc31_,_loc33_,_loc30_)));
  128.                   }
  129.                   _loc2_++;
  130.                }
  131.             }
  132.             _loc3_++;
  133.          }
  134.          for each(_loc11_ in _loc8_)
  135.          {
  136.             _loc11_.renderCommand.create = createRenderTriangle;
  137.          }
  138.          this.geometry.ready = true;
  139.          if(Papervision3D.useRIGHTHANDED)
  140.          {
  141.             this.geometry.flipFaces();
  142.          }
  143.       }
  144.    }
  145. }
  146.  
  147.