//So As u c it's only for Covex Polyheron class TPolyhedron { var n:Number; //number of the points var v:Array; //the set of points; var p:Array; //Set of The Polygen Planes var pn:Number; //top id of Polygen Planes, -1 indicate that no plane indeed; var back:MovieClip; //host MovieClip var s:Array; //order(Depths) of Planes; var sight:TVector3D; var dist:Number; function TPolyhedron(n1:Number, v1:Array, back1:MovieClip, sight1:TVector3D, dist1:Number) { n = n1; v = v1; p = []; s = []; pn = -1; back = back1; sight = sight1; dist = dist1; } public function createPlane(n1:Number, vset1:Array, color1:Number, color2:Number, dir1:TVector3D) { pn++; back.createEmptyMovieClip("plane"+pn, pn); p[pn] = new TPlane(n1, this.v, vset1, color1, color2, dir1, back["plane"+pn]); s[pn] = pn; } //function TTriangle(v1:Array, vset1:Array, //vt1_1:TVector, vt2_1:TVector, id1:String, dir1:TVector3D, back1:MovieClip) { public function createTriangle(vset1:Array, vt1_1:TVector, vt1_2:TVector, id1:String, dir1:TVector3D) { pn++; back.createEmptyMovieClip("plane"+pn, pn); p[pn] = new TTriangle(this.v, vset1, vt1_1, vt1_2, id1, dir1, back["plane"+pn]); s[pn] = pn; //p[pn].dir.printf(); } function qsort(p1:Number, q1:Number) { var r = random(q1-p1+1)+p1; var t1 = s[r]; s[r] = s[q1]; s[q1] = t1; r = p1-1; for (var i = p1; i<=q1-1; i++) { if (p[s[i]].dir.getShadow(sight)1) { qsort(p1, r-1); } if (q1-r>1) { qsort(r+1, q1); } } public function render() { qsort(0, pn); //trace("==============="); //sight.printf(); for (var i = 0; i<=pn; i++) { p[s[i]].back.swapDepths(i); //trace(s[i]); //trace(": "+p[s[i]].dir.getShadow(sight)); } for (var i = 0; i<=pn; i++) { p[i].render(this.dist); //p[i].dir.printf(); } } public function rotate(x1:Number, y1:Number, z1:Number) { for (var i = 0; i<=n-1; i++) { v[i].rotate(x1, y1, z1); } for (var i = 0; i<=pn; i++) { p[i].rotate(x1, y1, z1); } } public function clear() { for (var i = 0; i<=pn; i++) { p[i].back.removeMovieClip(); p[i] = null; } pn = -1; } }