民初思韻網

加入收藏   設為首頁
選擇語言   簡體中文
你好,請 登陸 或 注冊
首頁 人文思韻 傳奇人物 歷史思潮 時代作品 話題討論 國民思韻 民初捐助 賬戶管理
  搜索  
    人文精神 >>> 技術話題—商業文明的嶄新時代
字體    

算法生成青天白日滿地紅旗 - 葉飛影
算法生成青天白日滿地紅旗 - 葉飛影
葉飛影     阅读简体中文版

      “青天白日滿地紅”曾經代表中國,特別是在抗日戰爭的艱苦年代。那時候紅軍編入國民革命軍,戴著青天白日帽徽,全國人民團結在“青天白日滿地紅”旗幟下,高唱《義勇軍進行曲》,奮力抗戰,打敗了日本帝國主義。“青天白日滿地紅”象征著中國人的苦難和抗爭,跟《義勇軍進行曲》一起,鼓舞中國人團結起來取得勝利,凝結著中國人的感情。

      青色代表光明純潔、民族和自由;白色代表坦白無私、民權和平等;白日的十二道光芒,代表著一年十二個月,一天十二個時辰;也象征著國家的命脈,隨著時間的前進永存于世界;更鼓舞國人與時俱進,自強不息。青天白日,取象宏美,中華民國為遠東大國,日出東方為之最者,且青天白日,示光明正照自由平等之義。
代碼如下:
 1 class CPixelBlueSkyWhiteSun : public IPixelEquation
 2 {
 3 public:
 4     CPixelBlueSkyWhiteSun()
 5     {
 6         m_width = 1680;
 7         m_height = 1120;
 8 
 9         for (int i = 0; i < 12; i++)
10         {
11             m_list_sin[i] = sinf(i*PI/6);
12             m_list_cos[i] = cosf(i*PI/6);
13         }
14     }
15 
16     const char*     GetName() const
17     {
18         return "Blue Sky White Sun";
19     }
20 
21     unsigned int    CalculatePixel(unsigned int x, unsigned int y);
22 
23 private:
24     float m_list_sin[12];
25     float m_list_cos[12];
26 };

cpp

 1 unsigned int    CPixelBlueSkyWhiteSun::CalculatePixel(unsigned int x, unsigned int y)
 2 {
 3     unsigned int red = 0xffff0000;
 4     unsigned int white = 0xffffffff;
 5     unsigned int blue = 0xff0000ff;
 6 
 7     float w = m_width*0.5f;
 8     float h = m_height*0.5f;
 9 
10     if ((float)x > w || (float)y > h)
11     {
12         return red;
13     }
14 
15     float cX = w*0.5f;
16     float cY = h*0.5f;
17     float radius = cY*0.5f;
18     Vec2 tri0(0.0f, -radius*1.65f);
19     Vec2 tri1(-radius*0.2f, -radius*1.05f);
20     Vec2 tri2(radius*0.2f, -radius*1.05f);
21     Vec2 P;
22 
23     float i = x - cX;
24     float j = y - cY;
25 
26     float dis = sqrtf(i*i + j*j);
27 
28     if (dis < radius)
29     {
30         return white;
31     }
32     else if (dis > radius*1.65f)
33     {
34         return blue;
35     }
36 
37     for (int m = 0; m < 12; m++)
38     {
39         P.x = i*m_list_cos[m] - j*m_list_sin[m];
40         P.y = i*m_list_sin[m] + j*m_list_cos[m];
41 
42         if (IsPointInTriangle(tri0, tri1, tri2, P))
43         {
44             return white;
45         }
46     }
47   
48     return blue;
49 }

基類IPixelEquation的代碼見:Why數學圖像生成工具

關于結構體Vec2的定義及相關函數見:二維平面上判斷點在三角形內的最優算法

代碼中沒有太考究圖形之間的比例,與實際會略有不符。生成圖像如下:

相應軟件:

Why數學圖像生成工具

相關文章:

算法生成五星紅旗

算法之美---100幅由程序生成的圖像,總有一幅讓你感到驚艷[上]

算法之美---100幅由程序生成的圖像,總有一幅讓你感到驚艷[下]

 

2015-05-19 00:36

歡迎訂閱我們的微信公眾賬號!
春秋茶館訂閱號
微信號 season-tea(春秋茶館)
每天分享一篇科技/遊戲/人文類的資訊,點綴生活,啟迪思想,探討古典韻味。
  清末民初歷史人物  民初人物
孫中山的啟蒙者
近現代的嶺南,湧現出大批引領中國前行的先驅者,近代改良主義者,香港華人領袖何啟便是其中的一位。他不僅是孫中山在香港西醫書院的老師,更是孫中山走向革命道路的思想導師。
民族主義思想大師
章太炎(1869年1月12日-1936年6月14日),原名學乘,字枚叔。嗣因反清意識濃厚,慕顧炎武的為人行事而改名為絳,號太炎。中國浙江餘杭人,清末民初思想家,史學家,樸....
資助民初精神網
        回頂部     寫評論

 
評論集
暫無評論!
發表評論歡迎你的評論
昵稱:     登陸  註冊
主頁:  
郵箱:  (僅管理員可見)

驗證:   验证码(不區分大小寫)  
© 2011   民初思韻網-清末民初傳奇時代的發現與復興   版權所有   加入收藏    設為首頁    聯繫我們    1616導航