मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का क्षेत्रफल ज्ञात करना है।
इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 15 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को परिभाषित करें getInfo() । इसमें x1, y1, x2, y2 लगेगा
- X1*y2 - y1*x2 लौटाएं
- मुख्य विधि से, निम्न कार्य करें
- N :=अंकों का आकार
- (फर्स्टएक्स, फर्स्टी):=पॉइंट्स[0]
- (prevx, prevy) :=(फर्स्टएक्स, फर्स्टी)
- res :=0
- 1 से N-1 की श्रेणी के लिए, करें
- (nextx, nexty):=अंक[i]
- res :=res + getInfo(prevx, prevy, nextx, nexty)
- prevx :=nextx
- पिछला :=अगला
- res :=res + getInfo(prevx, prevy, firstx, firsty)
- रिटर्न |res| / 2.0
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def getInfo(x1, y1, x2, y2): return x1*y2 - y1*x2 def solve(points): N = len(points) firstx, firsty = points[0] prevx, prevy = firstx, firsty res = 0 for i in range(1, N): nextx, nexty = points[i] res = res + getInfo(prevx,prevy,nextx,nexty) prevx = nextx prevy = nexty res = res + getInfo(prevx,prevy,firstx,firsty) return abs(res)/2.0 points = [(0, 0), (0,5), (3, 5), (3,0)] print(solve(points))
इनपुट
[(0, 0), (0,5), (3, 5), (3,0)]
आउटपुट
15.0