gpt4 book ai didi

javascript - 在 ThreeJS 中打乱位置数组

转载 作者:行者123 更新时间:2023-12-03 03:37:13 24 4
gpt4 key购买 nike

我有一个来自 BufferGeometry 的 x/y/z 位置数组,有近 60000 个点(18000 个值),

[3, 2, 1, 3, 2, 1, 3, 2, 1, ...]

我需要对这些位置进行洗牌,然后先获得 30000 以获得随机点。我正在考虑在洗牌之前将此数组转换为 Vector 3 数组,以免丢失所有“三重奏”值。

    [new THREE.Vector3(3, 2, 1), new THREE.Vector3(3, 2, 1), new THREE.Vector3(3, 2, 1), ...]

我需要词汇帮助。请问这两个数组有具体名称吗? (这将帮助我了解接下来的问题)。

是否有将数组转换为另一个数组的特定方法?

有没有最好的方法来洗牌原始位置数组?

最佳答案

简短的答案是:您不需要转换为 THREE.Vector3 即可从数组中提取 n 个随机点。这两个数组都没有特定的名称。

下面我提供了执行您想要执行的操作的函数:

有没有最好的方法来洗牌原始位置数组? (是的,见下文)

var points = [5, 6, 7, 3, 2, 1, 5, 6, 7, 3, 2, 1, 5, 6, 7]

// Assuming there are more points than the number of points you need to get back
function getRandomPoints (points, numberOfPoints) {
var resultPoints = []
for (var i = 0; i < numberOfPoints; i++) {
// Get a random index
var randomIndex = Math.floor(Math.random() * points.length);
var index = (randomIndex - randomIndex % 3)
resultPoints.push(points[index])
resultPoints.push(points[index + 1])
resultPoints.push(points[index + 2])
points.splice(index, index + 3);
}

return resultPoints;
}

var randomPoints = getRandomPoints(points, 2);

是否有将数组转换为另一个数组的特定方法? (是的,见下文)

var points = [5, 6, 7, 3, 2, 1, 5, 6, 7, 3, 2, 1, 5, 6, 7]

function convertToVector (points) {
var resultPoints = []
for (var i = 0; i < points.length; i = i + 3) {
var vectorPoint = new THREE.Vector3(points[i], points[i + 1], points[i + 2])
resultPoints.push(vectorPoint)
}
return resultPoints
}

var convertedPoints = convertToVector(points)

关于javascript - 在 ThreeJS 中打乱位置数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45801930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com