Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从随机点生成三个.js形状_Javascript_Three.js_Mesh_Points_Vertices - Fatal编程技术网

Javascript 从随机点生成三个.js形状

Javascript 从随机点生成三个.js形状,javascript,three.js,mesh,points,vertices,Javascript,Three.js,Mesh,Points,Vertices,我有N个随机点,在这个例子中是20个,有X,Y和Z约束 如何使用Three.js库创建任何最好的闭合形状,给定并仅从N个随机点开始 可能有很多变体,请分享你的 var program = new Program(reset,step) program.add('g',false) function reset() { scene.clear() scene.add(new THREE.GridHelper(100,1)) } function step() { } program.

我有N个随机点,在这个例子中是20个,有X,Y和Z约束

如何使用Three.js库创建任何最好的闭合形状,给定并仅从N个随机点开始

可能有很多变体,请分享你的

var program = new Program(reset,step)
program.add('g',false)
function reset() {
  scene.clear()
  scene.add(new THREE.GridHelper(100,1))
}
function step() {

}


program.startup()



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() * (80 - 1) + 1

    var dotGeometry = new THREE.Geometry();
    dots.push(dotGeometry);
    dotGeometry.vertices.push(new THREE.Vector3( x, y, z));
    var dotMaterial = new THREE.PointsMaterial( { size: 3, sizeAttenuation: false, color: 0xFF0000 } );
    var dot = new THREE.Points( dotGeometry, dotMaterial );

    scene.add(dot);
}

三角测量,沃罗尼,我不在乎,只要告诉我你有什么想法,就会帮我学到很多

您可以创建一个多面体,该多面体是一组3D点的凸包,使用如下模式:

var points = [
    new THREE.Vector3( 100, 0, 0 ),
    new THREE.Vector3( 0, 100, 0 ),
    ...
    new THREE.Vector3( 0, 0, 100 )
];

var geometry = new THREE.ConvexGeometry( points );

var material = new THREE.MeshPhongMaterial( {
    color: 0xff0000, 
    shading: THREE.FlatShading
} );

mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
您必须在项目中包括以下内容

<script src="/examples/js/geometries/ConvexGeometry.js"></script>

three.js r.78

您可以创建一个多面体,该多面体是一组3D点的凸包,使用如下模式:

var points = [
    new THREE.Vector3( 100, 0, 0 ),
    new THREE.Vector3( 0, 100, 0 ),
    ...
    new THREE.Vector3( 0, 0, 100 )
];

var geometry = new THREE.ConvexGeometry( points );

var material = new THREE.MeshPhongMaterial( {
    color: 0xff0000, 
    shading: THREE.FlatShading
} );

mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
您必须在项目中包括以下内容

<script src="/examples/js/geometries/ConvexGeometry.js"></script>

three.js r.78

不知道是否有内置的方法,但如果您对数学算法感兴趣,我需要制作一些形状,然后在其中重新定位不同的体积。我是个初学者,但是我现在没有太多时间学习JS和Three.JS。自己做算法对我来说有点难,但是当我看到一个代码时,我有足够的技能去调试/编辑/理解它。我会看看你提供的链接,谢谢你的信息!你是对的。你可以找到已经有人写过的基于javascript的凸包3d算法。但是我刚刚找到了带有three.js的例子。这一个可以找到更多你不需要编写算法的例子@alex747 plz的可能副本如果它解决了你的问题,别忘了接受答案。不知道有没有内置的方法,但是如果你对数学算法感兴趣,我需要做一些形状,然后在其中重新定位不同的体积。我是个初学者,但是我现在没有太多时间学习JS和Three.JS。自己做算法对我来说有点难,但是当我看到一个代码时,我有足够的技能去调试/编辑/理解它。我会看看你提供的链接,谢谢你的信息!你是对的。你可能会发现有人已经编写了基于javascript的凸包3d算法。但我刚刚找到了带有three.js的示例。这一个可以找到更多你不需要编写算法的示例@alex747 plz的可能副本。如果它解决了你的问题,请不要忘记接受答案欢迎使用stackoverflow。请记住点击复选标记接受答案。谢谢。欢迎来到stackoverflow。请记住点击复选标记接受答案。非常感谢。