4 साल पुराना धागा, लेकिन मेरी समस्या को हल करते समय मैं इसके दौरान ठोकर खाई।
मुझे वर्तमान सीवी एप्लिकेशन में इस तरह की समस्या है। मैं सबसे बड़ी खोज के लिए एक सरल और कुछ हद तक बेकार समाधान के साथ आया था। बिल्कुल वही नहीं, क्योंकि मैं आयत के क्षेत्र को अधिकतम पक्ष के बिना अधिकतम कर देता हूं।
मुझे अभी तक पता नहीं है कि मेरे समाधान इष्टतम पाते हैं या यह सभी मामलों में काम करता है। मुझे यह भी लगता है कि एक और अधिक प्रभावी तरीका होना चाहिए, इसलिए मैं आपके इनपुट की प्रतीक्षा कर रहा हूं।
पहले, हमारे (उत्तल) चतुर्भुज के गठन 4 अंक का एक सेट मान:
x y
P1 -2 -5
P2 1 7
P3 4 5
P4 3 -2
इस प्रक्रिया के लिए सबसे बाईं ओर बिंदु P1 है, निम्नलिखित बातों दक्षिणावर्त गिने जा रहे हैं। यह इस तरह दिखता है:

हम तो अंक के बीच रैखिक कार्यों पैदा करते हैं। प्रत्येक समारोह के लिए हमें ढलान के और 0: डी से दूरी जाननी है। के एक्स में अंतर से विभाजित दो बिंदुओं में से वाई में अंतर है। डी को रैखिक फ़ंक्शन को डी द्वारा हल करके गणना की जा सकती है। तो हमारे पास
k=dy/dx
d=y1-k*x1
हम व्यस्त कार्यों को भी चाहते हैं।
k_inv = 1/k
d_inv = -d/k
अगर हम पूरी तरह से क्षैतिज या लम्बवत लाइनों हम कार्यों में से एक में एक DIV/0 के साथ खत्म होता था हम तो समारोह और चतुर्भुज
k d k d
p1p2 4 3 p1p2_inv 0.25 -0.75
p2p3 -0.67 7.67 p2p3_inv -1.5 11.5
p3p4 7 -23 p3p4_inv 0.14 3.29
p4p1 0.6 -3.8 p4p1_inv 1.67 6.33
के प्रत्येक पक्ष के लिए उलटा समारोह बनाने या उलटा कार्य, इस प्रकार हमें इस मामले को अलग से संभालना होगा।
अब हम उन सभी कोनों से गुजरते हैं जो दो कार्यों से घिरे होते हैं जिनके पास एक अलग चिह्न के साथ ढलान होता है। हमारे मामले में यह पी 2 और पी 3 होगा।
हम पी 2 से शुरू होते हैं और पी 2 और पी 3 के बीच वाई मानों के माध्यम से एक उचित चरण आकार के साथ पुनरावृत्ति करते हैं और क्षैतिज दिशा में कार्यों के बीच की दूरी की गणना करने के लिए व्यस्त कार्यों का उपयोग करते हैं। यह हमें आयत
a=p2p3_inv(y)-p1p2_inv(y)
दो एक्स मूल्यों एक्स = p2p3_inv (y) पर और एक्स = p1p2_inv (y) हम तो दो विपरीत कार्यों के लिए y में अंतर की गणना और दूरी लेने के एक तरफ देना होगा हमारे आयताकार के दूसरे पक्ष के लिए उम्मीदवार के रूप में हमारी वर्तमान स्थिति में।
b_candidate_1 = y-p4p1(p2p3_inv(y))
b_candidate_2 = y-p4p1(p1p2_inv(y))
b_candidate_3 = y-P3p4(p2p3_inv(y))
b_candidate_4 = y-P3p4(p1p2_inv(y))
चार पैरामीटर में से कम पक्ष बी के लिए समाधान होगा। क्षेत्र स्पष्ट रूप से * बी बन जाता है।
मैं प्रदर्शित करने के लिए एक्सेल में एक त्वरित उदाहरण किया:

यहाँ ख न्यूनतम 6.9 है, तो समाधान के ऊपरी दाहिने कोने p2p3 पर है और आयत क्षैतिज और ख में एक फैली क्रमशः बाएं और नीचे लंबवत दिशा में। आयत के
चार अंक इस प्रकार हैं
Rect x y
R1 0.65 -1.3
R2 0.65 5.6
R3 3.1 5.6
R4 3.1 -1.3

मैं सी ++ में कोड इस डाल करने के लिए है और यदि समाधान सामान्यीकरण करता देखने के लिए कुछ परीक्षण चलाता है, या अगर यह सिर्फ था होगा "भाग्य"।
मुझे लगता है कि कार्यों में ए = ए * बी में ए और बी को प्रतिस्थापित करना भी संभव होना चाहिए और इसे एक रैखिक सूत्र में डाल देना चाहिए जिसे इस स्थिति के तहत अधिकतम किया जाना चाहिए कि पी 1 पी 2 केवल पी 1 और पी 2 आदि के बीच परिभाषित किया गया है। ...
पुन। सर्कल: आप क्वाड्रैंगल को कट ऑफ त्रिकोण के रूप में देख सकते हैं। अर्थात। चतुर्भुज के प्रत्येक किनारे के लिए, जब तक वे मिलते हैं, आसन्न किनारों को लंबे समय तक बना दें। अपने नए त्रिकोण में एक सर्कल डालें। जांचें कि यह आपके मूल चतुर्भुज में फिट बैठता है या नहीं। इस प्रकार प्राप्त सबसे बड़ा सर्कल इष्टतम होना चाहिए। जाहिर है आपको समानांतर किनारों के साथ अलग-अलग चतुर्भुज का ख्याल रखना होगा। – toochin
यदि आप उत्तल क्वाड और जिनके सेगमेंट ओवरलैप करते हैं, तो आपको किसी भी मनमाना चतुर्भुज के साथ मुश्किल समय हो सकता है। क्या आपका मतलब किसी भी मनमानी * उत्तल * चतुर्भुज है? –
आयताकार भी घुमाया जा सकता है, या क्या इसे "क्षैतिज" के समानांतर होना चाहिए? – kohlehydrat