正余弦函数的应用--正多边形的绘制

      flash 2004-10-12 16:5
还是先看一下效果~

Flash 动画

代码如下:
//编程:浪子啸天 制作:浪子啸天
//原理:利用三角函数,控制正多边形的节点位置,利用绘图函数绘制图像.
function drawd(n,long){ //自定义绘制函数,有两个参数,n为绘制的边数,long为绘制多边形的边长
    clear()//清屏
    var xarray=new Array() //定义一个数组,用来存储接点的位置坐标
    var yarray=new Array()
    centerx=Stage.width/2 //定义绘制中心
    centery=Stage.height/2
    Pi=Math.PI
    step=360/n//计算每一边对应的角度
    jiao=step*Pi/180 //转换为弧度
    tempjiao=jiao/2 //除以2,用来计算所需的圆的半径
    radius=0.5*long/Math.sin(tempjiao) //计算圆的半径(如果不知道怎么算,请提出,我再讲)
    if(radius>Stage.height/2){ //如果半径过大,超出了场景,让半径适合场景
        radius=Stage.height/2
    }
    for(i=0;i<n+1;i++){ //计算绘制接点
        angel=step*i //每个接点对应的角度
        hudu=angel*Pi/180 //转换为弧度
        x=radius*Math.cos(hudu)+centerx //x坐标
        y=radius*Math.sin(hudu)+centery//y坐标
        xarray[i]=x//存入数组
        yarray[i]=y
        }
        this.moveTo(xarray[0],yarray[0])//初始绘制点
        this.lineStyle(1,0x00ff00,100)//绘制线条样式,可以改变
    for(i=0;i<n+1;i++){ //绘制
        this.lineTo(xarray[i],yarray[i])
    }
}
//更多的flash知识请关注:http://lzflash.5dblog.com
这是主要的绘制函数,使用这个函数进行控制绘图,当然,也可以把他写为类.
场景中的大家可以这样来设置:
静态文本:边数 边长 开始绘制
输入文本两个,一个放在边数的后面,设置变量为n,接受边数;一个放在边长的后面,用来接受边长,设置变量为l
随便做一个按钮,放在"开始绘制"几个字的上面,在按钮上加上如下代码:
on(release){//点击释放后
    this.drawd(n,l)//开始绘制
    n=""//把输入清空
    l=""
}
好了,可以测试了~~!
有什么问题清提出,谢谢~~
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}