कन्वेक्स पॉलीगॉन
एक कन्वेक्स पॉलीगॉन को एक पॉलीगॉन के रूप में परिभाषित किया गया है जिसके सभी आंतरिक कोण 180° से कम हों।
समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो निर्देशांकों की एक सरणी लेता है, मूल रूप से सरणी सरणियों की एक सरणी होगी जिसमें प्रत्येक उपसरणी में ठीक दो संख्याएं होंगी, जो 2-D प्लेन पर एक बिंदु निर्दिष्ट करती हैं।
हमारे फ़ंक्शन को यह निर्धारित करना चाहिए कि इन बिंदुओं द्वारा बनाया गया पॉलीगॉन एक कन्वेक्स पॉलीगॉन है या नहीं। यदि हां, तो फ़ंक्शन true वापस करे, अन्यथा false।
उदाहरण
यदि फ़ंक्शन का इनपुट है:
const arr = [[0,0],[0,1],[1,1],[1,0]];
तो आउटपुट होना चाहिए:
const output = true;
आउटपुट व्याख्या:
ये बिंदु एक पूर्ण वर्ग बनाएंगे जिसमें सभी शीर्षों का आंतरिक कोण 90 होगा।
कोड
const arr = [[0,0],[0,1],[1,1],[1,0]]; const isConvex = (arr = []) => { const { length } = arr; let pre = 0, curr = 0; for (let i = 0; i < length; ++i) { let dx1 = arr[(i + 1) % length][0] - arr[i][0]; let dx2 = arr[(i + 2) % length][0] - arr[(i + 1) % length][0]; let dy1 = arr[(i + 1) % length][1] - arr[i][1]; let dy2 = arr[(i + 2) % length][1] - arr[(i + 1) % length][1]; curr = dx1 * dy2 - dx2 * dy1; if (curr != 0) { if ((curr > 0 && pre < 0) || (curr < 0 && pre > 0)) return false; else pre = curr; }; }; return true; }; console.log(isConvex(arr));आउटपुट
कंसोल में आउटपुट होगा:
true