如果我在一个球体周围有一组随机浮点数(0.0f - 1.0f)(甚至在 2D 网格上也可以),每个浮点数与它们的邻居仅相差约 0.1f,有没有办法转换这些浮动到,比如说颜色,每个颜色的 RGB 值也只与它们的邻居相差大约 0.1f,其方式(基本上)获得任何颜色的可能性相同(所以某些颜色不会偏向于其他颜色)?
我使用的方法是这样,在每个顶点的最终偏移完成后,我将所有偏移缩小到从 0.0 到 1.0 的浮点值,其中这些浮点值仍然反映值的初始分布。如果有帮助,我可以发布代码片段,或者如果您只是好奇,它们正在编辑中。
这是一个潜在的答案,谢谢 Hot Licks!不过,提供更均匀分布的东西可能会很好。尽管如此,这是一个开始(而且它本身有点酷),是的,谢谢!
Random randomGen = new Random();
int randomOne = randomGen.nextInt(256);
int randomTwo = randomGen.nextInt(256);
int randomThree = randomGen.nextInt(256);
float offsets[] = new float[vertices.length];
... // Calcuate the offsets via the method described in that article (code is in the edits if you're curious)
for(int i = 0; i < vertices.length; i++)
{
float randomFloat = offsets[i];
float r = (float)((int)(offsets[i]*255.0) ^ randomOne)/255.0f;
float b = (float)((int)(offsets[i]*255.0) ^ randomTwo)/255.0f;
float g = (float)((int)(offsets[i]*255.0) ^ randomThree)/255.0f;
}
编辑:删除了很多额外的东西,并得到了问题的实质。如果您对代码片段或其他相关信息感到好奇,您可以看到编辑,但这确实是我要问的大部分内容。
编辑编辑:添加(部分)解决方案代码片段。