如何在给定一组点的情况下生成随机点(x,y,z)

时间:2017-03-22 04:51:57

标签: java math opengl-es

如果在一组点上说

,如何在java中生成随机点(x,y,z)

float[] array{ 0.5f,0.0f,0.0f,-0.5f,0.0f,0.0f....};

其中array的格式为{x1,y1,z1,x2,y2,z2...},指定数组的点构成边界,以便我可以使用这些点在openglEs2.0中生成网格

1 个答案:

答案 0 :(得分:0)

当我们不知道边界的形状时,这可能看起来很复杂。我最好的建议是你加点平均值。我希望这会在所有情况下给你满意的结果。请检查。

产生加权平均值的一种方法:生成与有点一样多的随机双数或浮点数(浮点数组长度的三分之一)。 Math.random()可以做到这一点。有四个点你可以得到例如[ 0.54, 0.74, 0.12, 0.6 ](数字将有更多的小数,但为了一个简单的例子)。添加数字(这将在示例中产生2.0)。将每个数字除以总和以获得[ 0.27, 0.37, 0.06, 0.3 ]。现在数字的总和是1.0,这就是我们需要的:现在这些数字是加权平均数的权重。按相应的权重缩放每个点并添加缩放的点。现在你的边界内有随机点。

我仍然认为我会按照我在评论中所说的那样做:首先从浮点数组生成点。我会发现点对象更自然地使用,我认为任何错误都可以更容易找到,而且我也不太可能做任何错误。

快乐的编码。