Perlin Noise algorithms(备忘)
![](/assets/blank.gif)
![](/assets/blank.gif)
// 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(备忘)相关推荐
- 资源 | AI、神经网络、机器学习、深度学习以及大数据学习备忘单
向AI转型的程序员都关注了这个号☝☝☝ 以下是关于神经网络.机器学习.深度学习以及大数据学习的备忘单,其中部分内容和此前发布的<资源 | 值得收藏的 27 个机器学习的小抄>有所重复,大家 ...
- azure_Azure ML算法备忘单
azure 云计算 , 机器学习 (Cloud Computing, Machine Learning) A common question often asked in Data Science i ...
- 3D数学之柏林噪声(Perlin Noise)
好了,转入正题. 其实它的原理并不是很难,但是由于网上实现的版本太多太杂,真要实现起来竟然不知从何处下手,而且自己写的时候会遇到各种各样的问题.最终写出来了,所以很欣然. 先看下,我在网上找的一些资料 ...
- 推荐EI、SCI期刊及投稿建议-备忘(转)
推荐EI.SCI期刊及投稿建议-备忘 EI检索期刊 计算机方面SCI和EI期刊(EI期刊会议注册前推荐) 大会注册前推荐的EI期刊: 英文投稿的一点经验[转载] 再加两封催稿信!英语不好,但意思表达到 ...
- aws 认证_AWS ML专业认证备忘单
aws 认证 the highly important and carefully crafted piece, * this will only be useful after completing ...
- vim的一些快捷键,备忘
vim的一些快捷键,备忘 快捷键 作用 ctrl+g ...
- 机器学习项目的备忘清单!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Harshit Tyagi,编译:机器之心 机器学习项目中含有众多 ...
- 备忘:C语言void *
由于研究一段代码的时候,看到了 void *.故此进行了学习. 看了 http://www.doc88.com/p-894907672962.html 的说明,感觉写得太好了,已无话可说. 故此备忘 ...
- [译] Kotlin 标准方法备忘
原文地址:Kotlin Standard Functions cheat-sheet 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/go ...
最新文章
- 37. Leetcode 100. 相同的树 (二叉树-二叉树性质)
- MySQL学习第三章练习题
- java 枚举类型 构造函数及用法
- js设置全局变量ajax中赋值
- tensorboard可视化经常出现的两个问题
- 8、QuickExec命令行的使用
- 如何输入已经以新的TTY运行的Docker容器
- Jsoup爬虫新手一
- silverlight DataPager控件
- 这本书,值2000亿!
- python 欠采样_欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响?...
- 计算机管理器用户怎么打开,win10无法使用内置管理员账户打开计算器如何设置...
- Android 文字转语音2种方式
- 公众号后时代,暴涨100万粉丝、篇篇10w+是如何炼成的?
- 不规则裁剪图片css,使用CSS的clip-path属性实现不规则图形的显示
- The Chubby lock service for loosely-coupled distributed systems 论文阅读笔记
- 光电武器装备故障智能测试系统ETest研究
- 2022-雨课堂-工程伦理期末考试答案
- Python进阶编程问题集
- 立式大钢琴-Native Instruments The Giant v1.2.0 Kontakt
热门文章
- .net MySQL事物_在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封装...
- python合法标识符_python_判断标识符的合法性
- php表达式生成工具,thinkPHP5.0数据查询表达式生成技巧
- linux 查看可执行文件动态链接库相关信息(转)
- 每天一道LeetCode-----求一个数的n次方,n是很大很大的数,n用数组存储着
- VMware+Win7+windbg 双机调试
- Wannafly挑战赛17 - 走格子(模拟)
- jsch 移动服务器上文件,jsch上传文件到服务器
- oracle指令df,怎么使用df命令查看Linux磁盘空间?
- ant指定servlet版本_阅读SpringMVC源码前,不妨看下简易版本SpringMVC框架的搭建