画一个五角星
来源:互联网 发布:莫知我哀的句式 编辑:程序博客网 时间:2024/05/17 04:24
画五角星有画5点的和画10点的。5点五角星内部是有填充的,或者线有交叉。10点五角星是画出五角星的外围轮廓线。
不论是画5点五角星还是10点五角星,基本思路都是一样的。即,五角星的顶点在大圆上,五角星的拐点在小圆上。五个点与中心点连接构成的角度是360÷5=72度。
因此,5点法画五角星的代码就可以写成:
double pi = 3.1415926535;
CPoint point[5];
for(int i=0;i<5;i++)
{
point[i].x =(long)(ptCenter.x -nRadius*sin((i*72+36)*2*pi/360));
point[i].y =(long)(ptCenter.y +nRadius*cos((i*72+36)*2*pi/360));
}
for(i=0;i<5;i++)
{
pDC->MoveTo(point[i]);
pDC->LineTo(point[(i+2)%5]);
}
内部小圆的半径是大圆半径的几分之几呢?这个计算很简单。
10点法画五角星的代码可以写成:
POINT cirlce[11];
lreal largecircle_radius = Size;
lreal smallcircle_radius = (cos(72*2*_PI_/360)/cos(36*2*_PI_/360))*Size;
for(int32 i=0; i<10; i++)
{
cirlce[i].x =(long)(brush->x - largecircle_radius*sin((i*36+36)*2*_PI_/360));
cirlce[i].y =(long)(brush->y + largecircle_radius*cos((i*36+36)*2*_PI_/360));
i++;
cirlce[i].x =(long)(brush->x - smallcircle_radius*sin((i*36+36)*2*_PI_/360));
cirlce[i].y =(long)(brush->y + smallcircle_radius*cos((i*36+36)*2*_PI_/360));
}
cirlce[10] = cirlce[0];
::MoveToEx(memdc, cirlce[0].x, cirlce[0].y, NULL );
::PolylineTo(memdc, cirlce, 11);
如果用openGL画的话,代码参考
》》CSDN资料库 - VC/MFC 图形处理/算法问题
》》 能不能告诉我怎样画一个五角星?最好把算法讲得明白点,谢谢!!!
- 画一个五角星
- 画一个五角星
- 画一个五角星
- HTML5-画一个简单五角星
- OpenGL二 - 画一个五角星 pentagram
- 画五角星
- 画五角星
- 画五角星
- 画出一个五角星
- 案例四、1.使用Canvas画一个五角星
- 【益智题】寻找一个五角星
- 画五角星算法
- Java_GUI_画五角星
- OpenGL画五角星
- 用鼠标画五角星
- openGL画五角星
- OpenGL画五角星
- canvas画五角星
- 汇编语言超浓缩教程
- ATMEGA128单片机的软件远程升级
- 关于虚函数的思考
- 50个最好的firefox扩展让你尽情冲浪
- UC/OS和uClinux的比较
- 画一个五角星
- 首页---Home Page Goal---First
- 嵌入式GSM短信息接口的软硬件设计
- Java Api中文版
- 如何在aspx网页中使用.net编译后的自定义用户控件
- 程序界的高手传奇
- cygwin下HPC开发环境的搭建
- 让Firefox快速用上IE收藏夹
- 终于换热水器了。