दो बिंदुओं के साथ आयतों को परिभाषित करने के पीछे क्या विचार है? [बन्द है]


15

ऐसा नहीं है कि इसका कोई मतलब नहीं है, लेकिन यह सिर्फ 99% समय के लिए अजीब काम करता है।

अक्सर 2 डी ग्राफिक्स आयतों में एक जोड़ी के रूप में आरंभीकृत, संग्रहीत और हेरफेर किया जाता है। किसी विशेष भाषा में नहीं,

class Rect:
   p1, p2: point

आयत को दो x मानों और दो y मानों के रूप में परिभाषित करने के लिए यह अधिक समझ में आता है:

class Rect
   xleft, xright: int
   ytop, ybottom: int

दो बिंदुओं के साथ, यदि स्रोत कोड के किसी स्थान पर आप शीर्ष के y मान का उपयोग करना चाहते हैं, तो आपको rect.p1.y (hmmm, रोक और सोचना होगा, क्या यह p1 या P2 है) लेकिन सादे डेटा सदस्यों के रूप में चार मूल्यों के साथ, यह स्पष्ट और प्रत्यक्ष है: rect.ytop (कोई सोच की आवश्यकता नहीं है!) दो बिंदुओं के उपयोग का मतलब है कि ऊर्ध्वाधर के साथ निपटने में, आपको क्षैतिज उलझन करना होगा; अदम्य तत्वों के बीच एक बाहरी संबंध है।

यह दो-बिंदु विचार कैसे आया और यह क्यों कायम है? क्या इसका नंगे x और y निर्देशांक पर कुछ लाभ है?

एडेड नोट: यह प्रश्न XY संरेखित आयतों के संदर्भ में है, जैसे कि विंडोज़ प्रबंधकों और जीयूआई टूलकिट्स में, न कि ड्राइंग और पेंटिंग ऐप में मनमाने आकार के संदर्भ में।


8
क्या आपने Rect का उपयोग करते हुए पर्याप्त मात्रा में कोड लिखा है?

6
एक आयत को दो बिंदुओं द्वारा परिभाषित किया गया है, इसलिए उन्हें दो बिंदुओं के रूप में प्रस्तुत करना बहुत मायने रखता है।
एडम क्रॉसलैंड

2
आयत को x मानों की श्रेणी और y मानों की श्रेणी के रूप में अधिक स्वाभाविक रूप से परिभाषित किया गया है।
डैरनडब्ल्यू

2
बड़ा अच्छा सवाल! मैंने खुद इसके बारे में कभी नहीं सोचा, लेकिन आप एक दिलचस्प तर्क देते हैं! FWIW, Windows का एक RECT है जैसा आप वर्णन करते हैं (ऊपर, बाएं, नीचे, दाएं)
डीन हार्डिंग

3
आप दो बिंदुओं के साथ एक आयत को कैसे परिभाषित करते हैं? क्या यह माना जाता है कि कोई रोटेशन नहीं है?
निक टी

जवाबों:


8

क्या आपने माना है कि यह कम त्रुटि वाला है?

यदि आप (Point1, Point2) का उपयोग करते हैं तो यह बहुत स्पष्ट है कि आप क्या निर्दिष्ट कर रहे हैं। यदि आप 2 अंक प्रदान करते हैं, तो एकमात्र संभावित त्रुटि यह है कि अंकों के निर्माण के दौरान उपयोगकर्ता ने अपने x और y को मिलाया है क्योंकि अंकों का क्रम मायने नहीं रखता है।

यदि आप 4 पूर्णांक की आपूर्ति करते हैं, तो यदि कोई ध्यान नहीं दे रहा है, तो जब आप चाहते थे (X1, y1, x2, y2) या इसके विपरीत, वे आपूर्ति कर सकते हैं (X1, x2, y1, y2) या इसके विपरीत। इसके अलावा, कुछ एपीआई जैसे कि WCF के रेक्ट स्ट्रक्चर (x, y, चौड़ाई, ऊंचाई) के रूप में एक आयत को परिभाषित करते हैं जो तब (1, 2, 3, 4) साधनों पर भ्रम पैदा कर सकता है। क्या वह (x, y, w, h) या (X1, y1, x2, y2) या (X1, x2, y1, y2) है?

सब सब में, (प्वाइंट 1, प्वाइंट 2) मुझे थोड़ा सुरक्षित लगता है।


