首页
社区
课程
招聘
[旧帖] [原创]捣鼓了一天,搞出了费氏数列的图形画法。 0.00雪花
发表于: 2014-6-23 18:14 1464

[旧帖] [原创]捣鼓了一天,搞出了费氏数列的图形画法。 0.00雪花

2014-6-23 18:14
1464
数学都已经忘完了。。。
MFC下的代码:
        CDC *pDC;
        pDC = this->GetDC();
        int iList[100];
        iList[0]=1;                                        //费氏数列初始的两个元素
        iList[1]=1;
        int i;
        int ix;                                                //横坐标的整数点
        int iy;                                                //纵坐标的整数点
        double dR=1;                                //半径
        double dT;                                        //半径的自增速度
        int iStart=230;
        for(i=2; i<100; i++)                //生成费氏数列
        {
                iList[i]=iList[i-1]+iList[i-2];
        }

        double dx,dy;
        double dPi = 3.1415926535;        //π,2π是一个圆周
        double dPercision = 0.01;        //精度0.01弧度        数值,越像多边形
        double da=0;                                //角度
        dx = cos(da)*dR;                        //取得XY坐标,cos和sin呼唤,可以改变旋转方向,目前是顺时针
        dy = sin(da)*dR;
        ix = int(dx);                                //取整
        iy = int(dy);
        pDC->MoveTo(iStart+ix+300, iStart+iy);
        for(i=1; i<13; i++)                        //每一个费氏数列画一个圆
        {
                dT= iList[i]-iList[i-1];        //半径的自增值
                dT/=2*dPi/dPercision;                //每增加一个dPercision弧度,增加的半径
                for(da=0; da<=2*dPi; da+=dPercision)
                {
                        dR+=dT;
                        dx = cos(da)*dR;
                        dy = sin(da)*dR;
                        ix = int(dx);
                        iy = int(dy);
                        pDC->LineTo(iStart+ix+300, iStart+iy);
                }
        }

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
斐波拉契数列知道,还有对应图形?真不知道!
2014-6-23 20:36
0
雪    币: 785
活跃值: (418)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是的,各种海螺,就是费氏数列排列的半径不断扩大的。
2014-6-23 21:37
0
游客
登录 | 注册 方可回帖
返回
//