2016-06-16 44 views
1

Ich habe eine N Anzahl von zufälligen Punkten (in diesem Fall 20), mit einem X, Y und Z Einschränkungen.Three.js Shape von zufälligen Punkten

Wie kann ich ANY (vorzugsweise geschlossen) Form (mit Three.js-Bibliothek), gegeben und nur von N zufälligen Punkten beginnen.

Es gibt wahrscheinlich viele Varianten, bitte teilen Sie Ihre.

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); 
} 

Triangulation, Voronoi, ist mir egal, zeig mir nur irgendwelche Ideen haben Sie, wird mir sehr helfen, lernen!

+0

Ich weiß nicht, ob es einen eingebauten Weg gibt, aber wenn Sie an Mathe-Algorithmus interessiert sind http://StackOverflow.com/Questions/828905/Polygon-Closeding-As-Set-of-Points –

+0

Ich ne Ed, um etwas Form zu machen und verschiedene "Volumes" darin zu verschieben. Ich bin ein ziemlich Anfänger, aber ich habe jetzt nicht viel Zeit JS und Three.js zu lernen. Das Erstellen von Algorithmen ist für mich ziemlich schwierig, aber wenn ich einen Code sehe, habe ich genug Fähigkeiten, um ihn zu debuggen/zu bearbeiten/zu verstehen. Ich schaue auf den Link, den Sie zur Verfügung gestellt haben, danke für Informationen! – alex747

+0

Sie haben Recht.Sie ​​könnten javascriptbasierter 'konvexer Rumpf3d' Algorithmus finden, der bereits von jemandem geschrieben wurde. Aber ich fand gerade ein Beispiel mit three.js hier https://www.packtpub.com/packtlib/book/Web-Development/9781784392215 /6/ch06lvl1sec32/THREE.ConvexGeometry.also diese http://www.initcode.info/3d_convex_hull_algorithm_similar_to_matlab39_s_convhulln.Sie können weitere Beispiele finden, die Sie nicht brauchen, um algorithem zu schreiben –

Antwort

3

Sie können ein Polyeder erstellen, die unter Verwendung eines Musters, wie so die konvexe Hülle einer Menge von 3D-Punkten ist:

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); 

Sie müssen die folgenden in Ihrem Projekt

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

drei umfassen .js r.78

+1

Willkommen bei stackoverflow. Bitte denken Sie daran, die Antworten zu akzeptieren, indem Sie auf das Häkchen klicken. Vielen Dank. – WestLangley