3
Rect (xrange (X1, x2), yrange (y1, y2) जैसे कुछ के बारे में क्या? यह एपीआई उपयोग सुरक्षा और लालित्य में अंतिम लगता है।
डेरेनडब्ल्यू

9

मुझे हमेशा एक आयत को बिंदु + चौड़ाई और ऊंचाई के रूप में परिभाषित करना पसंद था, जहां बिंदु आयत के ऊपरी-बाएँ कोने है।

class Rect {
  float x, y;
  float width, height;
}

और फिर अन्य मेट्रिक्स लाने के लिए आपको जो भी तरीके की आवश्यकता है उसे जोड़ें। जैसा जावा संस्करण


4
क्या शीर्ष y + ऊँचाई, y- ऊँचाई या सिर्फ y है?
कैमरन मैकफारलैंड

2
@Cameron MacFarland: यह अनुप्रयोग के समन्वय प्रणाली पर निर्भर करता है, जो एक नीच आयत की कोई चिंता नहीं है।
जॉन प्यूरी

2
@ मर्टिन विकमैन: 2 अंकों का उपयोग करने पर क्या फायदा है?
क्रामि

@Kramii: एक फायदा यह है कि अगर आप पूरी रीति से चल रहे हैं तो केवल एक बिंदु का ही अनुवाद करना है। Btw, आप हमेशा "लापता बिंदु" की गणना कर सकते हैं यदि आपको इसकी आवश्यकता है (सीपीयू / मेमोरी ट्रेडऑफ़)।
मार्टिन विकमैन

यह वास्तविक जीवन में भी दिखाई देता है। मुझे लगता है कि यह सबसे आम चीजों में से एक है जिसे मैं आयतों के साथ परीक्षण करता हूं अगर एक बिंदु भीतर समाहित है। ड्राइंग भी आम है। दोनों मामलों में इसके अतिरिक्त प्रदर्शन करने की आवश्यकता है, जो मेरे जैसे उच्च प्रदर्शन घड़ी चक्र काउंटर को परेशान करता है।
४६ पर डैरेन डब्ल्यू

7

दरअसल, एक आयत 2 बिंदुओं द्वारा परिभाषित नहीं है। एक आयत को केवल दो बिंदुओं द्वारा परिभाषित किया जा सकता है यदि यह कुल्हाड़ियों के समानांतर है।

आयतों का प्रतिनिधित्व करने के कई तरीके हैं जो कुल्हाड़ियों के समानांतर हैं:

  1. दो तिरछे विपरीत बिंदु
  2. एक कोने बिंदु, ऊंचाई और चौड़ाई
  3. केंद्र बिंदु, आधी ऊंचाई और चौड़ाई (असामान्य, लेकिन कभी-कभी उपयोगी)।
  4. दो एक्स निर्देशांक और दो वाई निर्देशांक के रूप में

(1) के लिए, कई पुस्तकालय यह निर्धारित करने के लिए एक कन्वेंशन का उपयोग करते हैं कि दो बिंदुओं का उपयोग किया जाता है - उदाहरण के लिए टॉपलेट और बॉटम राइट।

प्रतिनिधित्व का विकल्प आयत परिभाषा के मूल उद्देश्य से संचालित हो सकता है, लेकिन मुझे लगता है कि यह अक्सर मनमाना होता है । अभ्यावेदन वे ले जाने वाली जानकारी के बराबर हैं। हालांकि, वे आसानी से भिन्न होते हैं, जिसके साथ आयत के गुणों की गणना की जा सकती है और सुविधा जिसके साथ संचालन को पुन: व्यवस्थित किया जा सकता है।

दूसरों पर परिभाषा (1) के लाभों में शामिल हैं:

  • अन्य बहुभुज, लाइनों आदि के साथ एपीआई की संगति।
  • topLeft, bottomRight को किसी भी तरीके से पारित किया जा सकता है जो अंक स्वीकार करता है
  • पॉइंट क्लास के तरीकों को टॉपलाइट, बॉटम राइट पर बुलाया जा सकता है
  • अधिकांश गुण आसानी से प्राप्त किए जा सकते हैं, जैसे। bottomLeft, topRight, चौड़ाई, ऊंचाई, केंद्र, विकर्ण लंबाई, आदि

6

वैसे भी p1: Pointऔर p2: Pointउनमें से प्रत्येक में दो intनिर्देशांक होने जा रहे हैं , तो क्या आपकी कक्षा एक ही चीज़ के लिए नहीं है?

और अगर आप उन दो बिंदुओं को प्रथम श्रेणी की Pointवस्तुओं के रूप में संग्रहीत करते हैं, तो क्या आपको उनसे थोड़ी अधिक उपयोगिता नहीं मिलती है? अधिकांश ग्राफ़िकल समन्वय प्रणालियों में, जिनके बारे में मुझे पता है, वस्तुओं के पदानुक्रम बनाने के लिए अंक इस तरह से उप-वर्गित होते हैं: point -> circle -> ellipseऔर इसी तरह।

इसलिए यदि आप एक ऐसी वस्तु बनाते हैं जो Pointकक्षा का उपयोग नहीं करती है , तो आपने उस वस्तु को बाकी वर्ग पदानुक्रम से तलाक दे दिया है।


1
ओपी के प्रतिनिधित्व का मैं जो लाभ देख रहा हूं वह यह है कि यदि आप किसी आयत के निम्न y मान को जानना चाहते हैं, तो आप जानते हैं कि यह "ybottom" है, जहां p1 / P2 के साथ आपको यह पता लगाने की आवश्यकता है कि कौन सा कम है। यह तब तक है जब तक आप गारंटी नहीं देते हैं कि पी 1 कम मूल्य है, वैसे भी।
जेसन वियर्स

1
हालांकि यह सच है कि दो अलग-अलग संरचनाएं दोनों चार निर्देशांक तक उबालती हैं, दो-अंक संस्करण एक बाहरी स्तर का परिचय देता है जो एक x और एक y को इकट्ठा करता है, जिसमें कोई विशेष तर्क नहीं है कि x किस y के साथ जाता है। ग्राफिक्स प्रोग्रामिंग के कई वर्षों के बाद मैं इस अतिरिक्त स्तर को किसी भी उपयोगिता प्रदान करने के रूप में नहीं देखता।
डैरनडब्ल्यू

1
@ जेसन: अच्छी बात है। साथ ytop/ ybottomदृष्टिकोण, हालांकि, वहाँ भी एक गारंटी कहीं कि अवश्य होना चाहिए कि ybottomवास्तव में नीचे है ytop
डॉ। विली के अपरेंटिस

या उन्हें 'y y1 और y2' कहें, और min (y1, y2) और अधिकतम (y1, y2) का उपयोग करें - बेशक जो दो बिंदुओं p1, P2 के माध्यम से पहुंच से भी अधिक अनाड़ी होगा।
४। पर डैरेन डब्ल्यू

शीर्ष / नीचे का नामकरण आपको कुछ भी नहीं खरीदता है क्योंकि कुछ भी विशेष रूप से बॉटम <Topx को रोकता है, जब तक कि आप विशेष रूप से उसके लिए कोड नहीं बनाते हैं। मुझे लगता है कि यह सिर्फ भ्रम को जोड़ देगा।
किलोग्राम

5

यही कारण है कि मुझे डेल्फी पसंद है TRect। इसे एक वेरिएंट रिकॉर्ड (सी-स्पीक में संघ संरचना) के रूप में परिभाषित किया गया है, जिसकी व्याख्या या तो टॉपलैफ्ट और बॉटम राइट पॉइंट या टॉप, लेफ्ट, बॉटम और राइट पूर्णांकों के रूप में की जा सकती है, जो भी इस समय अधिक सुविधाजनक है।


1
ऐ, बहुत उपयोगी विशेषता है कि।
परिक्रमा

4

निश्चित रूप से यदि आप अपनी आयत को इस प्रकार परिभाषित करते हैं:

class Rect
{
    Point bottomLeft;
    Point topRight;
}

तो आप सीधे जानते हैं कि कौन सा बिंदु है।

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

आकार में परिवर्तन जोड़कर आप अपनी आयत को किसी भी तरह से उन्मुख कर सकते हैं। तुम अब भी एक अक्ष की आवश्यकता होगी त्वरित स्वीकार / अस्वीकार की जाँच के लिए बाउंडिंग गठबंधन बॉक्स :)

