⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 face.as

📁 著名的flash 3d引擎 away 3d的源代码
💻 AS
📖 第 1 页 / 共 2 页
字号:
        {            if (_normalDirty) {            	_normalDirty = false;                var d1x:Number = _v1.x - _v0.x;                var d1y:Number = _v1.y - _v0.y;                var d1z:Number = _v1.z - _v0.z;                            var d2x:Number = _v2.x - _v0.x;                var d2y:Number = _v2.y - _v0.y;                var d2z:Number = _v2.z - _v0.z;                            var pa:Number = d1y*d2z - d1z*d2y;                var pb:Number = d1z*d2x - d1x*d2z;                var pc:Number = d1x*d2y - d1y*d2x;                var pdd:Number = Math.sqrt(pa*pa + pb*pb + pc*pc);                _normal.x = pa / pdd;                _normal.y = pb / pdd;                _normal.z = pc / pdd;            }            return _normal;        }				/**		 * Returns the squared bounding radius of the face.		 */        public override function get radius2():Number        {            var rv0:Number = _v0._x*_v0._x + _v0._y*_v0._y + _v0._z*_v0._z;            var rv1:Number = _v1._x*_v1._x + _v1._y*_v1._y + _v1._z*_v1._z;            var rv2:Number = _v2._x*_v2._x + _v2._y*_v2._y + _v2._z*_v2._z;            if (rv0 > rv1)            {                if (rv0 > rv2)                    return rv0;                else                    return rv2;            }            else            {                if (rv1 > rv2)                    return rv1;                else                            return rv2;            }        }            	/**    	 * Returns the maximum u value of the face    	 *     	 * @see	away3d.core.base.UV#u    	 */        public function get maxU():Number        {            if (_uv0._u > _uv1._u)            {                if (_uv0.u > _uv2._u)                    return _uv0._u;                else                    return _uv2._u;            }            else            {                if (_uv1._u > _uv2._u)                    return _uv1._u;                else                    return _uv2._u;            }        }            	/**    	 * Returns the minimum u value of the face    	 *     	 * @see away3d.core.base.UV#u    	 */        public function get minU():Number        {            if (_uv0._u < _uv1._u)            {                if (_uv0._u < _uv2._u)                    return _uv0._u;                else                    return _uv2._u;            }            else            {                if (_uv1._u < _uv2._u)                    return _uv1._u;                else                    return _uv2._u;            }        }            	/**    	 * Returns the maximum v value of the face    	 *     	 * @see away3d.core.base.UV#v    	 */        public function get maxV():Number        {            if (_uv0._v > _uv1._v)            {                if (_uv0._v > _uv2._v)                    return _uv0._v;                else                    return _uv2._v;            }            else            {                if (_uv1._v > _uv2._v)                    return _uv1._v;                else                    return _uv2._v;            }        }            	/**    	 * Returns the minimum v value of the face    	 *     	 * @see	away3d.core.base.UV#v    	 */        public function get minV():Number        {            if (_uv0._v < _uv1._v)            {                if (_uv0._v < _uv2._v)                    return _uv0._v;                else                    return _uv2._v;            }            else            {                if (_uv1._v < _uv2._v)                    return _uv1._v;                else                    return _uv2._v;            }        }            	/**    	 * Returns the maximum x value of the face    	 *     	 * @see		away3d.core.base.Vertex#x    	 */        public override function get maxX():Number        {            if (_v0._x > _v1._x)            {                if (_v0._x > _v2._x)                    return _v0._x;                else                    return _v2._x;            }            else            {                if (_v1._x > _v2._x)                    return _v1._x;                else                    return _v2._x;            }        }            	/**    	 * Returns the minimum x value of the face    	 *     	 * @see		away3d.core.base.Vertex#x    	 */        public override function get minX():Number        {            if (_v0._x < _v1._x)            {                if (_v0._x < _v2._x)                    return _v0._x;                else                    return _v2._x;            }            else            {                if (_v1._x < _v2._x)                    return _v1._x;                else                    return _v2._x;            }        }            	/**    	 * Returns the maximum y value of the face    	 *     	 * @see		away3d.core.base.Vertex#y    	 */        public override function get maxY():Number        {            if (_v0._y > _v1._y)            {                if (_v0._y > _v2._y)                    return _v0._y;                else                    return _v2._y;            }            else            {                if (_v1._y > _v2._y)                    return _v1._y;                else                    return _v2._y;            }        }            	/**    	 * Returns the minimum y value of the face    	 *     	 * @see		away3d.core.base.Vertex#y    	 */        public override function get minY():Number        {            if (_v0._y < _v1._y)            {                if (_v0._y < _v2._y)                    return _v0._y;                else                    return _v2._y;            }            else            {                if (_v1._y < _v2._y)                    return _v1._y;                else                    return _v2._y;            }        }            	/**    	 * Returns the maximum zx value of the face    	 *     	 * @see		away3d.core.base.Vertex#z    	 */        public override function get maxZ():Number        {            if (_v0._z > _v1._z)            {                if (_v0._z > _v2._z)                    return _v0._z;                else                    return _v2._z;            }            else            {                if (_v1._z > _v2._z)                    return _v1._z;                else                    return _v2._z;            }        }            	/**    	 * Returns the minimum z value of the face    	 *     	 * @see		away3d.core.base.Vertex#z    	 */        public override function get minZ():Number        {            if (_v0._z < _v1._z)            {                if (_v0._z < _v2._z)                    return _v0._z;                else                    return _v2._z;            }            else            {                if (_v1._z < _v2._z)                    return _v1._z;                else                    return _v2._z;            }        }				/**		 * Creates a new <code>Face</code> object.		 *		 * @param	v0						The first vertex object of the triangle		 * @param	v1						The second vertex object of the triangle		 * @param	v2						The third vertex object of the triangle		 * @param	material				The material used by the triangle to render		 * @param	uv0			[optional]	The first uv object of the triangle		 * @param	uv1			[optional]	The second uv object of the triangle		 * @param	uv2			[optional]	The third uv object of the triangle		 * 		 * @see	away3d.core.base.Vertex		 * @see	away3d.materials.ITriangleMaterial		 * @see	away3d.core.base.UV		 */        public function Face(v0:Vertex, v1:Vertex, v2:Vertex, material:ITriangleMaterial = null, uv0:UV = null, uv1:UV = null, uv2:UV = null)        {            this.v0 = v0;            this.v1 = v1;            this.v2 = v2;            this.material = material;            this.uv0 = uv0;            this.uv1 = uv1;            this.uv2 = uv2;            _dt.face = this;        }				/**		 * Inverts the geometry of the face object by swapping the <code>v1</code>, <code>v2</code> and <code>uv1</code>, <code>uv2</code> points.		 */        public function invert():void        {            var v1:Vertex = this._v1;            var v2:Vertex = this._v2;            var uv1:UV = this._uv1;            var uv2:UV = this._uv2;            this._v1 = v2;            this._v2 = v1;            this._uv1 = uv2;            this._uv2 = uv1;			            notifyVertexChange();            notifyMappingChange();        }				/**		 * Default method for adding a mappingchanged event listener		 * 		 * @param	listener		The listener function		 */        public function addOnMappingChange(listener:Function):void        {            addEventListener(FaceEvent.MAPPING_CHANGED, listener, false, 0, true);        }				/**		 * Default method for removing a mappingchanged event listener		 * 		 * @param	listener		The listener function		 */        public function removeOnMappingChange(listener:Function):void        {            removeEventListener(FaceEvent.MAPPING_CHANGED, listener, false);        }				/**		 * Default method for adding a materialchanged event listener		 * 		 * @param	listener		The listener function		 */        public function addOnMaterialChange(listener:Function):void        {            addEventListener(FaceEvent.MATERIAL_CHANGED, listener, false, 0, true);        }				/**		 * Default method for removing a materialchanged event listener		 * 		 * @param	listener		The listener function		 */        public function removeOnMaterialChange(listener:Function):void        {            removeEventListener(FaceEvent.MATERIAL_CHANGED, listener, false);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -