算法生成青天白日满地红旗
生活随笔
收集整理的這篇文章主要介紹了
算法生成青天白日满地红旗
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
“青天白日滿地紅”曾經代表中國,特別是在抗日戰爭的艱苦年代。那時候紅軍編入國民革命軍,戴著青天白日帽徽,全國人民團結在“青天白日滿地紅”旗幟下,高唱《義勇軍進行曲》,奮力抗戰,打敗了日本帝國主義。“青天白日滿地紅”象征著中國人的苦難和抗爭,跟《義勇軍進行曲》一起,鼓舞中國人團結起來取得勝利,凝結著中國人的感情。
青色代表光明純潔、民族和自由;白色代表坦白無私、民權和平等;白日的十二道光芒,代表著一年十二個月,一天十二個時辰;也象征著國家的命脈,隨著時間的前進永存于世界;更鼓舞國人與時俱進,自強不息。青天白日,取象宏美,中華民國為遠東大國,日出東方為之最者,且青天白日,示光明正照自由平等之義。
代碼如下:
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幅由程序生成的圖像,總有一幅讓你感到驚艷[下]
總結
以上是生活随笔為你收集整理的算法生成青天白日满地红旗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码学系列——数字签名
- 下一篇: 百科知识 tar文件如何打开