您现在的位置是:亿华云 > 数据库
万花模拟器(C/C++基础)
亿华云2025-10-04 00:55:16【数据库】0人已围观
简介还记得小时候玩的万花尺么?好好玩,各种不同的点距能画出各种各样形状图形。C语言程序万花尺模拟函数功能:每隔5秒随机生成万花图形 并自动保存作图参数以及图形到当前目录,图像格式为jpg提示:相关参数范围
还记得小时候玩的模拟万花尺么?好好玩,各种不同的模拟点距能画出各种各样形状图形。
C语言程序万花尺模拟
函数功能:每隔5秒随机生成万花图形 并自动保存作图参数以及图形到当前目录,模拟图像格式为jpg
提示:
相关参数范围可以自行设置,云服务器模拟用自定义mySetRand函数设置作图尺寸范围注意:
内圆半径不能大于外圆半径,模拟内圆作图点不能大于内圆半径/*以下是模拟完整代码,可自行个性化更改参数*/
#include #include #include #include #include #include int mySetRand(int num,模拟 int min, int max); #define PI 3.1415926536 int main() { int k = 0; wchar_t s[255] = { NULL }; int R; // 静圆半径 int r; // 动圆半径 int dr; // 动圆上的作图点到圆心的香港云服务器距离 while (1) { //产生一个100-395之间的随机数 R = mySetRand(1, 100, 395); r = R - mySetRand(1, 5, 95); dr = r - mySetRand(1,2, r-5); // 求执行次数(最小公倍数/静圆半径) int m = R, n = r; int tmp; while (n != 0) { tmp = m % n; m = n; n = tmp; } double maxdegree = r / m * 2 * PI; //清屏 //cleardevice(); system("cls"); initgraph(800, 610); setbkcolor(RGB(200, 200, 200)); // 设置作图原点坐标,使其在窗口中心画图 setorigin(400,模拟 300); // 开始绘图 int x, y; for (double degree = 0; degree < maxdegree; degree += 0.01) { x = (int)(dr * cos(degree*(double(R) / r - 1)) + (R - r) * cos(degree)); y = (int)(dr * sin(degree*(double(R) / r - 1)) - (R - r) * sin(degree)); putpixel(x, y, RGB(255,255,0)); } //归位原点坐标 setorigin(0, 0); _stprintf_s(s, _T("作图参数:外圆半径%.3d像素\\内圆半径%.3d像素\\作图点到圆心距离%.3d像素"), R, r, dr); settextstyle(20, 0, _T("黑体")); settextcolor(RED); outtextxy(60, 587, s); //保存图形到当前目录 k++; _stprintf_s(s, _T("%.6d.jpg"), k); saveimage(s); //画面停留5秒后,清屏重新画另一个图 Sleep(5000); closegraph(); } return 0; } //指定范围随机数产生 //num产生个数,模拟产生范围min到max(包括min和max) int mySetRand(int num,模拟 int min, int max) { int *p_num = # int *p_min = &min; int *p_max = &max; int a = 0; int p1 = 0, p2 = 0; if ((*p_num)<0 || (*p_min>*p_max)) { printf("最大值与最小值反过来了?\n元素个数为负数了?"); getchar(); return -1; } srand((unsigned int)time(0)); for (size_t i = 0; i < *p_num; i++) { a = rand(); if (*p_min == 0) { p2 = a % (*p_max + 1); } else if (*p_min>0) { p1 = a / (*p_max - *p_min + 1); p2 = a - p1*(*p_max - *p_min + 1) + *p_min; } else { printf("处理出错!"); getchar(); return -2; } if (p2>*p_max || p2<*p_min) { printf("数据有误!"); getchar(); } } return p2; }//部分代码截图以及效果图展现如下









很赞哦!(17)