第10章分形自然景物模拟(免费阅读).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
参考书:《分形算法与程序设计》 * 第 10 章 分形自然景物模拟算法 9.1 随机中点位移法生成山 9.2 分形插值算法生成云和山 随机中点位移法生成山 10.1 ?1. 一维中点位移法 以一条水平地平线段开始 ????重复足够多次{   对场景中的每条线段做{     找到线段的中点     在?Y?方向上随机移动中点一段距离     减小随机数取值范围   } } 随机中点位移法生成山 10.1 ?1. 一维中点位移法 粗糙度常量。这个值决定每次循环随机数值域的减少量,也就是说,决定分形结果的粗糙程度。例如使用一个?0.0?到?1.0?之间的浮点数并称之为?H?。因此?(a-h)?是1.0(?对于小?H)?到?0.5(对大?H?)范围内的数。随机数范围在每次循环时乘上这个值。如果?H?设为?1.0?,则随机数范围将每次循环减半,从而得到一个非常平滑的分形。将?H?设为?0.0?,则范围根本不减小,结果有明显的锯齿感。 随机中点位移法生成山 10.1 ?2. 二维中点位移法 上面是将索引(?x?值)映射为高度值(?y?值)。 ???? 如果需要一个两维高度值数组,它将索引?(x,z)?映射为高度?(y)?。数组只需保存高度值?(y)?。水平面值?(x?和?z)?可以在分析数组时即时生成。 ???? 通过对每个高度指定一个颜色,可以将一幅高度图显示为一幅图像。如下,高点为白色,低处为黑色。 ??? ?绘制高度图的方法对于生成云彩纹理图是很有用的。 随机中点位移法生成山 10.1 3. 三维中点位移法 选择AB、AC、BC线段中点,并沿y方向分别加一个随机量h1、h2、h3,得到E、F、G点,其中,h1、h2、h3的取值范围相同。 连接AE、BE、AF、CF、BG、CG,从而构成△AEG、△BEF、△CFG、△EFG等4个小三角形,并将原来的三角形△ABC抹去。选择明暗不同的4种颜色,分别填充这4个三角形。 分别基于上述形成的4个小三角形,重复执行上面的操作。 随机中点位移法生成山 10.1 3. 三维中点位移法 在实现此算法时应避免出现山体裂痕。当每一级中点位移时,都是基于每一个独立的小三角形进行的,但由于各三角形之间有共用边,所以会出现共用被移位两次的情况,而且两次位移的高度会有所不同(因为移位中有随机量),这样便会出现裂痕。解决办法是,先移位三边都是共用的三角形,然后其他三角形在移位时,只移位非共用边即可。 10.2 分形插值算法生成云和山 在平面上划分正方形网络n×n,随机给A、B、C、D四个角点的颜色; 根据四个角点的颜色值的平均值,产生中点M的颜色; 根据A、B、M点和网格外一虚拟点(颜色值为0)求平均,得到边中点E的颜色,根据B、C、M点和网格外一虚拟点(颜色值为0)求平均,得到边中点F的颜色,根据C、D、M点和网格外一虚拟点(颜色值为0)求平均,得到边中点G的颜色,根据A、D、M点和网格外一虚拟点(颜色值为0)求平均,得到边中点H的颜色; 根据小正方形EBFM,四角点颜色的平均值,求出小正方形中点以及小正方形的边中点的颜色;然后再沿用上述规则计算小正方形MFCG的中点及边中点的颜色,以此类推,计算小正方形HMGD、AEMH的中点和边中点的颜色。 10.2 分形插值算法生成云和山 在X-Y平面上绘制一个n×n的正方形网格,并对4个角点在Z方向上分别设置初始高度ha、hb、hc、hd,得到A、B、C、D四点; 根据式hm=(ha+hb+hc+hd)/4+△,计算正方形网格中点的高度hm,其中△为一随机量,从而得到M点; 根据角点和中点以及虚拟点,计算边中点的高度,即 he=(ha+hb+hm+0)/4+△ hf=(hb+hc+hm+0)/4+△ hg=(hc+hd+hm+0)/4+△ hh=(hd+ha+hm+0)/4+△ 其中△为一随机量,从而得到E、F、G、H四点; 10.2 分形插值算法生成云和山 再根据E、B、F、M四点的高度计算小正方形EBFM中点的高度,类似地计算小正方形MFCG、HMGD、AEMH中点的高度,即 he’=(ha+hb+hm+he)/4+△1 hf’=(hb+hc+hm+hf)/4+△1 hg’=(hc+hd+hm+hg)/4+△1 hh’=(hd+ha+hm+hh)/4+△1 以及这些正方形边中点的高度; 递归上面的步骤使正方形网格逐步细化,直至达到预期递归深度,然后连接每个正方形网格点。 *

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档