代码

//---------------------------------------------------------------------------------------
// Perlin Noise data (copyed form ogre ver1.6.1)
//---------------------------------------------------------------------------------------
int perlin[512] =
{
151,160,137,91,90,15,
131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,
190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,
88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,
77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,
102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,
135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,
5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,
223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,
129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,
251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,
49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,
138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180,

151,160,137,91,90,15,
131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,
190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,
88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,
77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,
102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,
135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,
5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,
223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,
129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,
251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,
49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,
138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180
};

#define fade(t) ( (t) * (t) * (t) * (t) * ( (t) * ( (t) * 6 - 15 ) + 10) )
inline double grad(int hash, double x, double y, double z)
{
int h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE
double u = h<8||h==12||h==13 ? x : y, // INTO 12 GRADIENT DIRECTIONS.
v = h<4||h==12||h==13 ? y : z;
return ((h&1) == 0 ? u : -u) + ((h&2) == 0 ? v : -v);
}

inline double noise3(double x, double y, double z)
{
int X = ((int)floor(x)) & 255, // FIND UNIT CUBE THAT
Y = ((int)floor(y)) & 255, // CONTAINS POINT.
Z = ((int)floor(z)) & 255;
x -= floor(x); // FIND RELATIVE X,Y,Z
y -= floor(y); // OF POINT IN CUBE.
z -= floor(z);

double u = fade(x), // COMPUTE FADE CURVES
v = fade(y), // FOR EACH OF X,Y,Z.
w = fade(z);
int A = perlin[X ]+Y, AA = perlin[A]+Z, AB = perlin[A+1]+Z, // HASH COORDINATES OF
B = perlin[X+1]+Y, BA = perlin[B]+Z, BB = perlin[B+1]+Z; // THE 8 CUBE CORNERS,

return lerp(w, lerp(v, lerp(u, grad(perlin[AA ], x , y , z ), // AND ADD
grad(perlin[BA ], x-1, y , z )), // BLENDED
lerp(u, grad(perlin[AB ], x , y-1, z ), // RESULTS
grad(perlin[BB ], x-1, y-1, z ))),// FROM 8
lerp(v, lerp(u, grad(perlin[AA+1], x , y , z-1 ), // CORNERS
grad(perlin[BA+1], x-1, y , z-1 )), // OF CUBE
lerp(u, grad(perlin[AB+1], x , y-1, z-1 ),
grad(perlin[BB+1], x-1, y-1, z-1 ))));
}

转载于:https://www.cnblogs.com/Perit/articles/1759764.html

Perlin Noise algorithms(备忘)相关推荐

  1. 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单

    向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...

  2. azure_Azure ML算法备忘单

    azure 云计算 , 机器学习 (Cloud Computing, Machine Learning) A common question often asked in Data Science i ...

  3. 3D数学之柏林噪声(Perlin Noise)

    好了,转入正题. 其实它的原理并不是很难,但是由于网上实现的版本太多太杂,真要实现起来竟然不知从何处下手,而且自己写的时候会遇到各种各样的问题.最终写出来了,所以很欣然. 先看下,我在网上找的一些资料 ...

  4. 推荐EI、SCI期刊及投稿建议-备忘(转)

    推荐EI.SCI期刊及投稿建议-备忘 EI检索期刊 计算机方面SCI和EI期刊(EI期刊会议注册前推荐) 大会注册前推荐的EI期刊: 英文投稿的一点经验[转载] 再加两封催稿信!英语不好,但意思表达到 ...

  5. aws 认证_AWS ML专业认证备忘单

    aws 认证 the highly important and carefully crafted piece, * this will only be useful after completing ...

  6. vim的一些快捷键,备忘

    vim的一些快捷键,备忘 快捷键                                            作用 ctrl+g                                ...

  7. 机器学习项目的备忘清单!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Harshit Tyagi,编译:机器之心 机器学习项目中含有众多 ...

  8. 备忘:C语言void *

    由于研究一段代码的时候,看到了 void *.故此进行了学习. 看了 http://www.doc88.com/p-894907672962.html  的说明,感觉写得太好了,已无话可说. 故此备忘 ...

  9. [译] Kotlin 标准方法备忘

    原文地址:Kotlin Standard Functions cheat-sheet 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/go ...

最新文章

  1. 37. Leetcode 100. 相同的树 (二叉树-二叉树性质)
  2. MySQL学习第三章练习题
  3. java 枚举类型 构造函数及用法
  4. js设置全局变量ajax中赋值
  5. tensorboard可视化经常出现的两个问题
  6. 8、QuickExec命令行的使用
  7. 如何输入已经以新的TTY运行的Docker容器
  8. Jsoup爬虫新手一
  9. silverlight DataPager控件
  10. 这本书,值2000亿!
  11. python 欠采样_欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响?...
  12. 计算机管理器用户怎么打开,win10无法使用内置管理员账户打开计算器如何设置...
  13. Android 文字转语音2种方式
  14. 公众号后时代,暴涨100万粉丝、篇篇10w+是如何炼成的?
  15. 不规则裁剪图片css,使用CSS的clip-path属性实现不规则图形的显示
  16. The Chubby lock service for loosely-coupled distributed systems 论文阅读笔记
  17. 光电武器装备故障智能测试系统ETest研究
  18. 2022-雨课堂-工程伦理期末考试答案
  19. Python进阶编程问题集
  20. 立式大钢琴-Native Instruments The Giant v1.2.0 Kontakt

热门文章

  1. .net MySQL事物_在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封装...
  2. python合法标识符_python_判断标识符的合法性
  3. php表达式生成工具,thinkPHP5.0数据查询表达式生成技巧
  4. linux 查看可执行文件动态链接库相关信息(转)
  5. 每天一道LeetCode-----求一个数的n次方,n是很大很大的数,n用数组存储着
  6. VMware+Win7+windbg 双机调试
  7. Wannafly挑战赛17 - 走格子(模拟)
  8. jsch 移动服务器上文件,jsch上传文件到服务器
  9. oracle指令df,怎么使用df命令查看Linux磁盘空间?
  10. ant指定servlet版本_阅读SpringMVC源码前,不妨看下简易版本SpringMVC框架的搭建