2015-03-31 50 views
0

我试图在环中安排10个球体。这是迄今为止我已经放在一起的计算,但它不起作用计算排列环中的球体

  var bubbleGeo = new THREE.SphereGeometry(300, 20, 20); 
      var bubbleMat = new THREE.MeshLambertMaterial({ color: 0x888888 }); 
      var numBubbles = 10; 
      var bubbleMesh; 
      var bubbles = []; 
      var startX = 0; 
      var startY = 500; 
      var spacing = 80 * Math.sin(angle); 
      for (var i=0; i<numBubbles; i++) { 
       bubbleMesh = new THREE.Mesh(bubbleGeo, bubbleMat); 
       console.log("bubble" + i); 
       var angle = 360/numBubbles*i*Math.PI/180; 
       bubbleMesh.position.set((startX + Math.cos(angle)*bubbleR) + spacing, 
             (startY + Math.sin(angle)*bubbleR) + spacing, 
             100 
             ); 
       scene.add(bubbleMesh); 
       bubbles.push(bubbleMesh); 
      } 

我对数学并不是很了解。如果有人确实看到我出错的地方,那么任何帮助都会非常困难。谢谢!

+0

那么究竟出了什么问题呢?你得到了什么结果,它与你预期的结果有什么不同? – 2015-03-31 20:20:03

+0

我无法理解你的角度变量。我想你在那里需要括号。此外,一个jsfiddle链接可能会有所帮助... – aarman 2015-03-31 21:06:32

+0

Woot嘿家伙感谢您的帖子。 什么问题是它没有显示。即使我已经能够解决这个问题你是对的,我应该发布一个这个项目的小提琴,因为它仍然有一段路要走。但现在,这是更正后的方程式: – 2015-04-04 20:09:59

回答

0
  var bubbleR = 400; 
      var bubbleGeo = new THREE.SphereGeometry(bubbleR, 10, 10); 
      var bubbleMat = new THREE.MeshLambertMaterial({ color: 0x888888 }); 
      var numBubbles = 5; 
      var bubbleMesh; 
      bubbles = []; 
      var startX = 1000; 
      var startZ = 1000; 
      for (var i=0; i<numBubbles; i++) { 
       bubbleMesh = new THREE.Mesh(bubbleGeo, bubbleMat); 
       var angle = 360/numBubbles*i*Math.PI/180; 
       bubbleMesh.position.set((startX + Math.sin(angle)*bubbleR) * 2, 
             1000, 
             startZ + (Math.cos(angle)*bubbleR) * 2 
       ); 
       scene.add(bubbleMesh); 
       bubbles.push(bubbleMesh);  
      } 

由于某些原因,如果我将循环后的数组添加到场景中,它不起作用。我也希望他们在一个新的THREE.group中,所以我可以定位整个团队,但目前似乎没有任何工作