हालाँकि, यदि आपका मॉडल बिना किसी परिवर्तन को लागू किए बिना किसी भी अभिविन्यास में आयतों की अनुमति देता है तो "नीचे बाएँ" और "शीर्ष दाएं" का कोई अर्थ नहीं है, जो "p1" और "P2" (या कुछ समतुल्य) की ओर जाता है।


तो क्या होता है जब आप आयत को 90 डिग्री तक घुमाते हैं? क्या अब आप शुरू में दो अलग-अलग बिंदुओं पर नज़र रख रहे हैं, या "बॉटमलाइट" के बाईं ओर अब आपका "टॉप राइट" है?
inaimathi

@ इमानाथी - यदि आप एक परिवर्तन मैट्रिक्स जोड़ते हैं, तो आप आयत को कुल्हाड़ियों के साथ उन्मुख कर सकते हैं। हालाँकि, यह आपके आवेदन पर निर्भर करता है।
ChrisF

2

मुझे लगता है कि यह एक आयत के लिए एक एक्स और वाई हद और एक बिंदु द्वारा प्रतिनिधित्व करने के लिए अधिक समझ में आता है; आप स्थान को आयत का केंद्र भी बना सकते हैं ताकि यह रोटेशन से स्वतंत्र हो

लेकिन इसे दो बिंदुओं के रूप में कोड करना सबसे आसान था!


