2015-03-31 53 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中,所以我可以定位整個團隊,但目前似乎沒有任何工作