算法生成七芒星

玄幻小说中经常会有七芒星的技法,这一节就使用算法生成下七芒星的图像。在西方,7被认为是一个很有魔力的数字。上帝用7天造人,第7天休息;圣经启示录中有7封印、7灯台、7号角等等。但是魔法符号中却很少见到七芒星。不过在神秘学上,七芒星阵是存在的,他蕴含着非常强大的力量,无数的人都在寻觅并探索着他,但是七芒星的强大,使得很多人都未能解开它的神秘面纱,这让七芒星至今都成为了一种迷。

关于七芒星的资料:

      1 .七芒星很难被准确地画出,因为七芒星是“不平均却稳定的一体”。完美的七芒星是很漂亮的图案,而且可以被一笔画出。传说一笔画出过完美七芒星的人有的说看见了炽天使长米迦勒,有的说看见了魔君路西法,也有人说看见了天堂的生命树。

      2.七芒星分为“正七芒星”与“逆七芒星”。但是,你很难区分开“正七芒星”和“逆七芒星”,因为有多种不同的说法,一种也是按顶角位置来分正逆,但代表的意思与五芒星相反;另一种说法则是说七芒星的正逆判断与五芒星刚好相反;也有人认为七芒星与五芒星在正逆上并没有不同。

      3.关于“七芒星魔法阵”也是众说纷纭。一种被神秘学者认为七个顶点要写上七位大天使的名字,也有人说是写上七公爵之名;另一种说法是写上六种元素(风+火+水+土四元素的基础上,再加上光与暗)的名称,而空出的顶尖就依旧代表“人类的情感”。关于魔法阵外面有没有环也是有争议的。魔法阵外面应该是有环的,但是有种说法说:如果在七芒星魔法阵外面加上环就限制了它力量,甚至会破坏完整性,所以不能画上环。

      4.七芒星的寓意很深刻,而七芒星的强大无人可知。不过也正是因为这种神秘探寻的吸引力,也让很多人对他的图标迷恋不已,很多人选择他的图标作为图腾,佩戴左右或纹在身上。

七芒星魔法阵的功效被记载得不多,只知道大概可以用来召唤。一个人是没有办法发动魔法阵的,但是如果魔法阵被发动,被召唤出来的东西就都是重量级的,比如大天使或大恶魔,甚至是未知的存在或力量。不要高兴,这些重量级的家伙可不会费神去聆听一个“低贱的生物”的愿望,甚至你连看都看不到他们第二眼,不是因为他们看不见,而是召唤者的结局会很惨。据说有以下几种结局:
一 、召唤者什么都忘记了。(所知最好结局)
二 、召唤者在强光下失明。(比较好的结局)
三 、召唤者精神失常。(至少还活着)
四 、召唤者被吓死。(有个全尸)
五 、召唤者被烤焦、开膛、撕碎、断头等等……
六 、有东西吞掉召唤者。
七 、召唤者活着掉入地狱。
八 、召唤者完全消失。(尸体和灵魂都没有了)

------------------------------------

看了这些召唤者结局,我有种作死的感觉。

之前我发过一篇文章是"算法生成N芒星",其中也包括七芒星。与那篇不同的是,这里将使用混沌的办法生成七芒星,成的图像更为深邃且有分形的效果。

七芒星生成算法:

先生成正七角形的7个顶点,和一个当前点设置为原点;

a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置;

b.将计算出的中点做为当前点,重新执行操作a

由此迭代处理上千万次后,即能生成七芒星图的像素数据。

代码如下:

int p[14];//七个顶点

for (int i = 0; i < 7; i++)
{
      p[i*2] = 512 + (int)(480*sin(i*2*PI/7));
      p[i*2+1] = 512 - (int)(480*cos(i*2*PI/7));
}

unsigned int m_pixels_map[1024][1024];// 像素数据

