初学者问题: 我在java脚本中创建了一些随机点。我怎么能以后“称呼”他们中的每一个?我相信它被称为一个对象(所有点的列表),在那里我可以操纵它们在列表中的位置或“拉”我需要的那些。我怎么在js中做到这一点?
行是什么:
var dots = [];
?
之后的评论是从另一个人那里添加的,但是我没有得到它。
如何在Three.js中的两个点(让我们说列表中的第一个和第二个 - 0和1)之间划一条线?
更复杂的问题:我在这里创建X(在本例中为20)java脚本中的随机点。我试图找出一种方法,使用3个点的组来随机创建面并形成一个网格。
嗯,不是那么随机,因为我需要一个结果,所有面都在一个连续的网格中绑定在一起。结果应该看起来像是由许多顶点构成的地形多面体。
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);
}
答案 0 :(得分:1)
从数组中获取随机元素:
function randChoice(array){
return array[Math.floor(Math.random()*array.length)];
};
我知道有两种从随机点生成网格的方法: convex hull和alpha shape。通过重复挑选3个随机点来创建网格几乎肯定会产生意大利面。
如果您只想生成图片中的地形,则会terrain generation from heightmap。