初学者问题: 我在java脚本中创建了一些随机点。我以后怎样才能“调用”它们中的每一个呢?我相信它被称为一个对象(所有点的列表),我可以在其中操纵它们在列表中的位置或“拉”我需要的那些。我该如何在 js 中做到这一点?
这行是什么:
vardots = [];
为?
之后的评论是另一个人添加的,我不明白。
如何在 Three.js 中的两点之间画一条线(假设列表中的第一个和第二个 - 0 和 1)?
更复杂的问题:我在java脚本中创建X(在本例中为20)个随机点。我正在尝试找出一种使用 3 个点组随机创建面并形成网格的方法。
嗯,不是那么随机,因为我需要一个结果,其中所有面都绑定(bind)在一起形成连续的网格。结果应该看起来像由许多顶点组成的地形多边形曲面。
var numpoints = 20;
var dots = []; //If you want to use for other task
for (var i = 0 ; i < numpoints ; i++) {
var x = Math.random() * (80 - 1) + 1 //Math.random() * (max - min) + min
var y = Math.random() * (80 - 1) + 1
var z = Math.random() * (10 - 1) + 1
var dotGeometry = new THREE.Geometry();
dots.push(dotGeometry);
dotGeometry.vertices.push(new THREE.Vector3(x, y, z));
var dotMaterial = new THREE.PointCloudMaterial( { size: 3, sizeAttenuation: false, color: 0xFF0000 });
var dot = new THREE.PointCloud( dotGeometry, dotMaterial);
scene.add(dot);
}
最佳答案
从数组中获取随机元素:
function randChoice(array){
return array[Math.floor(Math.random()*array.length)];
};
据我所知,有两种从随机点生成网格的方法: convex hull和 alpha shape 。通过重复选取 3 个随机点来创建网格几乎肯定会产生意大利面条。
如果你只是想生成如图所示的地形,有terrain generation from heightmap 。
关于javascript - Three.js 随机点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793750/