如何用c语言做一个用*组成的实心五角星

如何用c语言做一个用*组成的实心五角星,第1张

1 在C Viewcpp中加入:#include"mathh"

2 在CView类中添加:

int g; //表示角度

CPoint v[10], prev_v[10]; //五角星的十个点

CDC pDC; //设备上下文指针

CBrush br,p_br; //画刷对象和画刷指针

CPen pen,p_pen; //画笔对象和画比指针

3 在构造函数CMyView()添加:

g=0; 角度从0开始

float rad;

int i,t; 将五角星的十个点存入V数组中

for(i=0;i<10;i++)

{rad=float((i36+18)314/180);

t=i&150:25;

v[i]x=int(tcos(rad));

v[i]y=int(tsin(rad));

} //红,绿,蓝

brCreateSolidBrush(RGB(255,255,0));//创建一个实心画刷

penCreatePen(PS_SOLID,2,RGB(0,120,255));设置画笔

// 初始化画刷和画笔:PS_SOLID:实线样式,2:线宽

4 在析构造函数~CMyView()中添加:

brDeleteObject();

penDeleteObject();释放画笔和画刷

5 在OnDraw()函数中加入:

KillTimer(1);//禁止定时器消息

CRect rc; //窗口对象

GetClientRect(&rc); //得到窗口的大小

int x,y,j,x1,y1;

float rad1; // 坐标转换

x=rcright/2;

y=rcbottom/2; //得到窗口的中心坐标

for(j=0;j<359;j+=2)

{rad1=float(j314/180);

x1=int(100cos(rad1))+x; //画圆

y1=int(100sin(rad1))+y;

pDC->SetPixel(x1,y1,RGB(0,0,0)); //画园上的点

2010-6-4 20:00 回复

圈中打转

0位粉丝

2楼

}

pDC->SetROP2(R2_NOTXORPEN); //设置绘图模式

p_br=pDC->SelectObject(&br); //选择画笔等GDI绘图对象

memcpy(prev_v,v,10sizeof(CPoint));//将五角星的十个点送prev_v数组

pDC->Polygon(prev_v,10); //画五角星

pDC->SelectObject(p_br); //设置绘图对象

SetTimer(1,50,NULL); //启动定时器

6 在定时器响应函数OnTimer(UINT nIDEvent) 中添加:

7 g+=5; //角度加5

CRect rc;

GetClientRect(&rc);

int x,y,j;

float rad1; //坐标转换

rad1=float(g314/180);

x=(rcright/2);

y=rcbottom/2;

CPoint a[10]; //定义一个临时的数组存放角度变化后的五角星的十个点

for(j=0;j<10;j++)

{a[j]x=v[j]x+x+int(100cos(rad1));

a[j]y=v[j]y+y+int(100sin(rad1));

}

CClientDC pDC=new CClientDC(this);

pDC->SetROP2(R2_NOTXORPEN);

p_br=pDC->SelectObject(&br);

pDC->Polygon(prev_v,10);

memcpy(prev_v,a,10sizeof(CPoint));

pDC->Polygon(prev_v,10);

pDC->SelectObject(p_br);

delete pDC;

if (g>359) KillTimer(1); //角度

CView::OnTimer(nIDEvent);

%五角星外五角圆半径定为1

rr=04; %五角星内五角圆半径

h=03; %五角星厚度

r=repmat([1;rr],[5 1]);

r=[r;1];

d=(0:36:360)'+18;

x=rcosd(d);

y=rsind(d);

z=ones(size(x));

o=zeros(size(x));

X=[o x];

Y=[o y];

Z1=[hz o];

Z2=[-hz o];

C=ones(size(X));

figure(1),clf;

colormap([1 1 0]);

p=surface(X,Y,Z1,C);hold on;

set(p,'edgecolor','none','facealpha',1,'FaceLighting','phong','FaceColor','interp',

'BackFaceLighting','reverselit');

p=surface(X,Y,Z2,C);hold off;

set(p,'edgecolor','none','facealpha',1,'FaceLighting','phong','FaceColor','interp',

'BackFaceLighting','reverselit');

set(findobj(gca,'type','surface'),

'FaceLighting','phong',

'AmbientStrength',3,'DiffuseStrength',8,

'SpecularStrength',9,'SpecularExponent',2);

axis ([-1 1 -1 1 -1 1]);

hidden off;

view(45,60);

hl=light('Position',[cosd(-90) sind(-90) 1],'Style','infinite');

图纸都没有,怎么编呀?如果你要方法的话,我建议你先编五角星的第一个角的程序,然后以五角星的中心为坐标原点,然后用G68旋转指令编程,编一个角要旋转72度,程序是G68 X0 Y0 R72以此类推即可!

我自己弄出来了,不好意思,我自己来回答了。

程序如下:

#include<stdioh>

void

main()

{

int

i1,j1,k1,i2,j2,k2,i3,j3,k3,i4,j4,k4,m4,n4;

printf("Let's

draw

a

five

pointed

star

below:\n");

for(i1=1;i1<6;i1++)

/这是五角星的上面一个角/

{

for(j1=1;j1<19-i1;j1++)

/这是空格/

printf("

");

for(k1=1;k1<=2i1-1;k1++)

/这是“”/

printf("");

printf("\n");

}

for(i2=1;i2<5;i2++)

/这是五角星的中间两个角/

{

for(j2=1;j2<3i2-3;j2++)

printf("

");

for(k2=1;k2<=42-6i2;k2++)

printf("");

printf("\n");

}

for(i3=1;i3<3;i3++)

/这是中间与下部相接的部分/

{

for(j3=1;j3<12-i3;j3++)

printf("

");

for(k3=1;k3<=12+2i3;k3++)

printf("");

printf("\n");

}

for(i4=1;i4<5;i4++)

/这是五角星的下面两个角/

{

for(j4=1;j4<10-i4;j4++)

printf("

");

for(k4=1;k4<=10-2i4;k4++)

printf("");

for(m4=1;m4<6i4-3;m4++)

printf("

");

for(n4=1;n4<=10-2i4;n4++)

printf("");

printf("\n");

}

printf("Congratulations!\nWe've

successfully

drawn

a

beautiful

pentagon,haven't

we\n(^_^)\n");

以上就是关于如何用c语言做一个用*组成的实心五角星全部的内容,包括:如何用c语言做一个用*组成的实心五角星、求matlab程序画一个3d五角星、铣削五角星程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9642415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存