2013-08-29 7 views
5

के साथ एक नियमित बहुभुज उत्पन्न करना मैं नियमित रूप से नियमित एन -gon उपयोगकर्ता द्वारा प्रदत्त पक्षों के आधार पर नियमित रूप से उत्पन्न करने के लिए तीन.जेएस का उपयोग कर रहा हूं। दीर्घकालिक लक्ष्य इसे पॉलीहेड्रल प्रिज्म को प्रस्तुत करने में पहला कदम है।थ्री.जेएस

मैं here पर एन -gon के शीर्षकों की गणना करने के लिए समाधान का उपयोग कर रहा हूं।

मैं एन -gon पर चेहरे उत्पन्न करने के लिए here पर चर्चा की गई तकनीक का उपयोग कर रहा हूं।

मेरी पहली आवश्यक ज्यामिति वस्तु का उत्पादन करने के प्रयास के बाद, जो एक जाल में जोड़ा जा रहा करने के बाद कुछ भी प्रस्तुत करना प्रतीत नहीं होता है के परिणामस्वरूप:

function createGeometry (n, circumradius) { 

    var geometry = new THREE.Geometry(), 
     vertices = [], 
     faces = [], 
     x; 

    // Generate the vertices of the n-gon. 
    for (x = 1; x <= n; x++) { 
     geometry.vertices.push(new THREE.Vector3(
      circumradius * Math.sin((Math.PI/n) + (x * ((2 * Math.PI)/ n))), 
      circumradius * Math.cos((Math.PI/n) + (x * ((2 * Math.PI)/ n))), 
      0 
     )); 
    } 

    // Generate the faces of the n-gon. 
    for (x = 0; x < n-2; x++) { 
     geometry.faces.push(new THREE.Face3(0, x + 1, x + 2)); 
    } 

    geometry.computeBoundingSphere(); 

    return geometry; 
} 

लंबे समय के लिए है कि के साथ कर रही करने के बाद, मुझे पता चला आकार जीमेट्री कक्षा। यह ऊपर के उदाहरण के रूप में ही शिखर एल्गोरिथ्म का उपयोग करता है, लेकिन यह एक एक जाल में जोड़ा जा रहा करने के बाद सही प्रकार से प्रस्तुत:

function createShapeGeometry (n, circumradius) { 

    var shape = new THREE.Shape(), 
     vertices = [], 
     x; 

    // Calculate the vertices of the n-gon.     
    for (x = 1; x <= sides; x++) { 
     vertices.push([ 
      circumradius * Math.sin((Math.PI/n) + (x * ((2 * Math.PI)/ n))), 
      circumradius * Math.cos((Math.PI/n) + (x * ((2 * Math.PI)/ n))) 
     ]); 
    } 

    // Start at the last vertex.     
    shape.moveTo.apply(shape, vertices[sides - 1]); 

    // Connect each vertex to the next in sequential order. 
    for (x = 0; x < n; x++) { 
     shape.lineTo.apply(shape, vertices[x]); 
    } 

    // It's shape and bake... and I helped!   
    return new THREE.ShapeGeometry(shape); 
} 

क्या ज्यामिति उदाहरण के साथ गलत है कि है ShapeGeometry उदाहरण के साथ हल?

मुझे नहीं लगता कि यह कैमरा या स्थिति के साथ एक मुद्दा है क्योंकि सरल पूर्ण संख्याओं के साथ जटिल कशेरुक गणनाओं को प्रतिस्थापित करने के बिना एक पॉलीगॉन उत्पन्न होता है, बशर्ते मान समझ में आ जाए।

कारण मैं पूछ रहा हूं क्योंकि, जैसा कि मैंने शुरुआत में उल्लेख किया था, मैं अंततः पॉलीहेड्रॉन को प्रस्तुत करने में पहला कदम के रूप में इसका उपयोग करना चाहता हूं। आकार जीमेट्री ऑब्जेक्ट्स को गहराई देने के लिए निकाला जा सकता है, लेकिन तीन.जेएस उपलब्ध विकल्पों के साथ भी, यह लंबे समय तक मेरी जरूरतों के लिए पर्याप्त नहीं हो सकता है क्योंकि आवश्यक पॉलीहेड्रा अधिक अनियमित हो जाता है।

किसी भी विचार?

उत्तर

3

आपका कार्य अपेक्षित के रूप में काम करता है। इस बेला http://jsfiddle.net/Elephanter/mUah5/

there is a modified threejs fiddle with your createGeometry function 

पर

देखो तो तुम एक अन्य स्थान में समस्या है, नहीं createGeometry समारोह में

+1

दिलचस्प। मेरा पोस्ट-ज्यामिति कोड मूल रूप से थ्री.जेएस "प्रारंभ करना" ट्यूटोरियल का मुख्य उदाहरण है, इसलिए उस अर्थ में, यह आपके द्वारा प्रदान किए गए फिडल जैसा ही है। आपके द्वारा उपयोग किए जाने वाले निरंतर मानों को बदलने से मेरा मूल बहुभुज प्रकट होता है। आपकी सहायता के लिए धन्यवाद। – Eric

5

आप THREE.CylinderGeometry का उपयोग कर प्रिज्म बना सकते हैं; एक n तरफा चश्मे के लिए, आप इस्तेमाल कर सकते हैं

// radiusAtTop, radiusAtBottom, height, segmentsAroundRadius, segmentsAlongHeight 
var nPrism = new THREE.CylinderGeometry(30, 30, 80, n, 4); 

तुम भी पिरामिड और frustums बनाने के लिए CylinderGeometry उपयोग कर सकते हैं; बिल्ट-इन आकृतियों का अधिक उदाहरण के लिए, आप देख सकते हैं:

http://stemkoski.github.io/Three.js/Shapes.html

चूंकि आप की तरह आप अधिक सामान्य बहुकोणीय आकृति में रुचि हो सकती ध्वनि, आप भी बाहर की जाँच करने के लिए चाहते हो सकता है:

http://stemkoski.github.io/Three.js/Polyhedra.html

जिसमें प्लैटोनिक ठोस, आर्किमिडीयन सॉलिड्स, प्रिज्म, एंटीप्रिम्स, और जॉनसन सॉलिड्स के मॉडल शामिल हैं; हालांकि, उस कार्यक्रम में पॉलीहेड्रा किनारों के लिए शिखर और सिलेंडरों के लिए गोलाकारों का उपयोग करने से "मोटा" होता है।

आशा है कि इससे मदद मिलती है!

संबंधित मुद्दे