使用C語言列印不同星號圖案
阿新 • • 發佈:2019-01-30
一、畫圖方法
畫一個圖,通常可以選擇如下方法:
1、畫每一個圖形,填充形狀覆蓋的畫素。
2、對於影象中每個畫素,取樣該畫素覆蓋了什麼形狀。
第一種就是光柵化(rasterization)演算法,第二種包括光線追蹤(ray tracing)、光線步進(ray marching)等演算法。
第二種做法可以理解為設計一個數學函式,這種方式可以用較少的程式碼畫出複雜的形狀。如果要輸出文字模式,只用兩個符號表示圖形,可用這個程式碼框架:
#include <stdio.h> const int w = 30; const int h = 30; int f(int x, int y) { return /*...*/; } int main() { int x, y; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) printf(f(x, y) ? "* " : " "); puts(""); } }
二、三角形
1、直角三角形,可以模擬用 ;
#include <stdio.h> const int w = 19; const int h = 10; int a(int x, int y) { return x <= y; } int main() { int x, y; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) printf(a(x, y) ? "* " : " "); puts(""); } system("pause"); return 0; }
2、等腰三角形我們可以使用絕對值 , 表示對稱軸的 座標:
#include <stdlib.h> #include <stdio.h> #include<math.h> const int w = 19; const int h = 10; int main() { int x, y; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) printf(a(x, y) ? "* " : " "); puts(""); } system("pause"); return 0; } int a(int x, int y) { return abs(x - 9) <= y; }
三、圓盤
圓盤在數學上可定義為一個隱函式 ,那麼畫一個置於畫布中心、半徑 8 的圓盤只需要定義 為:
int a(int x, int y)
{
return (x - 10) * (x - 10) + (y - 10) * (y - 10) <= 8 * 8;
}
剩下的程式碼如一種所示。