2014-01-28 4 views
0

У меня есть точки, как это:Draw дуги внутри полилинии Three.js

"POLYLINE":[[ 
     {"x":"-6094.1665707632401","y":"3074.764386330728","r":""}, 
     {"x":"-699.22595358468595","y":"1099.941236568309","r":""},     
     {"x":"-4940.397089330264","y":"576.87996358328382","r":""}, 
     {"x":"-1329.5259580814709","y":"3149.4874087018579","r":"0.5163456475719181"}, 
     {"x":"-6094.1665707632401","y":"3074.764386330728","r":""} 
    ]] 

где х у являются вершинами полилинии и г-радиус, если он является дугой. я могу управлять чертежу то, если это не будет возможно, но я должен был бы прыгнуть мимо дуги в сценарии

function DRAWpline(vert){ 
      vert = JSON.parse(vert); 
      var material = new THREE.LineBasicMaterial({ 
       color: 0x0000ff 
      }); 
      var geometry = new THREE.Geometry(); 

      for (var i = 0; i < vert.length; i++) {  
       if(vert[i]['r'] != ""){ 
        geometry.vertices.push(new THREE.Vector3(vert[i]['x'], vert[i]['y'], 0)); 
       } else { 

       } 
      } 

      var line = new THREE.Line(geometry, material); 



      scene.add(line); 
     } 

ответ

1

Что-то вроде этого, может сделать работу:

var p0 = new THREE.Vector3(vert[i]['x'], 0, 0); 
var p1 = new THREE.Vector3(vert[i]['x'], vert[i]['y'], 0); 
var p2 = new THREE.Vector3(vert[i+1]['x'], vert[i+1]['y'], 0); 
var startAngle = Math.acos(p0.dot(p1)/(p0.length()*p1.length())); 
var angle = Math.acos(p1.dot(p2)/(p1.length()*p2.length())); 
geometry = new THREE.CircleGeometry(radius, nbSegments, startAngle, angle); 
// remove center vertex 
geometry.vertices.splice(0,1); 

Добавить чек на vert [i + 1] выходит до вычисления p2

+0

Oups, после повторного чтения вашего сообщения. Думаю, я не понимаю вас. когда r определено X, Y - начальная точка дуги или центра дуги? Если это центр, мой код некорректен – Troopers

+0

Еще раз спасибо за бутон! Я никогда не занимался математическими занятиями, и я бросил, поэтому у меня очень тяжело с этим триггером, а что нет. Я закончил тем, что использовал функцию для объединения геометрии. – contehhh

+0

Эй вы не можете проверить этот код? я реализовал его, и он помещает дуги в исходное положение – contehhh

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