算法生成青天白日满地红旗

“青天白日满地红”曾经代表中国,特别是在抗日战争的艰苦年代。那时候红军编入国民革命军,戴着青天白日帽徽,全国人民团结在“青天白日满地红”旗帜下,高唱《义勇军进行曲》,奋力抗战,打败了日本帝国主义。“青天白日满地红”象征着中国人的苦难和抗争,跟《义勇军进行曲》一起,鼓舞中国人团结起来取得胜利,凝结着中国人的感情。

青色代表光明纯洁、民族和自由;白色代表坦白无私、民权和平等;白日的十二道光芒,代表著一年十二个月,一天十二个时辰;也象征著国家的命脉,随著时间的前进永存于世界;更鼓舞国人与时俱进,自强不息。青天白日,取象宏美,中华民国为远东大国,日出东方为之最者,且青天白日,示光明正照自由平等之义。

代码如下:

 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幅由程序生成的图像,总有一幅让你感到惊艳[下]

时间: 2024-10-17 17:43:54

算法生成青天白日满地红旗的相关文章

算法生成五星红旗

这一篇将提供一套生成五星红旗的算法,代码中满满都是正能量.上一篇文章是生成N芒星,五角星是就芒星的一种,所以不难生成一个五角星的图像.中华人民共和国国旗是五星红旗,旗面为红色,长宽比例为3:2.左上方缀黄色五角星五颗,四颗小星环拱在一颗大星的右面,并各有一个角尖正对大星的中心点.1.4颗黄星对齐,2.3颗黄星对齐. 代码如下: h 1 class CPixel5StarsRedFlag : public IPixelEquation 2 { 3 public: 4 CPixel5StarsRed

恶魔的指纹---49幅由算法生成的邪恶七芒星图像

本文将带你领略算法之美,美得让你感到恐惧.前几天写了生成七芒星的算法,之后我在此算法的基础上做了些修改,从此一发不可收拾.我想我打开了潘多拉的盒子,只要修改下算法的任意一个输入参数,就能够生成一幅独一无二的七芒星图像.这些图像如同来自地狱一样,让我感到惊悚恐惧.有人曾将曼德勃罗集生成的分形图像称为上帝的指纹,那么这些饱含邪恶气息的七芒星图像应该算是恶魔的指纹. 有一次我对公司的一个策划开玩笑说:"你再给我提需求,我就写程序画圈圈诅咒你",并且我去年还真写了这么个程序,见:画圈圈诅咒你.

雪花六出---几幅算法生成的雪花图像,并祝大家平安夜和圣诞节快乐

今天和明天是平安夜和圣诞节,发几幅雪花的图像应下节日.本来是打算写个关于算法生成雪花的学术论文,但发现这东西很难写下去.主要是找不到一个提高论文逼格的数学公式,所以就发下博客吧.共有10幅PNG图像和3幅GIF动画图像,都是黑白二值化的图像. 雪花是种典型的混沌分形物体,在它身上能体现规则与随机的统一.说它规则是因为每一片雪花都是六边形的,至少有六边形的样子.而组成雪花的每一个分子都是随机混沌的.没有办法确定某一个水分子在生成雪花后位于雪花的哪个位置. 雪花是水分子的结晶,水分子又是由一个氧原子

九尾之火---算法生成的动画图像

之前实现了算法生成火的图像,现在我要做的是让火动起来.似乎我在算法生成图像的路上越来越走火入魔了.最近总在想一些挺无聊的东西,如雪花何以六出,闪电的形态是如何形成,还有就是火焰烟花的生成.在无风的室内点燃一支蜡烛,其火苗是不停变化的,是什么造成它的变化? 火焰的本质是放热反应中反应区周边空气分子加热而高速运动,从而发光的现象. 火焰一般可分为三层:内层称内焰,带蓝色,因为供氧不足,燃烧不完全,具有还原作用,所以也称“还原焰”:中层明亮,温度比内层高:外层称外焰,为无色火焰,因为供氧充足,燃烧完全

太阳崇拜---64幅由算法生成的八芒星图像

八芒星与卐字符号是遍布于我国广大地域多个民族的文化符号.有学者认为神秘的卐字符号其实是八角星纹的简化变体,它们都代表了太阳在一个回归年的视循环运动,即一年四季的循环变化.八角星纹集中发现于长江中下游与黄河下游的中国东部地区, 在红山和良渚文化也有发现.与从赤峰到香港的中国东面沿海人面岩画分布带之间是否存在关联值得关注.如今,八芒星与卐字符号是遍布于我国广大地域多个民族的文化符号. 再发些从网上收集的八芒星相关资料,原址为:http://blog.sina.com.cn/s/blog_6a4e1c

火火火---12幅算法生成火的图像

火影终于要大结局了,几年前我曾追过一振.发几幅图像纪念一下吧,都是我用算法生成的.这些图像看上去还是有些震撼的,尤其是那几幅“九尾之火”.这几天我一直在想芒星图像的生成算法,感觉自己有点走火入魔了. 先从汉字的"火"开始, "火"字有五个角,可以看做是有五个分支. 五分支生成的火单薄了些,变成七个分支看看: 七分支的火看上去不错,再看九分支的“九尾之火”.这可是本文的高潮: 酷吧.最后两幅图像是十二分支的火: 相关文章: 恶魔的指纹---49幅由算法生成的七芒星图像

正与邪---25幅由算法生成的五角星图像

      五角星,又称五芒星,是指一种有五只尖角,并以五条直线画成的星星图形.做为中国人,一定对五角星有着特殊的情感.我还记得上小学的时候,曾在课桌上刻过几个五角星以表达我的爱国之情.前几天我还写过一个算法生成五星红旗.五角星是边数最少多角形,最简单画它的方法是先画一个正五边形,把各角和其对角用直线相连,并擦去原来的五边形.也可以延长原五边形的各边直到它们相交,从而得到一个大的五角星.其最大的特点是符合黄金分割0.618. 五角星被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用. 一直

运用简单的bloomfilter算法生成100万个不重复的随机数

本文中只是简单的体会bloomFilter算法的基本原理,设计实现一个生成100万个不重复的随机数. 选择3个分布均匀质数,在这里面质数的选择还是挺有讲究的,要注意不能太小,必须能够满足bloomfilter空间,不然整个空间都是1了还没有找到100万个不重复的随机数.不多说,上代码. #include<stdio.h> #include<stdlib.h> #include<time.h> #include<cstdbool> #define MAXNUM

算法生成太极八卦图

前面一篇文章是通过算法生成一幅太极图,有道是:无极生太极,太极生两仪,两仪生四象,四象生八卦.那么这一节就为太极生成一个八卦图.虽然我对易经这种玄之又玄的哲学没什么研究,但至少八卦可以看做是二进制的鼻祖.愿太极八卦保佑我们的程序绝无BUG,永不修改. 根据二进制数的规定:有,用1表示;无,用0表示.我们可以得出八卦各卦阳爻和阴爻的二进制数.下面我们写出八卦各卦阳爻的二进制数(即有阳爻为1,无阳爻为0): 坤:黑黑黑,卦符阴阴阴,二进制数为000 艮:黑黑白,卦符阴阴阳,二进制数为001 坎:黑白