日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

短短幾行代碼,就能畫出如此絢爛的圖像

Q4MP_gh_c472c21 ? 來源:C語言與CPP編程 ? 作者:C語言與CPP編程 ? 2022-05-16 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

事情是這么一回事:

國外有個大佬在StackExchange上發(fā)起了一個叫做Tweetable Mathematical Art的比賽。

參賽者需要用C++編寫代表三原色的RD、GR、BL三個函數(shù),每個函數(shù)都不能超過140個字符。每個函數(shù)都會接到 i 和 j 兩個整型參數(shù)(0 ≤ i, j ≤ 1023),然后需要返回一個 0 到 255 之間的整數(shù),表示位于 (i, j) 的像素點的顏色值。

舉個例子,如果 RD(0, 0) 和 GR(0, 0) 返回的都是 0 ,但 BL(0, 0) 返回的是 255 ,那么圖像的最左上角那個像素就是藍色。

參賽者編寫的代碼會被插進下面這段程序當(dāng)中(我做了一些細(xì)微的改動),最終會生成一個大小為 1024×1024 的圖片。



//NOTE:compilewithg++filename.cpp-std=c++11
#include #include #include #define DIM 1024#define DM1 (DIM-1)#define _sq(x) ((x)*(x)) // square#define _cb(x) abs((x)*(x)*(x)) // absolute value of cube#define _cr(x) (unsigned char)(pow((x),1.0/3.0)) // cube root
unsigned char GR(int,int);unsigned char BL(int,int);
unsigned char RD(int i,int j){// YOUR CODE HERE}unsigned char GR(int i,int j){// YOUR CODE HERE}unsigned char BL(int i,int j){// YOUR CODE HERE}
void pixel_write(int,int);FILE *fp;int main(){fp = fopen("MathPic.ppm","wb");fprintf(fp, "P6
%d %d
255
", DIM, DIM);for(int j=0;jfor(int i=0;ipixel_write(i,j);fclose(fp);return 0;}void pixel_write(int i, int j){static unsigned char color[3];color[0] = RD(i,j)&255;color[1] = GR(i,j)&255;color[2] = BL(i,j)&255;fwrite(color, 1, 3, fp);}

我選了一些自己比較喜歡的作品,放在下面和大家分享。首先是一個來自 Martin Büttner 的作品:

8fdfe1fe-d4ce-11ec-bce3-dac502259ad0.jpg

它的代碼如下:


unsigned char RD(int i,int j){return (char)(_sq(cos(atan2(j-512,i-512)/2))*255);}
unsigned char GR(int i,int j){return (char)(_sq(cos(atan2(j-512,i-512)/2-2*acos(-1)/3))*255);}
unsigned char BL(int i,int j){return (char)(_sq(cos(atan2(j-512,i-512)/2+2*acos(-1)/3))*255);}

同樣是來自 Martin Büttner 的作品

903b258c-d4ce-11ec-bce3-dac502259ad0.jpg

這是目前暫時排名第一的作品。它的代碼如下:


unsigned char RD(int i,int j){#define r(n)(rand()%n)static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):RD((i+r(2))%1024,(j+r(2))%1024):c[i][j];}
unsigned char GR(int i,int j){static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):GR((i+r(2))%1024,(j+r(2))%1024):c[i][j];}
unsigned char BL(int i,int j){static char c[1024][1024];return!c[i][j]?c[i][j]=!r(999)?r(256):BL((i+r(2))%1024,(j+r(2))%1024):c[i][j];}

下面這張圖片仍然出自 Martin Büttner 之手

904e5940-d4ce-11ec-bce3-dac502259ad0.jpg

難以想象, Mandelbrot 分形圖形居然可以只用這么一點代碼畫出:


unsigned char RD(int i,int j){float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return log(k)*47;}
unsigned char GR(int i,int j){float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return log(k)*47;}
unsigned char BL(int i,int j){float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return 128-log(k)*23;}

Manuel Kasten 也制作了一個 Mandelbrot 集的圖片,與剛才不同的是,該圖描繪的是 Mandelbrot 集在某處局部放大后的結(jié)果

90844e24-d4ce-11ec-bce3-dac502259ad0.jpg

它的代碼如下:

unsigned char RD(int i,int j){double a=0,b=0,c,d,n=0;while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}return 255*pow((n-80)/800,3.);}
unsigned char GR(int i,int j){double a=0,b=0,c,d,n=0;while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}return 255*pow((n-80)/800,.7);}
unsigned char BL(int i,int j){double a=0,b=0,c,d,n=0;while((c=a*a)+(d=b*b)<4&&n++<880){b=2*a*b+j*8e-9-.645411;a=c-d+i*8e-9+.356888;}return 255*pow((n-80)/800,.5);}

這是 Manuel Kasten 的另一作品

90979560-d4ce-11ec-bce3-dac502259ad0.jpg

生成這張圖片的代碼很有意思:函數(shù)依靠 static 變量來控制繪畫的進程,完全沒有用到 i 和 j 這兩個參數(shù)!


unsigned char RD(int i,int j){static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;}
unsigned char GR(int i,int j){static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;}
unsigned char BL(int i,int j){static double k;k+=rand()/1./RAND_MAX;int l=k;l%=512;return l>255?511-l:l;}

這是來自 githubphagocyte 的作品

90aa7842-d4ce-11ec-bce3-dac502259ad0.jpg

它的代碼如下:


unsigned char RD(int i,int j){float s=3./(j+99);float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;return (int((i+DIM)*s+y)%2+int((DIM*2-i)*s+y)%2)*127;}
unsigned char GR(int i,int j){float s=3./(j+99);float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;return (int(5*((i+DIM)*s+y))%2+int(5*((DIM*2-i)*s+y))%2)*127;}
unsigned char BL(int i,int j){float s=3./(j+99);float y=(j+sin((i*i+_sq(j-700)*5)/100./DIM)*35)*s;return (int(29*((i+DIM)*s+y))%2+int(29*((DIM*2-i)*s+y))%2)*127;}

這是來自 githubphagocyte 的另一個作品

91141db0-d4ce-11ec-bce3-dac502259ad0.jpg

這是一張使用 diffusion-limited aggregation 模型得到的圖片,程序運行起來要耗費不少時間。代碼很有意思:巧妙地利用宏定義,打破了函數(shù)與函數(shù)之間的界限,三段代碼的字?jǐn)?shù)限制便能合在一起使用了。


