zoukankan      html  css  js  c++  java
  • 九尾之火---算法生成的动画图像

          之前实现了算法生成火的图像,现在我要做的是让火动起来.似乎我在算法生成图像的路上越来越走火入魔了.最近总在想一些挺无聊的东西,如雪花何以六出,闪电的形态是如何形成,还有就是火焰烟花的生成.在无风的室内点燃一支蜡烛,其火苗是不停变化的,是什么造成它的变化?据说法国拓扑学家托姆(R.Thom)曾和两位古人类学家讨论:“ 我们的祖先究竟是由于什么动机保存了火种?” 一位说是由于火可以取暖,另一位则认为是由于用火烹调的熟食其味道鲜美可口。而托姆则认为,人类保存火种的最原始动机是由于人在漫漫的黑夜中被光彩夺目的火苗所吸引,对美丽的火焰着了迷。这里不对托姆的观点发表评论,只是让大家被多姿多彩的分形几何学的火苗所吸引,欣赏下算法的火焰!

          火焰的本质是放热反应中反应区周边空气分子加热而高速运动,从而发光的现象。

          火焰一般可分为三层:内层称内焰,带蓝色,因为供氧不足,燃烧不完全,具有还原作用,所以也称“还原焰”;中层明亮,温度比内层高;外层称外焰,为无色火焰,因为供氧充足,燃烧完全,温度最高,具有氧化作用,所以又称“氧化焰”。火焰正确地说是一种状态或现象,燃烧着的可燃气体,发光,发热,闪烁而向上升。可燃液体或固体须先变成气体,才能燃烧而生成火焰。主要由于可燃气体被空气中的或单纯的氧气氧化而发光发热。

          化学反应中当反应物总能量大于生成物总能量时,一部分能量以热能形式向外扩散,称为放热反应。向外释放的热能在反应区周围积聚,加热周边的空气,使周边空气分子做高速运动,运动速度越快,温度越高。火焰按照距反应区距离由近至远分为:1、焰心,粒子运动速度低,光谱集中在红外区,温度低,亮度低。2、内焰,粒子运动速度中等,光谱集中在可见光部分,亮度较高,温度较高。3、外焰,粒子运动速度最快,光谱集中在紫外区,温度最高,亮度高。反应区向外释放的能量从焰心至外焰逐渐升高,然后急剧下降,使火焰有较清晰的轮廓,火焰与周围空气的边界处即反应能量骤减处。

          动画原理是生成若干幅连续变化的图像,对其进行播放.这需要先实现对图像生成参数的插值过渡.生成的系列图像如下:

          然后将其合并成GIF图像,如下图所示:

          说到九尾,多少和火影有些关系.这里每一幅火的图像生成,有点像我爱罗的砂之忍术,算法中控制上千万个点的位置,将点叠加到一个512*512的二维数组中.然后将这一数组转化成图像.有点佩服我爱罗了,他的砂之忍术可以将沙子实时生成三维的物体,这得有多大的计算量啊.我这里只是二维图像,而且没办法做到实时控制.生成每一帧图像的耗时差不多要2秒左右.

          生成的图像和想像中有些差距,感觉不够火爆,等我以后有空再调整其参数吧.

  • 相关阅读:
    【转】漫谈linux文件IO--io流程讲的很清楚
    iostat命令
    【转】ATA Secure Erase
    同步IO和异步IO
    fio2.1.10--README
    【转】地址空间、内核空间、IO地址空间
    博客收藏--sailing的博客
    Cosmos OpenSSD架构分析--HOST interface(未完)
    nginx 过滤zip 类型的文件
    freeswitch GUI界面(portal)
  • 原文地址:https://www.cnblogs.com/WhyEngine/p/4150711.html
Copyright © 2011-2022 走看看