我刚刚开始世界一代,我一直在寻找perlin noise的教程,但遗憾的是谷歌上没有很多东西可以找到 . 我遵循教程的最后几天,但我无法让我的代码工作 .

这是我的Java方法 .

private static double[][] createNoise(int xn, int yn, int sps) {

int m = yn * sps;

int n = xn * sps;

double[][] u = new double[yn + 1][];

double[][] v = new double[yn + 1][];

double[][] x = new double[m][];

double[][] y = new double[m][];

double[][] z = new double[m][];

for (int i = 0; i < m; i++) {

x[i] = new double[n];

y[i] = new double[n];

z[i] = new double[n];

}

for (int i = 0; i < yn + 1; i++) {

u[i] = new double[xn + 1];

v[i] = new double[xn + 1];

}

for (int i = 0; i < xn + 1; i++) {

for (int j = 0; j < yn + 1; j++) {

u[i][j] = nextRandom();

v[i][j] = nextRandom();

}

}

double hx = xn / (n - 1);

double hy = yn / (m - 1);

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

x[i][j] = hx * j;

y[i][j] = hy * i;

}

}

for (int i = 0; i < m; i++) {

for (int j = 0; j < n; j++) {

int xc = (int)x[i][j];

int yc = (int)y[i][j];

if (x[i][j] % 1 == 0 && x[i][j] != 0 ) xc = xc - 1;

if (y[i][j] % 1 == 0 && y[i][j] != 0 ) yc = yc - 1;

double xr = x[i][j] - xc;

double yr = y[i][j] - yc;

double s11[] = {-xr, -yr};

double s21[] = {-xr, 1 - yr};

double s22[] = {1 - xr, 1 - yr};

double s12[] = {1 - xr, -yr};

double q11 = s11[0] * u[yc][xc] + s11[1] * v[yc][xc];

double q21 = s21[0] * u[yc + 1][xc] + s21[1] * v[yc + 1][xc];

double q22 = s22[0] * u[yc + 1][xc + 1] + s22[1] * v[yc + 1][xc + 1];

double q12 = s12[0] * u[yc][xc + 1] + s12[1] * v[yc][xc + 1];

z[i][j] = lerp(x[i][j], y[i][j], xc, xc + 1, yc, yc + 1, q11, q12, q21, q22);

}

}

return z;

}

该方法遗留下来的高度图看起来像这样

如您所见,第一行/列正在运行,但之后算法似乎失败了 . 我确定了方法

nextRandom();

返回介于-1和1之间的浮点值 .

非常感谢!

Java柏林算法,柏林噪音 - 我做错了什么?相关推荐

  1. Re: 一著名软件公司的java笔试算法题!

    主 题: Re: 一著名软件公司的java笔试算法题! 作 者:   szlhj () 等 级:   信 誉 值:   95 所属论坛:   Java J2SE / 基础类 问题点数:   20 回复 ...

  2. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  3. JAVA经典算法50题(转)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1]   题目:古典问题:有一对兔子, ...

  4. JVM(3):Java GC算法 垃圾收集器

    概述 垃圾收集 Garbage Collection 通常被称为"GC",它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数 ...

  5. java序列化算法透析_Java序列化机制与原理的深入分析

    Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...

  6. Java的算法讲解以及案例!

    算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,java算法就是采用Java语言来实现解决某一问题的清晰指令. 算法的特征: 输入性:有零个或多个外部量作为算法的输入 输出性:算法产生 ...

  7. 如何在面试中介绍自己的项目经验,90%的人都做错了!

    目录 1.如何准备项目介绍?别害怕,面试官什么都不知道 2.准备好项目细节,一旦被问倒,说明你没做过 3.不露痕迹地说出面试官爱听的话 4.主动出击,面试官没有义务挖掘你的亮点 5.低级错误可能导致直 ...

  8. 26 Java GC算法 垃圾收集器、标记 -清除算法、复制算法、标记-压缩算法、分代收集算法

    26.Java GC算法 垃圾收集器 1.1.1标记 -清除算法 1.1.2复制算法 1.1.3标记-压缩算法 1.1.4分代收集算法 26.Java GC算法 垃圾收集器 概述 垃圾收集 Garba ...

  9. Java入门算法(数据结构篇)丨蓄力计划

    本专栏已参加蓄力计划,感谢读者支持 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算法 ...

最新文章

  1. three.js贴图
  2. 实用比较,帮你决策到底选择Vue还是Angular4、5
  3. 如何将HBuilder中的项目Push至Gitee中!
  4. mysql 横向分表合并_MySQL横向扩展-分库分表解决方案总结
  5. [笨木头FireFly 02]入门篇2_客户端发送请求,服务器处理请求
  6. Maven 手动安装Jar包的例子
  7. 多线程下载工具axel
  8. WCF中如何修改MaxItemsInObjectGraph的限制
  9. WebForms简介
  10. 【转】IDEA类和方法注释模板设置(非常详细)
  11. 希尔密码加解密(Python)
  12. Python求绝对值的三种方法
  13. Oracle 18c安装操作指导手册
  14. 【Android】使用deviceowner 配置手机设置 (Monkey自动化测试删去状态栏、设定输入法、静音、APP自动权限授予、Kiosk模式打开)
  15. C#【文件操作篇】PDF文件和图片互相转换
  16. Codeforces Round #444 (Div. 2)-贪心尺取-Ratings and Reality Shows
  17. 2016阿里安全工程师实习生招聘笔试题
  18. 数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】
  19. MSRA院长周礼栋升任微软全球资深副总裁,20年前加入微软,毕业于复旦
  20. java long初始化_java中long类型的变量想要初始化其值为空,要怎么实现?

热门文章

  1. Exception: com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to com.mysql.jdbc.Connection
  2. TCP协议的三次握手、四次挥手
  3. linux 挂载ISO文件以及yum源配置
  4. SQL Server 数据库 'xxx' 正处于转换状态。请稍后再尝试该语句。
  5. SecureCRT提示----数据库里没找到防火墙“无”----解决方案
  6. Windows操作系统启动介绍(二)
  7. How Many Replication Method In SAP HANA
  8. DNS中实现父子域,以及授权和转发
  9. Winsows VISTA启动过程解析
  10. MyEclipse使用总结——设置MyEclipse使用的Tomcat服务器