दो बिंदुओं के रूप में कोड करना आसान कैसे होगा?
डारेनडब्ल्यू

@DaremW: ठेठ ड्रॉ-रेक्टेंगल लाइब्रेरी फ़ंक्शंस ऊपरी-बाएँ और निचले-दाएं बिंदुओं को तर्क के रूप में लेते हैं
स्टीवन ए। लोवे

लेकिन उन एपीआई को इस तरह से क्यों बनाया गया है? इसके अलावा नासमझ पहले के पुस्तकालयों की नकल कर रहे हैं।
डैरन डब्ल्यू

@ डेरेनव: मेरा अनुमान है कि पुस्तकालय एक ब्रेसेनहैम लाइन-ड्रॉइंग रूटीन का उपयोग करते हैं, जो इनपुट के रूप में दो अंक लेता है और बहुत कुशल होता है
स्टीवन ए। लोव

2

मुझे यह पसंद नहीं है क्योंकि हमने स्वतंत्रता की एक संभावित डिग्री को फेंक दिया है, जो अनिवार्य रूप से एक मनमाना रोटेशन की अनुमति देता है। एक सामान्य 2 डी आयत में पांच अज्ञात (स्वतंत्रता की डिग्री) हैं। हम उन्हें एक बिंदु के निर्देशांक के रूप में निर्दिष्ट कर सकते हैं, दो पक्षों की लंबाई जो इस बिंदु के साथ एक शीर्ष बनाते हैं, और पहली पंक्ति के क्षैतिज से कोण (दूसरे को एक कोण 90 डिग्री से अधिक माना जाता है)। अन्य संभावनाओं की एक अनंत संख्या का भी उपयोग किया जा सकता है, लेकिन पांच स्वतंत्र मात्राएं हैं जिन्हें निर्दिष्ट किया जाना चाहिए। कुछ विकल्प दूसरों की तुलना में आसान बीजगणित को बढ़ावा देंगे, जो उनके साथ किया जाता है पर निर्भर करता है।


5
यह महसूस करना महत्वपूर्ण है कि एक "मानक" आयत संरचना एक कठोर-परिभाषित गणितीय आयत नहीं है, लेकिन एक सरलीकृत संस्करण है जो हमेशा एक्स और वाई अक्षों के समानांतर होता है, क्योंकि यह एक बहुत ही विशिष्ट चीज़ के लिए इस्तेमाल होने के लिए बनाया गया था: आयताकार क्षेत्रों को परिभाषित करना। एक विंडो मैनेजर के लिए, जो हमेशा (लगभग) एक्स और वाई अक्षों के समानांतर होता है।
मेसन व्हीलर

+1, बाएँ / दाएँ / ऊपर / नीचे संरचना को निर्धारित किया गया है, और इसलिए इसकी कम जानकारी है
जेवियर

अच्छी बात है, xy के बारे में आयतें संरेखित करें। मेरे मन में था कि, और 3 डी मॉडलिंग, और कुछ अन्य चीजों में भी इस्तेमाल किया जाता है, लेकिन सभी xy (शायद -z) भी संरेखित हैं।
डैरन डब्ल्यू

1

2 अंक के रूप में बिल्कुल वैसा ही नहीं है? यह कैसा अजीब है ... अधिकांश ड्राइंग रूटीन को अंक की आवश्यकता होती है, अलग एक्स / वाई घटकों की नहीं।


1

बिंदु जोड़े के रूप में आयतों को परिभाषित करना आपको बिंदु को एक और आकार के लिए एक शीर्ष के रूप में पुन: उपयोग करने की अनुमति देता है। सिर्फ एक विचार...


