先来看一下效果:

实现代码:
/**
 *科赫曲线
 *@param g Graphics
 *@param p1 起始点
 *@param p2 结束点
 *@param p1 迭代次数
 */
function kochCurve(g:Graphics, p1:Point, p2:Point, n:int):void {
 if(n == 0) {
  g.moveTo(p1.x, p1.y)
  g.lineTo(p2.x, p2.y);
  return;
 }
 var p3:Point, p4:Point, p5:Point;
 //     p4
 //p1   /\   p2
 // ---/  \---
 //   p3  p5
 p3 = Point.interpolate(p2, p1, 1/3);
 p5 = Point.interpolate(p2, p1, 2/3);
 var p1_p3:Point = p3.subtract(p1);
 var angle:Number = Math.atan2(p1_p3.y, p1_p3.x)
 p4 = p3.add(Point.polar(p1_p3.length, angle + 1/3*Math.PI));
 kochCurve(g, p1, p3, n-1);
 kochCurve(g, p3, p4, n-1);
 kochCurve(g, p4, p5, n-1);
 kochCurve(g, p5, p2, n-1);
} 
 
![[Google]](http://www.google.com/logos/Logo_25wht.gif)
![[Synchronous Space]](http://weihe924stephen.googlepages.com/syncspace-banner.jpg)
![[Creative Commons License]](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)
![[Add to Google]](http://buttons.googlesyndication.com/fusion/add.gif)
![[Aggregated by MXNA]](http://weblogs.macromedia.com/mxna/images/mxna88x31.gif)
![[Flex.org]](http://www.flex.org/images/flexorg.gif)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)
![Validate my RSS feed [Valid RSS]](http://resource.googlecode.com/files/valid-rss.png)
![[Powered By Blogger]](http://www.blogger.com/buttons/blogger-powerby-blue.gif) 
![[I heart FeedBurner]](http://www.feedburner.com/fb/images/pub/i_heart_fb.gif)
![[收录查询]](http://images.webmasterhome.cn/images/indexed_cn.gif)
没有评论:
发表评论