分形布朗运动曲线绘制

分形布朗运动曲线讲解

大家好,今天我为大家讲解分形噪音的基础:分形布朗运动曲线的绘制。噪音在图形学领域非常受欢迎,特别是在复杂场景的应用,能在低消耗的情况下模拟出许多传统的欧式几何难以刻画的场景。例如使用perlin噪声可以模拟山脉地形,天空云层等等。这是本人的第一篇博客,后续本人将引领大家一起走进计算机图形领域!

布朗运动

布朗运动是1827年英国植物学家R.Brown发现的,它是一种随机运动,粒子的运动方向随时改变,其运动轨迹是一条无规则的折线,不受什么约束和支配。

1968年1968年Mandelbrot和Ness两人提出分形布朗运动FBM(Fractal Brown Motion),它主要用于描述自然界的山脉、云层、地形地貌以及模拟星球表面等不规则形状阶。
以下为我在MFC上实现的FBM直线类所绘制的分形布朗曲线:
在这里插入图片描述

FBM

FBM实际上是一种策略,其目的是为了让普通的噪声有更多的细节,可以看成是不同位置,不同比例,不同频率的同一个噪声函数的叠加。实现代码如下:
实现代码1
其中octaves为倍频,即噪音叠加的次数,影响着噪音的自然性。frequency为噪音的频率,amplitude为噪音的振幅,控制着噪音的极大值与极小值。一般在[0,1]之间,值越大则代表噪音波动越大。下图是H=0.8与H=0.2的比较。
比较
其中的noise函数为噪音函数,噪音函数返回的是一个伪随机数,即每次输入的值一定,则结果一定为某个值。例如:我们假设这个函数为取圆周率π的小数点后几位。则次函数就是一个伪随机函数。因为每次输入的值一定则结果一定。取第一位必定是1,然而每个数之间又相互随机。不同的伪随机函数会产生截然不同的结果。此处我选择的伪随机函数如下:
实现代码2

折线的绘制

折线的绘制采用经典的线段中点递归位移算法,其主要的思想是通过递归的对每一条直线中点进行FBM位移产生新的两条线段。到达递归条件遍使用MFC自带的函数绘制直线。折线段的走势会符合整体的直线。而且局部和整体也具有相似性。具体的递归实现代码如下:
实现代码3

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值