七夕表白! C语言实现爱情红玫瑰
本文实例为大家分享了C语言实现爱情红玫瑰的具体代码,供大家参考,具体内容如下
一朵红玫瑰,记得要安装easyX,否则运行不了,建议vs2015,2017系列。看起开舒服一点。
#include#include #include //定义全局变量 introsesize=500; inth=-250; //定义结构体 structDOT { doublex; doubley; doublez; doubler;//红色 doubleg;//绿色 //b(蓝色)通过r计算 }; //计算点 boolcalc(doublea,doubleb,doublec,DOT&d) { doublej,n,o,w,z; if(c>60)//花柄 { d.x=sin(a*7)*(13+5/(0.2+pow(b*4,4)))-sin(b)*50; d.y=b*rosesize+50; d.z=625+cos(a*7)*(13+5/(0.2+pow(b*4,4)))+b*400; d.r=a*1-b/2; d.g=a; returntrue; } doubleA=a*2-1; doubleB=b*2-1; if(A*A+B*B<1) { if(c>37)//叶 { j=(int(c)&1); n=j?6:4; o=0.5/(a+0.01)+cos(b*125)*3-a*300; w=b*h; d.x=o*cos(n)+w*sin(n)+j*610-390; d.y=o*sin(n)-w*cos(n)+550-j*350; d.z=1180+cos(B+A)*99-j*300; d.r=0.4-a*0.1+pow(1-B*B,-h*6)*0.15-a*b*0.4+cos(a+b)/5+pow(cos((o*(a+1)+(B>0?w:-w))/25),30)*0.1*(1-B*B); d.g=o/1000+0.7-o*w*0.000003; returntrue; } if(c>32)//花萼 { c=c*1.16-0.15; o=a*45-20; w=b*b*h; z=o*sin(c)+w*cos(c)+620; d.x=o*cos(c)-w*sin(c); d.y=28+cos(B*0.5)*99-b*b*b*60-z/2-h; d.z=z; d.r=(b*b*0.3+pow((1-(A*A)),7)*0.15+0.3)*b; d.g=b*0.7; returntrue; } //花 o=A*(2-b)*(80-c*2); w=99-cos(A)*120-cos(b)*(-h-c*4.9)+cos(pow(1-b,7))*50+c*2; z=o*sin(c)+w*cos(c)+700; d.x=o*cos(c)-w*sin(c); d.y=B*99-cos(pow(b,7))*50-c/3-z/1.35+450; d.z=z; d.r=(1-b/1.2)*0.9+a*0.1; d.g=pow((1-b),20)/4+0.05; returntrue; } returnfalse; } //主函数 voidmain() { //定义变量 short*zBuffer; intx,y,z,zBufferIndex; DOTdot; //初始化 initgraph(640,480);//创建绘图窗口 setbkcolor(WHITE);//设置背景色为白色 cleardevice();//清屏 //初始化z-buffer zBuffer=newshort[rosesize*rosesize]; memset(zBuffer,0,sizeof(short)*rosesize*rosesize); for(intj=0;j<2000&&!_kbhit();j++)//按任意键退出 { for(inti=0;i<10000;i++)//减少是否有按键的判断 if(calc(double(rand())/RAND_MAX,double(rand())/RAND_MAX,rand()%46/0.74,dot)) { z=int(dot.z+0.5); x=int(dot.x*rosesize/z-h+0.5); y=int(dot.y*rosesize/z-h+0.5); if(y>=rosesize)continue; zBufferIndex=y*rosesize+x; if(!zBuffer[zBufferIndex]||zBuffer[zBufferIndex]>z) { zBuffer[zBufferIndex]=z; //画点 intr=~int((dot.r*h));if(r<0)r=0;if(r>255)r=255; intg=~int((dot.g*h));if(g<0)g=0;if(g>255)g=255; intb=~int((dot.r*dot.r*-80));if(b<0)b=0;if(b>255)b=255; putpixel(x+50,y-20,RGB(r,g,b)); } } Sleep(1); } //退出 delete[]zBuffer; _getch(); closegraph(); }
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。