C語言6行程式碼畫圓
阿新 • • 發佈:2018-12-07
這一方法是受到milo大神用C語言畫心的啟發而想到的。
程式碼如下:
#include<stdio.h> int main(){ for(double l=1;l>-1;l-=0.05,printf("\n")) for(double w=1;w>-1;w-=0.025) printf((l*l + w*w<=1)?"=":" "); }
效果:
事實上,程式碼的邏輯和背景知識是很簡單的,就是從左到右,從上到下,用等號填充一個圓而已。
我們知道,圓方程的標準形式為:
當a b r的值確定後,圓也就完全確定了,為了簡化方程,我們令a b 為0,r為1,則該圓全部落-1<x<1,-1<y<1的範圍中,這也是l和w範圍的來源。
接下來,很自然的就要思考字元數量了,一般而言,半形文字的長寬比為1:2(很汗顏,這也是從milo大神的文章中知道的),所以寬度增量設定為長度的一半就行了,如果為1:1的話,會得到一個橢圓。為什麼增量設定為0.05和0.025呢?首先,增量的設定的越小,得到的圓就越圓,但是過大的話一屏無法顯示完全,0.05和0.025是一個較優值,讀者也可以嘗試其他值。
整段程式碼中最難理解的一句應該是
printf((l*l + w*w<1)?"=":" ");
其實只是一個簡單的雙目運算子應用,意思是,如果該點落於圓中,則用“=”符號填充,否則用空格代替。
說到底只是數學的簡單應用罷了,理論上來說,只要有相對應的影象方程,這段程式碼也可以進行相應的修改從而輸出對應影象。讀者有興趣不妨試試:-)。