लेकिन ऐसा लगता है कि आधे डेक के साथ खेलना, चार-कोनों के आकार को परिभाषित करने के लिए केवल दो अंक रखना है। अगर आपको टॉप-लेफ्ट, कूल की जरूरत है, लेकिन अगर आपको टॉप-राइट की जरूरत है, तो आपको कुछ फैंसी डेटा हथियाने, अपेक्षाकृत कम बोलने होंगे।
डैरेन डब्ल्यू

अगर वहाँ एक एक्सेसर है जिसे बिंदु AX बिंदु BY और बिंदु BX बिंदु AY के रूप में परिभाषित किया जाता है, तो यह स्मृति में हल्का हो जाता है / डिस्क पर मैं आधे को कई शीर्षों के रूप में संग्रहीत करने के लिए सोचता हूं और बस उन्हें इंगित करता हूं (अधिकतम ग्रिड आकार के आधार पर)। मुझे लगता है कि आप अपनी सीमा के साथ कहाँ जा रहे हैं, सोचा था, लेकिन आप आधे डेक के साथ नहीं खेल रहे हैं, आप सिर्फ डुप्लिकेट डेटा संग्रहीत नहीं कर रहे हैं .... और किए जाने वाले अन्य बिंदु मेमोरी बाधाएं हैं? सभी इंटरकनेक्टेड कोड में री-इम्प्लिमेंटेशन रिटूलिंग रेक्ट्स क्या हैं।
रोबॉटहैंस

और जब से आपको मेमोरी से बाहर आने के लिए पहले दो
शीर्षकों

1

मेरा मानना ​​है कि यह मुख्य रूप से सभी आकार की प्राथमिकताओं के बीच एकरूपता स्थापित करना है।

सुनिश्चित करें कि आप आयत को कई अलग-अलग तरीकों से परिभाषित कर सकते हैं, लेकिन आप एक त्रिकोण, या एक स्टार, या एक सर्कल को एक तरह से कैसे परिभाषित करते हैं जो समान डेटा संरचनाओं का उपयोग कर सकते हैं?

सभी बहुभुजों को उनके बिंदुओं द्वारा परिभाषित किया जा सकता है, अंक के साथ क्या करना है यह निर्धारित करने के लिए तर्क की एक छोटी राशि।

ग्राफिक्स लाइब्रेरी मुख्य रूप से इन पॉलीगॉन पर वर्टिकल और किनारों के संदर्भ में काम करती हैं, इसलिए अंक और उनके बीच की रेखाएं, सभी गणना इन दो विशेषताओं, अच्छी तरह से और पहलुओं पर काम करती हैं, लेकिन यह केवल किनारों का एक फ़ंक्शन है।


1

दो आयामों में, एक आयत को दो बिंदुओं के रूप में संग्रहीत करना एक विशेष कोने और चौड़ाई और ऊंचाई को परिभाषित करने की तुलना में स्पष्ट है - नकारात्मक चौड़ाई या ऊँचाई, या दूसरे से प्रत्येक विकल्प को निर्धारित करने के लिए आवश्यक गणना पर विचार करें।

बिंदुओं द्वारा परिभाषित एक आयत पर घूर्णन निष्पादित करना एक बिंदु प्लस चौड़ाई और ऊंचाई के साथ परिभाषित की तुलना में बहुत सरल है।

मैं वर्ग के उपयोगकर्ता के रूप में इस भेदभाव को महत्वहीन बनाने के लिए इनकैप्सुलेशन की अपेक्षा करता हूँ।

एक आयत को तीन आयामों में अच्छी तरह से परिभाषित करने के लिए तीन बिंदुओं के रूप में परिभाषित किया जाना चाहिए। मैं आयत को 4 या अधिक आयामों में परिभाषित करने की आवश्यकता के बारे में पूरी तरह सुनिश्चित नहीं हूं।


1

यह पूरी तरह से मनमाना है। आयत बनाने के लिए आपको चार टुकड़ों की जानकारी चाहिए। लाइब्रेरी डिज़ाइनर (एस) ने इसे दो बिंदुओं (प्रत्येक के साथ एक xy समन्वय) का प्रतिनिधित्व करने का निर्णय लिया, लेकिन आसानी से इसे x / y / w / h या शीर्ष / नीचे / बाएं / दाएं के साथ किया जा सकता था।

