visual c++画五边形的算法,不知道是怎么弄出来的 用C++写程序实现 正五边形的绘制

作者&投稿:庞供 (若有异议请与网页底部的电邮联系)
这个是解析几何的知识。以(0,0)为圆心,半径为100的圆,它的内接五边形就是它均分五等分的点连起来,坐标(x, y)分别为(100*sin(72°), 100*cos(72°))、(100*sin(72°*2), 100*cos(72°*2))……C语言中的sin和cos函数用的是弧度值,需要从角度值换算过去,360°=2π,72°的弧度值是72*π/180,其他以此类推。这样求得的点坐标是以(0,0)为中心的,在屏幕画出来时需要平移,x值和y值分别加上100,即分别向x轴和y轴方向平移100

void pentangon1(HDC hdc,int R,int x,int y)//R为五边形边长,x,y为离原点距离,A、B、C、D、E为五个顶点,用画笔画出的一个正五边形
{

const double Pi=3.1415926;
const double Rd54=54*Pi/180;//度数与弧度的转换
const double Rd72=72*Pi/180;

HPEN hP;//

hP=CreatePen(PS_SOLID,1,RGB(255,0,0));//
SelectObject(hdc,hP);

MoveToEx(hdc,x+int(R*sin(Rd54)),y+0,NULL);//A
LineTo(hdc,x+int(2*R*sin(Rd54)),y+int(R*cos(Rd54)));//A->B
LineTo(hdc,x+int(R*(1+cos(Rd72))),y+int(R*(cos(Rd54)+sin(Rd72))));//B->C
LineTo(hdc,x+int(R*cos(Rd72)),y+int(R*(cos(Rd54)+sin(Rd72))));//C-D
LineTo(hdc,x+0,y+int(R*cos(Rd54)));//D->E
LineTo(hdc,x+int(R*sin(Rd54)),y+0);//E-A

DeleteObject(hP);//

}

之所以要你用#include *.h的形式就是为了 不让你看到源代码
另外,站长团上有产品团购,便宜有保证

visual C++ 如何画出一点~

你需要画多大的点呢?可以先画一个实心圆,然后画第二个,擦掉第一个,画第三个擦掉第二个,这样就可以移动了!

我有用C画的五角星的代码,可以给你参考一下:
http://user.qzone.qq.com/363901060/blog/1216261520
如果有不明白的给我留言~