如果在一组点上说
,如何在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中生成网格
答案 0 :(得分:0)
当我们不知道边界的形状时,这可能看起来很复杂。我最好的建议是你加点平均值。我希望这会在所有情况下给你满意的结果。请检查。
产生加权平均值的一种方法:生成与有点一样多的随机双数或浮点数(浮点数组长度的三分之一)。 Math.random()
可以做到这一点。有四个点你可以得到例如[ 0.54, 0.74, 0.12, 0.6 ]
(数字将有更多的小数,但为了一个简单的例子)。添加数字(这将在示例中产生2.0)。将每个数字除以总和以获得[ 0.27, 0.37, 0.06, 0.3 ]
。现在数字的总和是1.0,这就是我们需要的:现在这些数字是加权平均数的权重。按相应的权重缩放每个点并添加缩放的点。现在你的边界内有随机点。
我仍然认为我会按照我在评论中所说的那样做:首先从浮点数组生成点。我会发现点对象更自然地使用,我认为任何错误都可以更容易找到,而且我也不太可能做任何错误。
快乐的编码。