unsigned char RD(int i,int j){#define D DIM#define M m[(x+D+(d==0)-(d==2))%D][(y+D+(d==1)-(d==3))%D]#define R rand()%D#define B m[x][y]return(i+j)?256-(BL(i,j))/2:0;}
unsigned char GR(int i,int j){#define A static int m[D][D],e,x,y,d,c[4],f,n;if(i+j<1){for(d=D*D;d;d--){m[d%D][d/D]=d%6?0:rand()%2000?1:255;}for(n=1return RD(i,j);}
unsigned char BL(int i,int j){A;n;n++){x=R;y=R;if(B==1){f=1;for(d=0;d<4;d++){c[d]=M;f=fif(f>2){B=f-1;}else{++e%=4;d=e;if(!c[e]){B=0;M=1;}}}}}return m[i][j];}

最后這張圖來自 Eric Tressler

914fa22c-d4ce-11ec-bce3-dac502259ad0.jpg

這是由 logistic 映射得到的 Feigenbaum 分岔圖。和剛才一樣,對應(yīng)的代碼也巧妙地利用了宏定義來節(jié)省字符:


unsigned char RD(int i,int j){#define A float a=0,b,k,r,x#define B int e,o#define C(x) x>255?255:x#define R return#define D DIMR BL(i,j)*(D-i)/D;}
unsigned char GR(int i,int j){#define E DM1#define F static float#define G for(#define H r=a*1.6/D+2.4;x=1.0001*b/DR BL(i,j)*(D-j/2)/D;}
unsigned char BL(int i,int j){F c[D][D];if(i+j<1){A;B;G;a0.1){G b=0;b0;k1-x);if(k>D/2){e=a;o=(E*x);c[e][o]+=0.01;}}}}}R C(c[j][i])*i/D;}

怎么樣,短短幾行代碼,就能畫出如此絢爛的圖像,你有沒有什么腦洞大開的想法?

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4423

    瀏覽量

    67914
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2131

    瀏覽量

    77432
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4979

    瀏覽量

    74457

