2016-06-16 4 views
1

У меня есть N число случайных точек (в данном случае 20) с ограничениями X, Y и Z.Форма Three.js из случайных точек

Как я могу создать ЛЮБАЯ (желательно закрытую) форму (используя библиотеку 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); 
} 

триангуляции, Вороного, мне все равно, просто показать мне какие-либо идеи, которые вы имеете, поможет мне узнать много!

+0

Не знаю, есть ли какой-либо встроенный способ, но если вы заинтересованы в математическом алгоритме http://stackoverflow.com/questions/828905/polygon-enclosing-a-set-of-points –

+0

Я чтобы сделать какую-то форму и переместить в нее разные «тома». Я довольно новичок, но у меня нет времени изучать JS и Three.js. Выполнение самих алгоритмов для меня очень тяжело, но когда я вижу код, у меня достаточно навыков для отладки/редактирования/понимания. Я посмотрю ссылку, которую вы предоставили, спасибо за информацию! – alex747

+0

Вы правы. Вы можете найти javascript на основе 'convex hull 3d' алгоритма, уже написанного кем-то. Но я только что нашел пример с тэгом. Js здесь https://www.packtpub.com/packtlib/book/Web-Development/9781784392215 /6/ch06lvl1sec32/THREE.ConvexGeometry.также этот http://www.initcode.info/3d_convex_hull_algorithm_similar_to_matlab39_s_convhulln.you можете найти больше примеров, которые вам не нужно писать algorithem –

ответ

3

Вы можете создать многогранник, который является выпуклой оболочкой множества 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> 

три .js r.78

+1

Добро пожаловать в stackoverflow. Не забудьте «принять» ответы, нажав на галочку. Спасибо. – WestLangley

Смежные вопросы