应用思考-教育技术论坛

标题: 勾股树 [打印本页]

作者: 东拼西筹    时间: 2012-6-20 20:30
标题: 勾股树
本帖最后由 东拼西筹 于 2012-6-20 20:33 编辑

勾股定理
http://files.cnblogs.com/ddw1997/testVector2D.swf

作者: etthink    时间: 2012-6-21 07:17
最好能介绍个实现原理和过程...
作者: 东拼西筹    时间: 2012-6-21 16:05
递归的简单实现
  1. package
  2. {

  3.         import com.FPS;
  4.         import com.Vector2D;
  5.         import flash.display.Graphics;
  6.         import flash.display.Sprite;
  7.         import flash.events.Event;
  8.         import com.Rect;
  9.         import com.ColorUtil;
  10.         import flash.events.MouseEvent;
  11.         import flash.geom.Point;

  12.         /**
  13.          * ...
  14.          * @author ddw1997
  15.          */
  16.         [SWF(width="800",height="600",frameRate="24",backgroundColor="#999999")]
  17.         public class RectTree extends Sprite
  18.         {

  19.                 private var rectW:int;
  20.                 private var level:int;
  21.                 private var speed:Number;
  22.                 private var percent:Number;
  23.                 private var contain:Sprite;
  24.                 private var rect0:Rect;
  25.                 private var isLoop:Boolean;
  26.                
  27.                 public function RectTree()
  28.                 {
  29.                         if (stage)
  30.                                 init();
  31.                         else
  32.                                 addEventListener(Event.ADDED_TO_STAGE, init);
  33.                 }

  34.                 private function init(e:Event = null):void
  35.                 {
  36.                         removeEventListener(Event.ADDED_TO_STAGE, init);
  37.                         rectW = 100;
  38.                         level = 8;
  39.                         percent = 0.3;
  40.                         speed = 0.008;
  41.                         contain = new Sprite();
  42.                         addChild(contain );
  43.                         contain .x = 300;
  44.                         contain.y = 500;
  45.                         var fps:FPS = new FPS();
  46.                         addChild(fps);
  47.                         isLoop = true;
  48.                         addEventListener(Event.ENTER_FRAME, loop);
  49.                         stage.addEventListener(MouseEvent.CLICK, pause);

  50.                 }
  51.                
  52.                 private function pause(e:MouseEvent):void
  53.                 {
  54.                         if (isLoop) removeEventListener(Event.ENTER_FRAME, loop);
  55.                         else addEventListener(Event.ENTER_FRAME, loop);
  56.                         isLoop = !isLoop;

  57.                 }
  58.                
  59.                 private function loop(e:Event):void
  60.                 {
  61.                         contain.graphics.clear();
  62.                         percent += speed;
  63.                         if (percent > 1 || percent < 0)
  64.                         {
  65.                                 speed *= -1;
  66.                         }
  67.                         percent = Math.min(1, Math.max(0, percent ));
  68.                        
  69.                         rect0 = new Rect(new Point(0, 0), new Point(rectW, 0), new Point(rectW, rectW), new Point(0, rectW), percent, 0x992200, contain.graphics);
  70.                         drawRect(rect0, 1);
  71.                 }
  72.                
  73.                 private function drawRect(rect:Rect,n:int):void
  74.                 {
  75.                         if (n > level) return;
  76.                         else
  77.                         {
  78.                                 n = n + 1;
  79.                                 drawRect(getNextRect(rect.pointA,rect.percentPoint,rect.pointB,ColorUtil.getColor(n,level*3),percent,contain.graphics),n);
  80.                                 drawRect(getNextRect(rect.percentPoint,rect.pointB,rect.pointA,ColorUtil.getColor(n,level*3),percent,contain.graphics),n);
  81.                         }
  82.                 }
  83.                 private function getNextRect(p1:Point,p2:Point,tagPoint:Point,col:uint,percent:Number,g:Graphics):Rect
  84.                 {
  85.                         var v_12:Vector2D = new Vector2D();
  86.                         v_12.updateVector(true, p1, p2);
  87.                         v_12 = v_12.rotate( -90);
  88.                         var pointA:Point = v_12.endPoint.clone();
  89.                         v_12.startPoint = p2;
  90.                         var pointB:Point = v_12.endPoint.clone();
  91.                         return new Rect(pointA,pointB,p2,p1,percent,col,g)
  92.                        
  93.                        
  94.                        
  95.                        
  96.                 }

  97.         }
  98. }
复制代码



作者: 牛蛙    时间: 2012-6-21 23:37
对实现原理毫无头绪

作者: Suqh    时间: 2012-7-3 15:36
好厉害




欢迎光临 应用思考-教育技术论坛 (http://etthink.com/) Powered by Discuz! X3.4