本篇內(nèi)容介紹了“怎么用C++實(shí)現(xiàn)萬花模擬器”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
在達(dá)日等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),達(dá)日網(wǎng)站建設(shè)費(fèi)用合理。
還記得小時候玩的萬花尺么?好好玩,各種不同的點(diǎn)距能畫出各種各樣形狀圖形。
C語言程序萬花尺模擬
函數(shù)功能:每隔5秒隨機(jī)生成萬花圖形 并自動保存作圖參數(shù)以及圖形到當(dāng)前目錄,圖像格式為jpg
提示:
相關(guān)參數(shù)范圍可以自行設(shè)置,用自定義mySetRand函數(shù)設(shè)置作圖尺寸范圍
注意:
內(nèi)圓半徑不能大于外圓半徑,內(nèi)圓作圖點(diǎn)不能大于內(nèi)圓半徑
/*以下是完整代碼,可自行個性化更改參數(shù)*/
#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; // 動圓上的作圖點(diǎn)到圓心的距離 while (1) { //產(chǎn)生一個100-395之間的隨機(jī)數(shù) R = mySetRand(1, 100, 395); r = R - mySetRand(1, 5, 95); dr = r - mySetRand(1,2, r-5); // 求執(zhí)行次數(shù)(最小公倍數(shù)/靜圓半徑) 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)); // 設(shè)置作圖原點(diǎn)坐標(biāo),使其在窗口中心畫圖 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)); } //歸位原點(diǎn)坐標(biāo) setorigin(0, 0); _stprintf_s(s, _T("作圖參數(shù):外圓半徑%.3d像素\\內(nèi)圓半徑%.3d像素\\作圖點(diǎn)到圓心距離%.3d像素"), R, r, dr); settextstyle(20, 0, _T("黑體")); settextcolor(RED); outtextxy(60, 587, s); //保存圖形到當(dāng)前目錄 k++; _stprintf_s(s, _T("%.6d.jpg"), k); saveimage(s); //畫面停留5秒后,清屏重新畫另一個圖 Sleep(5000); closegraph(); } return 0; } //指定范圍隨機(jī)數(shù)產(chǎn)生 //num產(chǎn)生個數(shù),產(chǎn)生范圍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元素個數(shù)為負(fù)數(shù)了?"); 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("數(shù)據(jù)有誤!"); getchar(); } } return p2; }
//部分代碼截圖以及效果圖展現(xiàn)如下
“怎么用C++實(shí)現(xiàn)萬花模擬器”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!