मुझे लगता है कि ओपी का असली सवाल यह है: यह विशेष पसंद क्यों बनाया गया था?


1

मापदंडों का विकल्प केवल निम्न-स्तरीय डिजाइनरों / कोडर्स के लिए महत्वपूर्ण है।

उच्च-स्तरीय उपयोगकर्ताओं को केवल इसके बारे में सोचने की आवश्यकता है:

  • IsPointInRect
  • क्षेत्र
  • प्रतिच्छेदन (या कतरन)
  • हैसोवरलैप (समान रूप से। अंतर> 0)
  • संघ (आयतों की एक सूची बन जाती है)
  • घटाव (आयतों की एक सूची जो उसी बिंदु सेट का प्रतिनिधित्व करती है जो कि आयत A में है लेकिन आयत B में नहीं है)
  • परिवर्तन
    • एक्स और वाई में बदलाव
    • रोटेशन (0, 90, 180, 270)
    • X और Y में स्केलिंग (नोट देखें)
  • गुण Xmin, Xmax, Ymin, Ymax, Width, Height के लिए सरल वाक्यविन्यास ताकि उपयोगकर्ता को मापदंडों के सटीक विकल्प को जानने की आवश्यकता न हो।

नोट: स्केलिंग ट्रांसफ़ॉर्मेशन के दौरान परिशुद्धता के नुकसान को कम करने के लिए, कभी-कभी फ़्लोट-पॉइंट निर्देशांक का उपयोग करने वाले दूसरे Rect क्लास को लागू करना उचित होता है, ताकि ट्रांसफ़ॉर्मेशन के अनुक्रम में मध्यवर्ती परिणामों को सटीक रूप से संग्रहीत किया जा सके और केवल पूर्णांक तक पूर्णांक बनाया जा सके। अंतिम चरण।


0

जैसा @Steven कहता है, मुझे लगता है कि यह एक (x, y) बिंदु और a (w, h) आकार के वेक्टर के संदर्भ में होना चाहिए। ऐसा इसलिए है क्योंकि एक अस्पष्टता में गिरना आसान है। मान लीजिए कि आपके पास बिंदु (0,0) से शुरू होने वाले निम्नलिखित भरे हुए आयत हैं।

  012
0 XXX
1 XXX
2 XXX

स्पष्ट रूप से इसकी चौड़ाई, ऊंचाई (3,3) है, लेकिन यह दूसरा बिंदु क्या है? क्या यह (२,२) या (३,३) है?

यह अस्पष्टता सभी प्रकार की समस्याओं का कारण बन सकती है।

मैंने वर्षों पहले कठिन तरीका सीखा था कि यह पिक्सेल के बीच की रेखाओं के रूप में ग्राफिक निर्देशांक के बारे में सोचना बेहतर है , न कि उन रेखाओं पर जो पिक्सेल चालू हैं । इस तरह कोई अस्पष्टता नहीं है।


2
मैक (1980 के दशक से) पर मूल क्विकड्राव दिनचर्या गणितीय मॉडल का उपयोग करती थी जो अंक असीम रूप से छोटे थे। स्क्रीन पर बिंदु पिक्सेल के बीच स्थित होते हैं। तो (3,5) से (10,5) तक खींची गई एक लाइन की लंबाई 7 और 7 पिक्सल पर कब्जा था। आज के निर्देशांक में, उस रेखा की लंबाई 8.34 होगी
बैरी ब्राउन

@ बैरी: यह समझ में आता है, क्योंकि यह XOR का बहुत उपयोग करता था, और यदि आप लाइनों को एक साथ जोड़ रहे हैं, तो आप चाहते हैं कि वे एक लापता पिक्सेल के बिना कनेक्ट हों जहां वे मिलते हैं। मैंने वास्तव में दोनों समन्वय प्रणालियों पर विचार करते हुए बहुभुज भरने पर एक सिग्राफ पेपर प्रकाशित किया।
माइक डनलैवी

0
Pa(x,y)*-----------------------------------*Pb(x,y)
       |                                   |
       |                                   |
       |                                   |
       |                                   |
       |                                   |
       |                                   |
Pc(x,y)*-----------------------------------*Pd(x,y)

हम इस प्रकार Pb और Pc दोनों को परिभाषित कर सकते हैं:

Pb (पीडी (एक्स), पा (y))

तथा

पीसी (Pa (x), पीडी (y))

इसलिए समरूपता के कारण सभी चार बिंदुओं को परिभाषित करने की आवश्यकता नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.