原文標(biāo)題:這幾行代碼,驚為天人!

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    安森美低功耗Hyperlux圖像傳感器產(chǎn)品選型指南

    而設(shè)計, 同時具備超低功耗特性。 正因如此, 在構(gòu)建電源樹等設(shè)計過程中, 您可以確保工業(yè)和汽車圖像傳感器擁有超長的產(chǎn)品壽命, 并在整個使用周期內(nèi)保持可靠的性能表現(xiàn)。
    的頭像 發(fā)表于 03-04 16:55 ?4928次閱讀
    安森美低功耗Hyperlux<b class='flag-5'>圖像</b>傳感器產(chǎn)品選型指南

    圖像采集卡:連接設(shè)備與數(shù)據(jù)的圖像樞紐

    在機器視覺與圖像傳輸體系中,圖像采集卡是無可替代的重要樞紐——它一端承接相機、內(nèi)窺鏡、攝像機等前端圖像設(shè)備的信號輸出,另一端對接后端數(shù)據(jù)處理、存儲、展示系統(tǒng),通過信號轉(zhuǎn)換、同步協(xié)調(diào)、高速傳輸三大能力
    的頭像 發(fā)表于 01-22 13:51 ?404次閱讀
    <b class='flag-5'>圖像</b>采集卡:連接設(shè)備與數(shù)據(jù)的<b class='flag-5'>圖像</b>樞紐

    思特威全新發(fā)布智能安防應(yīng)用圖像傳感器SCC85HAI

    近日,技術(shù)先進的CMOS圖像傳感器供應(yīng)商思特威(SmartSens,股票代碼688213),全新推出1500萬像素5K高清智能安防應(yīng)用圖像傳感器——SCC85HAI。
    的頭像 發(fā)表于 01-10 13:00 ?2240次閱讀

    思特威發(fā)布手機應(yīng)用CMOS圖像傳感器SC512HS

    近日,技術(shù)先進的CMOS圖像傳感器供應(yīng)商思特威(SmartSens,股票代碼688213),推出5000萬像素0.64μm像素尺寸手機應(yīng)用CMOS圖像傳感器——SC512HS。
    的頭像 發(fā)表于 12-11 15:48 ?1409次閱讀

    淘寶拍立淘接口實戰(zhàn):圖像優(yōu)化、識別調(diào)優(yōu)與避坑代碼示例

    本文詳解淘寶拍立淘接口(taobao.picture.search)實戰(zhàn)技巧,涵蓋圖像預(yù)處理、識別優(yōu)化、簽名生成與供應(yīng)鏈數(shù)據(jù)聯(lián)動,結(jié)合代碼示例解析高頻坑點,如Base64格式錯誤、限流處理、分頁失效等,助開發(fā)者提升識別率至85%以上,高效對接電商選品與供應(yīng)鏈系統(tǒng)。
    的頭像 發(fā)表于 10-09 14:28 ?992次閱讀

    1688 拍立淘接口實戰(zhàn):從圖像優(yōu)化、工廠排序到供應(yīng)鏈匹配(附可跑代碼

    深耕B2B電商十余年,親歷1688拍立淘接口20+坑:從圖像預(yù)處理、權(quán)限申請到工廠排序。本文詳解核心參數(shù)、實戰(zhàn)代碼及多圖驗證、定制方案生成等高級技巧,助你實現(xiàn)“看圖找廠”精準(zhǔn)匹配,附可運行代碼,新手也能少走兩年彎路。
    的頭像 發(fā)表于 10-09 10:39 ?1296次閱讀

    思特威推出高性能CMOS圖像傳感器SC562HS

    近日,技術(shù)先進的CMOS圖像傳感器供應(yīng)商思特威(SmartSens,股票代碼688213),全新推出5000萬像素1μm像素尺寸手機應(yīng)用CMOS圖像傳感器——SC562HS。
    的頭像 發(fā)表于 09-01 17:13 ?6435次閱讀

    知乎開源“智能預(yù)渲染框架” 幾行代碼實現(xiàn)鴻蒙應(yīng)用頁面“秒開”

    ,交互延遲等核心痛點,通過智能預(yù)測用戶瀏覽目標(biāo)進行提前渲染,只需幾行代碼即可顯著提升復(fù)雜頁面的加載性能,實現(xiàn)“頁面秒開”的高效體驗,為鴻蒙開發(fā)者帶來開發(fā)效率和用戶體驗的雙重飛躍。 隨著鴻蒙生態(tài)快速發(fā)展,應(yīng)用開發(fā)者難免會遇到一些性能問題
    的頭像 發(fā)表于 08-29 14:32 ?739次閱讀
    知乎開源“智能預(yù)渲染框架” <b class='flag-5'>幾行</b><b class='flag-5'>代碼</b>實現(xiàn)鴻蒙應(yīng)用頁面“秒開”

    思特威推出4MP高性能圖像傳感器新品SC489SL

    近日,技術(shù)先進的CMOS圖像傳感器供應(yīng)商思特威(SmartSens,股票代碼688213),宣布推出4MP高性能圖像傳感器新品——SC489SL。
    的頭像 發(fā)表于 08-14 09:19 ?1.3w次閱讀
    思特威推出4MP高性能<b class='flag-5'>圖像</b>傳感器新品SC489SL

    嵌入式有什么勸退之處?

    要說嵌入式開發(fā)的勸退點,那可真得掏心窩子聊聊。這行當(dāng)入門就帶著股子 “磨人” 勁兒,不像搞互聯(lián)網(wǎng)寫個小程序,幾行代碼跑起來就能瞅見點模樣。嵌入式得從最底層的東西啃起,什么二進制指令、芯片引腳怎么接
    的頭像 發(fā)表于 08-13 11:34 ?1249次閱讀
    嵌入式有什么勸退之處?

    拖拽就能開發(fā)?物聯(lián)網(wǎng)低代碼云平臺的核心功能+應(yīng)用優(yōu)勢大盤點

    在萬物互聯(lián)的數(shù)字化時代,物聯(lián)網(wǎng)(IoT)技術(shù)正在重塑產(chǎn)業(yè)形態(tài)與生活模式。作為連接海量設(shè)備、處理龐大數(shù)據(jù)、驅(qū)動智能決策的“中樞大腦”,物聯(lián)網(wǎng)平臺的出現(xiàn),以“低代碼”為核心突破口,將復(fù)雜的物聯(lián)網(wǎng)開發(fā)流程
    的頭像 發(fā)表于 08-01 17:10 ?1204次閱讀

    企業(yè)和個人基于業(yè)務(wù)知識和代碼庫增強的大模型生成代碼實踐

    1.源起 李明是今年剛加入某互聯(lián)網(wǎng)公司的研發(fā)新人,滿懷期待地開始了他的職業(yè)生涯。然而,短短兩周后,他的熱情就被現(xiàn)實澆了一盆冷水。 第一周: 當(dāng)他第一次接手需求時,mentor只是簡單交代了幾句
    的頭像 發(fā)表于 07-08 15:31 ?550次閱讀
    企業(yè)和個人基于業(yè)務(wù)知識和<b class='flag-5'>代碼</b>庫增強的大模型生成<b class='flag-5'>代碼</b>實踐

    HarmonyOS應(yīng)用圖像stride處理方案

    當(dāng)圖像存儲在內(nèi)存中時,內(nèi)存緩沖區(qū)可能在每行像素之后包含額外的填充字節(jié)。填充字節(jié)會影響圖像在內(nèi)存中的存儲方式,但不會影響圖像的顯示方式。stride是內(nèi)存中一行像素到內(nèi)存中下一行像素的字節(jié)數(shù);如果存在填充字節(jié),則步幅比
    的頭像 發(fā)表于 06-10 14:17 ?1383次閱讀
    HarmonyOS應(yīng)用<b class='flag-5'>圖像</b>stride處理方案

    利用NVIDIA 3D引導(dǎo)生成式AI Blueprint控制圖像生成

    AI 賦能的圖像生成技術(shù)突飛猛進,從早期模型會生成手指過多的人類圖像,到現(xiàn)在能創(chuàng)造出令人驚嘆的逼真視覺效果。即使取得了如此飛躍,仍然存在一個挑戰(zhàn):實現(xiàn)創(chuàng)意掌控。
    的頭像 發(fā)表于 06-05 09:24 ?1048次閱讀

    一文讀懂!圖像采集卡是什么?它在工業(yè)/醫(yī)療/監(jiān)控等多領(lǐng)域中的作用

    你有沒有想過,在工業(yè)檢測、醫(yī)院手術(shù)室、安防監(jiān)控這些高精度影像場景中,圖像是怎么被“抓”進電腦里進行分析處理的?單靠攝像頭就能搞定嗎?其實并沒那么簡單,真正起到關(guān)鍵作用的,是一種常被忽視但極其重要的設(shè)備——圖像采集卡。
    的頭像 發(fā)表于 05-13 13:35 ?2488次閱讀
    一文讀懂!<b class='flag-5'>圖像</b>采集卡是什么?它在工業(yè)/醫(yī)療/監(jiān)控等多領(lǐng)域中的作用
    鄂托克前旗| 浙江省| 邢台市| 普洱| 拉萨市| 台东市| 类乌齐县| 安岳县| 无棣县| 忻州市| 马山县| 潮安县| 四子王旗| 苍溪县| 新平| 邹城市| 寿阳县| 双桥区| 石河子市| 武邑县| 茂名市| 绵阳市| 禹城市| 汪清县| 梨树县| 南昌市| 昭平县| 虞城县| 丰台区| 蓬莱市| 宝清县| 夏邑县| 车致| 房山区| 正宁县| 德江县| 台前县| 双流县| 蒙自县| 眉山市| 石渠县|