int count = 40000000;// 迭代次数

        for(int n=0;n<count;n++)
        {
            int v=rand()%7;
            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

生成的图像看上去有点糊,但这幅图像的神奇之处在于:当你远离屏幕看它时,七芒星会清晰地显示出来。

下面将对七芒星算法进行些变化,改变其随机数的生成和使用方式,如随机选择与当前顶点有一定关系的顶点做为下一步的运算。

(1)

        for(int n=0;n<count;n++)
        {
            // 不取相邻的两个点
            r = rand()%5;
            if (r == 0)
            {
                v = c;
            }
            else
            {
                v = (c + r + 1)%7;
                c = v;
            }

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

(2)

        for(int n=0;n<count;n++)
        {
            // 不取相邻的四个点
            r = rand()%3;
            if (r == 0)
            {
                v = c;
            }
            else
            {
                v = (c + r + 2)%7;
                c = v;
            }

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

(3)

        for(int n=0;n<count/2;n++)
        {
            // 不取相邻的两个点
            r = rand()%5;
            if (r == 0)
            {
                v = c;
            }
            else
            {
                v = (c + r + 1)%7;
                c = v;
            }

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

        for(int n=0;n<count/2;n++)
        {
            // 不取相邻的四个点
            r = rand()%3;
            if (r == 0)
            {
                v = c;
            }
            else
            {
                v = (c + r + 2)%7;
                c = v;
            }

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

(4)

        for(int n=0;n<count;n++)
        {
            // 不取当前点
            r = rand()%6;
            v = (c + r + 1)%7;
            c = v;

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

(5)

        for(int n=0;n<count;n++)
        {
            // 不取当前点及相邻的两个点
            r = rand()%4;
            v = (c + r + 2)%7;
            c = v;

            x+=p[v*2];
            x/=2;
            y+=p[v*2+1];
            y/=2;
            ++m_pixels_map[x][y];
        }

相关文章:

算法生成N芒星

算法之美---100幅由程序生成的图像,总有一幅让你感到惊艳[上]

算法之美---100幅由程序生成的图像,总有一幅让你感到惊艳[下]

时间: 2024-10-11 04:59:00

算法生成七芒星的相关文章

算法生成N芒星

前面两个图像生成算法是:道教的太极八卦图和佛教的卐和卍字图.这一节整个洋气的图像:芒星.但愿我别召唤出什么恐怖的禁忌.平时看玄幻小说,经常读到有关六芒星,七芒星,九芒星的技法.芒星是由几个完全的等腰三角形(有时是正三角形)和一个正多边形组成的二维图形.等腰三角形的个数与正多边形的边数相等.由五个等腰三角形和正五边形组成的图形叫“五芒星”(俗称:五角星).由六个等腰三角形和正六边形组成的图形叫“六芒星”……依此类推.芒星在美学.历史和占卜都有着很大的用处. 芒星在生活中与我们息息相关,我们常说的“

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

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

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

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

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

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

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

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

三生万物---算法生成的25幅三角形图像

<道德经>第四十二章:“道生一,一生二,二生三,三生万物.万物负阴而抱阳,冲气以为和.”这是老子对宇宙起源的一种探索和认识,其含义是说宇宙最初有道,有物混成,先天地生.老子的这话是对伏曦八卦和<易经>的总结.太极生两仪,谓阴阳:两仪生四象,谓太阴,少阳,少阴,太阳:四象生八卦,谓乾.兑.离.震.巽.坎.艮.坤.八卦及六十四卦,过于繁复,老子贯通易理,总结为三生万物. 太极是阴中有阳,阳中有阴的混沌状态.太极生两仪,谓阴阳.阴阳是对立的无限的两极,是理想状态,构不成客观存在.阴阳相济

算法生成五星红旗

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

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

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

混沌开窍---24幅由算法生成的正方形图像

庄子讲过这么一个故事:南海之帝名叫倏,北海之帝名叫忽,中央之帝名叫浑沌.倏和忽经常一起在浑沌的地上相遇,浑沌待他们很好.倏和忽商量怎样报答浑沌的友情,他们说:“人们都有眼.耳.鼻.口七窍,用来看.听.吃.呼吸,唯独浑沌什么也没有,我们就试着为他凿开七窍吧.”于是他们就为浑沌凿七窍,一天凿成一窍,凿到第七天,七窍全凿通时,浑沌就死了. 我对这个寓言的理解是:混沌是无规律的,一旦为其找到了规律,那么混沌就称不上混沌了. 在上一篇文章中我讲到谢尔宾斯基三角形的生成算法,那么将三角形改成一个矩形或正方形