签到

05月06日
尚未签到

共有回帖数 0

    做月子

    等级:


    声明,前几天看见EGE的示例DEMO里面有五角星,于是乎点进去看了,发现和我以前画的十二星旗的方法几乎一致,说我抄袭,这个就算抄袭了炮姐的吧,今天无聊了一下午,突发奇想是不是所有的多角芒星都可以用同一个公式表示?于是乎忙活了一会,终于被我发现秘密了。。。






    我们用EGE中的fillpoly这个函数画五角星,先看这个函数的用法
    void fillpoly(
    int numpoints,
    const int *polypoints,
    PIMAGE pimg = NULL
    );
    参数1,int整型,代表有多少个顶点,参数2,指向一个const int 的指针,至少有可用的顶点*2个元素,储存着顶点的x,y坐标,该函数的工作方式是依次从第一个顶线划线至最后一个顶点,然后再由最后一个连完至第一个,有点像一笔画。现在来算上图的各个点的坐标,此窗口的长宽为640*480,所以中心点的坐标为320,240,以下都是画在中心点上。
    首先定义一个数组,长度为10,int start5crood,10]={0};然后计算顶点坐标,图中a=2*PI/5;
    顶点1的坐标,x = 320+sin(0*PI/5)*r,y=240-cos(0*PI/5)*r;
    顶点2的坐标,x = 320+sin(4*PI/5)*r,y=240-cos(4*PI/5)*r;
    顶点3的坐标,x = 320+sin(8*PI/5)*r,y=240-cos(8*PI/5)*r;
    顶点4的坐标,x = 320+sin(2*PI/5)*r,y=240-cos(2*PI/5)*r;
    顶点5的坐标,x = 320+sin(6*PI/5)*r,y=240-cos(6*PI/5)*r;
    循环赋给start5crood,然后再用,fillpoly(5, start5crood);画出,就OK了

    楼主 2015-11-05 12:34 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知