एक नियमित, गैर-पक्षीय बहुभुज के कोनों के निर्माण के लिए एल्गोरिदम


10

मैंने बहुत सारे कीवर्ड संयोजनों का उपयोग करके इसे गुमराह किया है, लेकिन अपने महान आश्चर्य के लिए मैं एक दिए गए सर्कल में एक नियमित, एन-साइडेड बहुभुज के निर्माण के लिए एक एल्गोरिथ्म नहीं ढूंढ सका, अर्थात, एन कोने बिंदुओं के लिए निर्देशांक ढूंढ रहा हूं । सभी मैं पा सकते थे कि यह निर्देश कैसे शारीरिक कम्पास और स्ट्रेटेज द्वारा किया जाता है, या बिना स्रोत के इंटरेक्टिव ब्राउज़र प्लग-इन।

तो मुझे ऐसा एल्गोरिथ्म कहां मिल सकता है?


2
मुझे Google में अपना विश्वास बहाल करने दें। ;-) "एल्गोरिथ्म रेगुलर पॉलीगॉन" के लिए चौथा हिट: gamedev.net/topic/… "फिर, बुनियादी त्रिकोणमिति का उपयोग करते हुए, सर्कल के परिधि के चारों ओर समान रूप से n बिंदुओं को चुना (यानी - यदि n 3 है, तो उस पर दो अंक चुने गए परिधि जो एक दूसरे से 120 डिग्री अलग है)। " जो बिलकुल केविन का कोड करता है।
एरिक

जवाबों:


15

समावेशी iहोने के साथ 0 to n-1:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

संपादित करें: जैसा कि लार्स विकलुंड ने टिप्पणियों में उल्लेख किया है, यह केवल जावास्क्रिप्ट जैसी भाषाओं में सुरक्षित है जिसमें पूर्णांक विभाजन एक पूर्णांक के बजाय एक अस्थायी बिंदु संख्या देता है। अन्य भाषाओं में आपको पहले iएक फ्लोट के लिए कास्ट करना चाहिए ।


3
उन भाषाओं में i / n में अभिन्न विभाजन के जाल से बचें जहां पूर्णांक विभाजित करने से एक पूर्णांक प्राप्त होता है।
लार्स विकलुंड

आह एक बहुत अच्छी बात है, मैं जवाब में उस चेतावनी को जोड़ूंगा।
एल्वा

यह बिना कहे चला जाता है, लेकिन आप उस मामले से भी बचना चाहेंगे, जहां n * 2 * PI == 0आप एक या एक दुखी बहुभुज होंगे :(!
ज़ैक द ह्यूमन

अजीब बात है n * 2 * PI == 0कि मैं सोच सकता है कि केवल 0 के साथ उलटा है, जो जहाँ तक मुझे पता है अपरिभाषित है, उसी के रूप में i / 0. तो कोई समस्या नहीं है? :)
एल्वा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.