zoukankan      html  css  js  c++  java
  • Perlin Noise——柏林噪声

    1.简介

      柏林噪声最常用且最著名的噪声,名字源于他的创始人Ken Perlin。

      柏林噪声与值噪声相似,定义若干个顶点且每个顶点含有一个随机梯度向量,这些定点会根据自己的梯度向量对周围坐标产生是能影响,沿着顶点的梯度方向越上升则势能越高。

      当需要求出某个坐标的输出值时,需要将该坐标附近的各个顶点所造成的势能进行叠加,从而得到一个总势能并输出。

    2.原理

      与值噪声一样,它也是基于晶格的噪声,也需要三个步骤:

      2.1首先定义一个晶格结构,每个晶格顶点有一个随机的梯度向量。对于二维的柏林噪声来说,晶格结构就是一个平面网格,对于三维来说就是一个立体网格。

      

      2.2输入一个点坐标(二维的话就是二维坐标,三维就是三维坐标,n维的就是n维坐标),我们找到和它相邻的那些晶格顶点(二维下有4个,三维下有8个,n维下有 2ⁿ 个),计算该点到各个晶格顶点的距离向量,再分别与顶点上的梯度向量做点乘,得到2ⁿ个点乘结果

      

       2.3使用缓和曲线计算它们的权重和

      

      下图通过颜色差异显示了2d柏林噪声生成的个像素点的值:

      

  • 相关阅读:
    用IIS做宿主的WCF服务
    Apache+mono+xsp搭建Linux下的asp.net平台
    web页面中的卡片布局代码
    GridView内的数据循环滚动
    adb 无法启动问题
    User interface
    动态生成linearLayout
    跳转到下一个activity
    android studio 快捷键
    [转]项目失败的经验
  • 原文地址:https://www.cnblogs.com/dan2/p/14242705.html
Copyright © 2011-2022 走看看