开启左侧

勾股树

[复制链接]
东拼西筹 发表于 2012-6-20 20:30:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本帖最后由 东拼西筹 于 2012-6-20 20:33 编辑

勾股定理

参与人数 1金钱 +6 贡献 +4 收起 理由
etthink + 6 + 4 最好能有实现的原理和过程

查看全部评分总评分 : 金钱 +6 贡献 +4

欢迎大家多发帖,参与讨论,增进彼此了解。

精彩评论4

正序浏览
etthink 发表于 2012-6-21 07:17:27 | 显示全部楼层
最好能介绍个实现原理和过程...
欢迎大家多发帖,参与讨论,增进彼此了解。
东拼西筹 发表于 2012-6-21 16:05:28 | 显示全部楼层
递归的简单实现
  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:37 | 显示全部楼层
对实现原理毫无头绪
欢迎大家多发帖,参与讨论,增进彼此了解。
Suqh 发表于 2012-7-3 15:36:59 | 显示全部楼层
好厉害
欢迎大家多发帖,参与讨论,增进彼此了解。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐阅读更多+
会员达人更多+
广告位

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )