您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么用C++實現萬花模擬器”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
還記得小時候玩的萬花尺么?好好玩,各種不同的點距能畫出各種各樣形狀圖形。
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; }
//部分代碼截圖以及效果圖展現如下
“怎么用C++實現萬花模擬器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。