三角形类

来源:互联网 发布:初识动画软件教学设计 编辑:程序博客网 时间:2024/04/26 06:07

 // Triangle Class

package {
    import flash.display.Graphics;
    public class Triangle {
        private var pointA:Point3D;
        private var pointB:Point3D;
        private var pointC:Point3D;
        private var color:uint;
        public function Triangle(a:Point3D, b:Point3D, c:Point3D, color:uint) {
            pointA = a;
            pointB = b;
            pointC = c;
            this.color = color;
        }
          public function draw(g:Graphics):void {
            if (isBackFace())
            {
                return;
            }
               g.beginFill(color);
            g.moveTo(pointA.screenX, pointA.screenY);
            g.lineTo(pointB.screenX, pointB.screenY);
            g.lineTo(pointC.screenX, pointC.screenY);
            g.lineTo(pointA.screenX, pointA.screenY);
            g.endFill();
          }
          
          private function isBackFace():Boolean {
            // 见 http://www.jurjans.lv/flash/shape.html
            var cax:Number = pointC.screenX - pointA.screenX;
            var cay:Number = pointC.screenY - pointA.screenY;
            var bcx:Number = pointB.screenX - pointC.screenX;
            var bcy:Number = pointB.screenY - pointC.screenY;
            return cax * bcy > cay * bcx;
        }
        public function get depth():Number {
           var zpos:Number = Math.min(pointA.z, pointB.z);
           zpos = Math.min(zpos, pointC.z);
           return zpos;
      }

    }
}

原创粉丝点击