介绍
这篇文章将为大家详细讲解有关C语言实现爱情红玫瑰的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
本文实例为大家分享了C语言实现爱情红玫瑰的具体代码,供大家参考,具体内容如下
一朵红玫瑰,记得要安装easyX,否则运行不了,建议vs2015, 2017系列。看起开舒服一点。
# include & lt; graphics.h> # include & lt; conio.h> # include & lt; math.h>//定义全局变量 int rosesize=500; int h=-250;//定义结构体 结构体点 { 双x; 双y; 双z; 双r;//红色 双g;//绿色//b(蓝色)通过r计算 };//计算点 bool calc(双、双b,双c点,d) { 双j, n, o w z; 如果(c比;60)//花柄 { d。x=罪(* 7)*(13 + 5/(0.2 +战俘(b * 4, 4))) - sin (b) * 50; d。y=b * rosesize + 50; d。z=625 + cos(* 7) *(13 + 5/(0.2 +战俘(b * 4, 4))) + b * 400; d。r=* 1 - b/2; d。g=; 返回true; } 双=* 2 - 1; 双B=B * 2 - 1; 如果(* + * B & lt;1) { 如果(c比;37)//叶 { j=(int (c),1); n=j, # 63;6:4; o=0.5/(a + 0.01) + cos (b * 125) * 3 - * 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 * 0.1 +战俘(1 - B * B - h * 6) * 0.15 - 0.4 a * B * + cos (a + B)/5 +战俘(cos ((o * (+ 1) + (B比;0,# 63;w: - w))/25), 30) * 0.1 * (1 - B * B); d。g=o/1000 + 0.7 - o * w * 0.000003; 返回true; } 如果(c比;32)//花萼 { c=c * 1.16 - 0.15; o=* 45 - 20; w=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 * a * B * 60 - z/2 h; d。z=z; d。r=(b * b * 0.3 +战俘((1 - (*)),7)* 0.15 + 0.3)* b; d。g=b * 0.7; 返回true; }//花 o=* (2 - b) * (80 - c * 2); w=99 - cos (A) * 120 - cos (b) * 4.9 (- h - c *) + cos(战俘(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(战俘(B, 7)) * 50 - c/z/1.35 + 3 - 450; d。z=z; d。r=(1 - b/1.2) * 0.9 + 0.1 *; d。g=战俘((1 - b), 20)/4 + 0.05; 返回true; } 返回错误; }//主函数 void main () {//定义变量 短* zBuffer; int x, y, z, zBufferIndex; 点点;//初始化 initgraph (640、480);//创建绘图窗口 setbkcolor(白色);//设置背景色为白色 清除设备();//清屏//初始化z-buffer zBuffer=new短(rosesize * rosesize); memset (zBuffer 0 sizeof(短)* rosesize * rosesize); for (int j=0;j & lt;2000年,,! _kbhit ();j + +)//按任意键退出 { for (int i=0;我& lt;10000;我+ +)//减少是否有按键的判断 如果(calc(双(rand ())/RAND_MAX,双(rand ())/RAND_MAX rand() % 46/0.74,点)) { z=int(点。z + 0.5); x=int(点。x * rosesize/z - h + 0.5); y=int(点。y * rosesize/z - h + 0.5); 如果(y祝辞=rosesize)继续; zBufferIndex=y * rosesize + x; 如果(!zBuffer [zBufferIndex] | | zBuffer [zBufferIndex]比;z) { zBuffer [zBufferIndex]=z;//画点 int r=~ int(点。r * h));如果(r & lt;0)r=0;如果(r比;255)r=255; int g=~ int(点。g * h));如果(g & lt;0)g=0;如果(g比;255)g=255; int b=~ int(点。r *点。r * -80));如果(b & lt;0)b=0;如果(b比;255)b=255; putpixel (50 x + y - 20, RGB (r, g, b)); } } 睡眠(1); }//退出 删除[]zBuffer; _getch (); closegraph (); }
效果图:
关于C语言实现爱情红玫瑰的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。