分形之分形龙

拿着一条细长的纸带,把它朝下的一头拿上来,与上面的一头并到一起。用一句简单的话说,就是将纸带对折。接着,把对折后的纸带再对折,又再对折,重复这样的对折几十次……这就生成了分形龙的图形.

上一节讲的是分形之列维(levy)曲线,它是将一条线段不停地分形成两条长度相等且相互垂直的线段,而生成的.分形龙的生成方式与列维曲线相似,也是将线段不停地分形成两条长度相等且相互垂直的线段,不同之处是其对折的方向是一个左一个右,而列维曲线则是始终朝着一边对折.

核心代码:

static void FractalDragon(const Vector3& vStart, const Vector3& vEnd, Vector3* pVertices, bool left)
{
    Vector3 vSub = vEnd - vStart;

    pVertices[0] = vStart;
    pVertices[2] = vEnd;

    Yreal alfa = atan2f(vSub.y, vSub.x);
    if (left)
    {
        alfa += YD_REAL_PI/4;
    }
    else
    {
        alfa -= YD_REAL_PI/4;
    }

    Yreal l = D3DXVec3Length(&vSub)/YD_REAL_SQRT_2;
    pVertices[1].x = vStart.x + cosf(alfa)*l;
    pVertices[1].y = vStart.y + sinf(alfa)*l;
    pVertices[1].z = 0.0f;
}

这是个3D程序,鼠标右键的拖动可以改变视角.

参考:http://blog.sciencenet.cn/blog-677221-601957.html

软件下载地址:http://files.cnblogs.com/WhyEngine/Fractal.7z

时间: 2024-11-05 16:00:56

分形之分形龙的相关文章

分形的程序实现

近一段时间一直在研究分形,写了几个分形相关的程序,这是其中一个.程序中里面包含近20种分形图形的生成算法. (1)科赫(Koch)雪花 (2)列维(levy)曲线 (3)龙形曲线(Dragon Curve) (4)C折线 (5)谢尔宾斯基(Sierpinski)三角形 (6)谢尔宾斯基(Sierpinski)地毯 (7)谢尔宾斯基(Sierpinski)四面体 (8)拆分三角形 (9)分形树(Tree) (10)分形二叉树(Binary Tree) (11)希尔伯特-皮亚诺(Hilbert-Pe

分形几何学

分形几何是真正描述大自然的几何学. 基本思想 分形几何图 分形几何学的基本思想是:客观事物具有自相似的层次结构,局部与整体在形态.功能.信息.时间.空间等方面具有统计意义上的相似性,称为自相似性.例如,一块磁铁中的每一部分都像整体一样具有南北两极,不断分割下去,每一部分都具有和整体磁铁相同的磁场.这种自相似的层次结构,适当的放大或缩小几何尺寸,整个结构不变. 维数 维数是几何对象的一个重要特征量,它是几何对象中一个点的位置所需的独立坐标数目.在欧氏空间中,人们习惯把空间看成三维的,平面或球面看成

学科-几何:分形几何学

ylbtech-学科-几何:分形几何学 分形几何学是一门以不规则几何形态为研究对象的几何学.相对于传统几何学的研究对象为整数维数,如,零维的点.一维的线.二维的面.三维的立体乃至四维的时空.分形几何学的研究对象为非负实数维数,如0.63.1.58.2.72.log2/log3(参见康托尔集).因为它的研究对象普遍存在于自然界中,因此分形几何学又被称为“大自然的几何学”. 一个数学意义上分形的生成是基于一个不断迭代的方程式,即一种基于递归的反馈系统.分形有几种类型,可以分别依据表现出的精确自相似性

Java版简易画图板的实现

Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文章较长,但是代码是逐步递进的,可以按三部分分开来看,实现了当前部分再去看下一部分.)首先是画板的界面实现,因为我没有去找具体的图标,界面上的所有组件都是Swing的自带组件,所以界面略微有点简陋,不过如果想要优化也简单,把界面上的组件都改成自定义的图标即可.界面实现后,就可以考虑给界面的组件加上监听

一幅画<十六芒星盾>---程序员or艺术家

画上是一面含有16个尖角的铜盾,这是我用程序算法生成的图像中最震撼的一幅.图像生成出来后,我看了好久,一边看一边想我的人生转向问题:我是不是该离开苦逼又屌丝的程序界,混入高端大气上档次的艺术圈? 说要进入艺术圈,只是提升逼格的话.其实我真正想的是:“靠,这画这么漂亮,要是能换成钱就好了.”虽说艺术是无价的,可艺术家是有价的.程序可以创造无限的财富,但程序员通常分不到多少.艺术虽高雅,但人是生活在世俗中的.我想的一个法子是:在某宝上开个网店,买电子艺术画,只买我用程序算法生成的图像.我需要将图像生

关于维度

1.什么是维度. 其实这个话题是欧氏几何的一个延伸.我们称零维的点,一维的线,二维的面,三维的体,四维的时空.你要注意到,这里0,1,2,3,4都是整数.你有没有想过,到底什么是维度?有没有分数维?比如3.1415926维.讨论这个的数学分支被称为分形数学.事实上分形数学已经广泛应用于物理,化学,地质,金融,社会科学等的方方面面,甚至到艺术及时尚.那么什么叫分形,什么是维度?先从一组图看起. 图0: 大自然中分形结构的例子 这组图特点在于,每个图中,某一部分挑出来都跟整体有类似性:比如,每根树枝

分形之C折线

前面讲了列维(levy)曲线,它是将一条线段不停地分形成两条长度相等且相互垂直的线段而生成.还有分形龙也是将一个线段对折成夹角为90度的两个线段.这一节展示的是将线段不停地分形成两条长度相等且夹角不固定的线段而生成图形.这如同将一条线段变成等腰三角形,原线段为等腰三角形的底边,新生成的线段为等腰三角形的腰边.通过设置底角的角度,改变分形图形. 核心代码: static void FractalAngleC(const Vector3& vStart, const Vector3& vEnd

HIT1946 希尔伯特分形曲线(dfs)

补第二次期末考的题--发现代码细节还需要加强啊--这样一道题一直犯小错误. 题目链接: http://acm.hit.edu.cn/hoj/problem/view?id=1946 题目描述: 希尔伯特分形曲线 Submitted : 53, Accepted : 16 数学家Hilbert曾发现一种十分奇特的曲线.一般的曲线是没有面积的,但他发现的这条曲线却能充满整个空间.Hilbert曲线是由不断的迭代过程形成的.如下图所示,最原始的曲线称为H1,由H1迭代形成H2,再由H2迭代形成H3..

分形之概率学下的green tree

     今天做的是分形之随机概率,可以和以前做的那个抛色子的做法非常相似,抛色子是用随机点数控制图形,今天做的树叶图形只是用概率的做法去控制图形而已,做法是如出一辙的: //图形界面 package tree0618; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphics2D: import javax.swing.JFrame; public