कंप्यूटर ग्राफिक्स में मूल शीर्ष पर क्यों है?


36

मैंने जो देखा है उसमें से लगभग सभी चीजें निर्देशांक का उपयोग करती हैं, जहां (0, 0) शीर्ष बाईं ओर है और सकारात्मक Y- अक्ष आपकी स्क्रीन के नीचे की दिशा में जाता है।

यह इस तरह क्यों है? साधारण गणित की कक्षाओं में ग्राफ़िक्स में दिखाए गए पारंपरिक पॉज़िटिव Y- अक्ष ऊपर की तरफ क्यों नहीं?


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

3
मुझे लगता है कि भौतिक वस्तुओं को खींचते समय वाई + अप का मतलब है, क्योंकि जमीन आपकी उत्पत्ति है, और आपकी दुनिया का अधिकांश हिस्सा जमीन से ऊपर है। हालाँकि, प्रदर्शित करने के लिए, मैं परिकल्पना करता हूं कि यह इंडो-यूरोपियन भाषाओं के लिखे जाने के तरीके से संबंधित है।
पांडा पायजामा


4
OpenGL के सामान्यीकृत डिवाइस निर्देशांक में ऊपर की ओर Y अक्ष नहीं होता है?
रे

1
तो आप अनिवार्य रूप से पूछ रहे हैं "मूल की उत्पत्ति क्या है?"
केन

जवाबों:


42

यह इतिहास में हुआ है। प्रारंभिक कंप्यूटरों में कैथोड रे ट्यूब (CRT) थे जो ऊपरी बाएं कोने से निचले दाएं तरफ कैथोड किरण के साथ छवि को "आकर्षित" करते थे।

ग्राफिक्स कार्ड मेमोरी और सीआरटी के बीच इंटरफेस को कम करने के लिए मेमोरी को शुरुआत से पढ़ा गया था और छवि को ऊपर बाएं (सबसे कम मेमोरी पते के साथ) निचले दाएं (उच्चतम मेमोरी पते के साथ) से खींचा गया था।

एक्सटेंशन (टिप्पणियों के आधार पर)

CRT एनालॉग टीवी सेट पर आधारित होते हैं जो उस समय उपलब्ध थे।

टीवी सेट छवि रेखा को पहले बाएं से दाएं और फिर ऊपर से नीचे तक बनाते हैं । इसका कारण केवल पश्चिमी शैली में लेखन शैली के आधार पर माना जा सकता है।


7
ज़रूर, लेकिन सीआरटी शीर्ष बाएं (दर्शक से देखे गए) से क्यों आकर्षित होते हैं? खड़ी क्यों नहीं? दाएं से बाएं क्यों नहीं? नीचे से ऊपर तक क्यों नहीं?
पांडा पायजामा

1
आप यहाँ एक CRT की छवि निर्माण पा सकते हैं । मूल रूप से यह एनालॉग टेलीविज़न के लिए है, लेकिन कंप्यूटर के लिए CRT में समान तकनीक है।
उवे प्लोनस

12
@PandaPajama कंप्यूटर CRTs ऐसा इसलिए करते हैं क्योंकि यह एनालॉग टीवी मानकों का तरीका है, और शुरुआत में होम कंप्यूटर के लिए अक्सर टीवी का उपयोग विशेष मॉनिटर के बजाय किया जाता था। पहले टीवी ने इसे स्कैनलाइन में विभाजित करके और दाईं ओर बाईं ओर स्कैनलाइन को ड्राइंग करके जानकारी क्यों प्रेषित की - मुझे यकीन नहीं है, लेकिन यह हमारे लिखने के तरीके के अनुरूप होगा, ताकि मनमाने विकल्पों के बीच चयन करने के लिए एक अच्छा पर्याप्त कारण हो सके।
पीटरिस

2
@Peteris: जिस तरह से यूरोपीय लिखते हैं
मूविंग डक

1
तकनीकी रूप से, CRT स्टेज टॉप राइट से स्टेज बॉटम लेफ्ट की ओर आकर्षित होता है।
ps2goat

3

यह एक महान प्रश्न है जो मैंने कई बार सोचा है। "क्यों" का सरल उत्तर है क्योंकि टीवी प्रारूपों ने बाएं से दाएं और फिर ऊपर से नीचे तक अपनी लाइनें खींची हैं। मूल कंप्यूटर मॉनिटर CRT स्क्रीन (छोटे टीवी) थे, इसलिए प्रारूप स्वाभाविक रूप से एक ही रहा। जब मॉनिटर फ्लैट स्क्रीन बन गए (और टीवी फ्लैट स्क्रीन भी बन गए), तो आसान संगतता के लिए समान प्रारूप रखना उतना ही स्वाभाविक था।

बेशक आप तब पूछ सकते हैं: टीवी इस तरह से क्यों खींचते हैं? इनका आविष्कार 20 वीं शताब्दी में किया गया था ताकि आप सोच सकें कि इसके डिजाइन में कितनी सोच या कमी थी, अगर यह भी सवाल किया जाता। नोट: यह अपमानजनक होने का मतलब नहीं है क्योंकि यह छोटे स्क्रीन "प्रकाश बल्ब" के एक सरल मैट्रिक्स के विपरीत, चुंबकीय रूप से किरणों को स्क्रीन पर उचित रेखाओं के लिए समीकरणों को प्राप्त करने के लिए अविश्वसनीय रूप से अधिक चुनौतीपूर्ण है। (यह थोथा यह सवाल लाता है कि पृथ्वी पर उन्होंने डॉट्स के सरल मैट्रिक्स से पहले सीआरटी का आविष्कार कैसे किया था, 20 वीं सदी की शुरुआत में?)

फिर भी, मेरा अनुमान है कि शायद कभी भी यह (एक बुरी बात) सवाल नहीं किया गया था क्योंकि पश्चिमी भाषाएं बाएं से दाएं और ऊपर से नीचे तक शब्द लिखती हैं। संभवतः किसी ने भी इसे अलग तरह से करने की संभावना की कल्पना नहीं की थी।

व्यक्तिगत रूप से, मैं इस प्रारूप को नापसंद करता हूं। जैसा कि मैंने खेलों और अन्य सिमुलेशन से अण्डाकार कक्षाओं में क्रमादेशित किया है, मैंने इस दृष्टिकोण को प्राप्त किया। जब भी आप पाप, कॉस, या टैन को शामिल करते हुए ड्राइंग समीकरणों को देखते हैं, तो आपको उन संकेतों को ध्यान से उलटना होगा जो वाई-एक्सिस मापदंडों से निपटते हैं ... या आपको गलत चीज़ खींची जाएगी। एक उदाहरण किसी भी 2D कोण पर तैयार दीर्घवृत्त के लिए पैरामीट्रिक समीकरण होगा। यह पाप के पाप, पाप कोस, और इसी तरह की चीजों को फैलाने वाला एक वास्तविक दुःस्वप्न हो सकता है ।

गणितीय रूप से बोलते हुए, स्क्रीन क्वाड्रेंट 1 के बजाय क्वाड्रेंट 4 में है। यह अनावश्यक रूप से जटिल है।

बीटीडब्ल्यू जब आपको 3 आयाम मिलते हैं, तो जेड अक्ष को सकारात्मक दिशा में "ऊपर की ओर" जाना माना जाता है। किंदा विडंबना। [संपादित करें]: शायद नहीं, नीचे मेरी टिप्पणी देखें।

2 और चीजें जो मैंने महसूस कीं / सामने आईं:

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

पुराने कंप्यूटरों ने चित्रमय वस्तुओं को इतना नहीं खींचा। उन्होंने कमांड प्रॉम्प्ट में पाठ को आकर्षित किया। इसलिए लाइन 0 को y = 0 पर रखना स्वाभाविक है। यदि हमारे पास नीचे-बाएँ मूल होता, तो टेक्स्ट टेक्स्ट ड्राइंग का गणित थोड़ा और अधिक शामिल होता, और यह उन पुराने धीमे कंप्यूटरों के लिए एक बड़ी बात हो सकती थी (जिन्होंने 1 भी वेतन वृद्धि के लिए शॉर्टकट बनाया, अच्छाई के लिए। "++") कहा जाता है। इसके अलावा आपको स्क्रीन का रिज़ॉल्यूशन जानने की आवश्यकता है, जबकि यदि आप y = 0 पर लाइन 0 करते हैं, तो आपको रिज़ॉल्यूशन जानने की आवश्यकता नहीं है।


2
आप इसे 20 वीं सदी की शुरुआत की तरह आवाज़ देते हैं, निएंडरथल्स द्वारा पॉप्युलेट किया गया था;)
बुमज़ैक

1
अजी, मैं सिर्फ CRTs और एलईड के एक मैट्रिक्स के बीच जटिलता में स्टार्क विपरीत पर जोर देने की कोशिश कर रहा था। CRT में प्रकाश की किरणों के चुंबकीय विक्षेपण में आश्चर्यजनक रूप से जटिल गणित होता है। एक डॉट मैट्रिक्स अपने सिर को चारों ओर लपेटने के लिए आसान है: बस सही समय पर सही एल ई डी के लिए विद्युत प्रवाह भेजें। कुछ भी हो, अधिक से अधिक जटिलता का यह विशाल परिमाण बताता है कि 20 वीं शताब्दी की शुरुआत में अधिक या बेहतर प्रतिभाओं द्वारा आबादी थी, क्योंकि उन्हें इस अधिक जटिल बात को बहुत अधिक सीमित युग में करना था।
DrZ214

एलईडी-मैट्रिसेस का उपयोग सूचना प्रदर्शित करने के लिए किया गया था, वे कभी भी टीवी और कंप्यूटर मॉनिटर के लिए लोकप्रिय नहीं हुए। आधुनिक फ्लैट स्क्रीन एलईडी मैट्रिस नहीं हैं, बल्कि बैकलिट एलसीडी हैं। एलइडी का उपयोग केवल कुछ स्क्रीन में बैकलाइटिंग के लिए किया जाता है, लेकिन छवि एल ई डी द्वारा नहीं बनाई जाती है। एलसीडी एक सरल तकनीक है, लेकिन स्क्रीन के पार पुरानी डिस्प्ले डिस्प्ले से सैकड़ों या हजारों पिक्सल तक के रिज़ॉल्यूशन में सुधार करना (और फिर कुछ, जैसा कि आपको रंग जोड़ने के लिए तीन सबपिक्सल्स की आवश्यकता है!) जरूरी नहीं है कि वेव सिग्नल को मॉडिफाई करने से बहुत आसान हो! एक ईएम बीम को नियंत्रित करना (जो एक तरह से रेडियो प्रसारण के लिए तुलनीय है)
ऑर्केलेंस

Z- अक्ष अप विडंबना नहीं है - यह गणित है। समन्वय प्रणाली को दाहिने हाथ की आवश्यकता होती है, इसलिए यदि + X दाईं ओर है और + Y स्क्रीन पर है, तो + Z अप करता है। जैसे अगर हम + X को दाईं ओर रखते हैं, तो + Y डाउन, + Z स्क्रीन में होता है।
tpg2114

1
@ tgp2114 समन्वय प्रणाली को दाहिने हाथ की आवश्यकता क्यों है?
तैमूर

3

परिशिष्ट: प्रारंभिक ग्राफिक्स वेक्टर मॉनिटर पर किए गए थे , प्रयोगशाला में देखे गए ऑसिलोस्कोप्स से बस एक कदम ऊपर (0,0) स्क्रीन के बिल्कुल बीच में होगा, एक्स / वाई स्केल सेट करने के लिए कुछ घुंडी के अधीन, एक्स। / वाई ऑफसेट, और संभवतः एक्स / वाई उलटा।

उदाहरण के लिए अटारी "क्षुद्रग्रह" (1979) के समर्पित हार्डवेयर ने एक वेक्टर स्क्रीन का उपयोग किया; यह जानना दिलचस्प होगा कि इसे क्या लगा कि इसका कार्यक्रम समन्वय प्रणाली है।

इवान सदरलैंड का "स्केचपैड" सिस्टम (1963) TX-2 वेक्टर डिस्प्ले पर आधारित था , और "स्केचपैड: ए मैन-मशीन ग्राफिकल कम्युनिकेशन सिस्टम" (पीएचडी थीसिस, जनवरी 1963) में, वह पृष्ठ 70ff पर लिखते हैं:

TX-2 डिस्प्ले सिस्टम की समन्वय प्रणाली की उत्पत्ति गुंजाइश के केंद्र में हुई है और प्रत्येक अक्ष के लिए 18 बिट कंप्यूटर सब-पासवर्ड के बाईं ओर स्थित विक्षेपण जानकारी के दस बिट्स की आवश्यकता होती है।

...

कई घटक चर का प्रतिनिधित्व करने में सुविधा के लिए और 18 बिट से अधिक सटीकता के लिए, स्केचपैड प्रदर्शन प्रणाली द्वारा आवश्यक प्रतिनिधित्व से तलाक प्रतिनिधित्व प्रतिनिधित्व ड्राइंग के लिए एक आंतरिक समन्वय प्रणाली का उपयोग करता है। इस आंतरिक प्रणाली को "पृष्ठ" समन्वय प्रणाली कहा जाता है। स्केचपैड में आरेखण की सोच में, पृष्ठ निर्देशांक को निश्चित माना जाता है। परिमाण परिवर्तन का एक पृष्ठ, परिमाण के किसी भी स्तर पर वांछित पृष्ठ के किसी भी भाग पर देखने की क्षमता देता है, जैसे कि आवर्धक कांच के माध्यम से (...) प्रदर्शन के लिए एक स्केल कारक वर्ग के आकार को नियंत्रित करता है जो दायरे में दिखाई देगा। सहेजी गई वास्तविक संख्या वर्ग के किनारे की आधी लंबाई है, जिसे SCope के लिए SCope कहा जाता है) जैसा कि चित्र 5.2 में दिखाया गया है। सहेजे गए कार्यक्षेत्र वर्ग के केंद्र के पृष्ठ निर्देशांक भी हैं। इन नंबरों को बदलकर गुंजाइश पर दिखाए गए पृष्ठ के हिस्से को आकार में बदला जा सकता है और स्थानांतरित किया जा सकता है, लेकिन घुमाया नहीं जा सकता।

पृष्ठ 73 पर आरेख 5.2 से पता चलता है कि "पृष्ठ समन्वय प्रणाली" X / Y कार्टेशियन समन्वय प्रणाली के गणितीय सम्मेलन का उपयोग करता है। (एक पूछ सकता है कि यह सम्मेलन ऐसा क्यों है ...)


लेकिन: वेक्टर स्क्रीन का उपयोग केवल इसलिए किया गया था क्योंकि मेमोरी पूरी तरह से प्रदर्शित करने योग्य छवि का प्रतिनिधित्व करने के लिए बहुत दुर्लभ थी और वेक्टर सूचियों + प्रस्तुति अवधि + कनेक्शन को बहुत कम मेमोरी (जैसे पॉलीगॉन बनाम
स्वर

2

सब कुछ टॉप-लेफ्ट नहीं है।

ओपनजीएल, उदाहरण के लिए, यह बताता है कि मूल नीचे-तल पर है , और यह पूरे एपीआई में व्याप्त है: बनावट निर्देशांक, व्यूपोर्ट, टेक्सल आयताकार, मानक ऑर्थो प्रक्षेपण: यह नीचे-बाईं ओर है।

यहां सोच में अंतर है।

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

गणित और डिजाइन में जब आप एक ग्राफ की साजिश करते हैं, तो आपके पास एक X और Y अक्ष होता है, जिसमें सकारात्मक X बाएं होता है और सकारात्मक Y ऊपर जाता है।

यदि आप किसी गेम में 2D GUI जैसा कुछ बना रहे हैं, तो इसे "टॉप-लेफ्ट इज द ओरिजिनल" तरीके से रखना कई लोगों के लिए आसान और अधिक सहज हो सकता है।

यदि आप ग्राफ पेपर पर किसी डिज़ाइन या लेआउट की नकल करने के लिए कुछ बना रहे हैं तो इसे "नीचे-बाएँ मूल है" तरीके से रखना कई लोगों के लिए आसान और अधिक सहज हो सकता है।

वास्तव में ये दोनों काफी अनौपचारिक सम्मेलन हैं, और यदि आप एक ऑर्थो प्रक्षेपण स्थापित कर रहे हैं, तो आप वास्तव में स्क्रीन पर (या बंद) किसी भी मनमाना बिंदु पर अपनी उत्पत्ति चुन सकते हैं, सकारात्मक एक्स या तो बाएं या दाएं और सकारात्मक जा रहा है Y या तो ऊपर या नीचे जा रहा है। यह आपके प्रक्षेपण मैट्रिक्स को तदनुसार समायोजित करने की बात है।

इसलिए केवल महत्वपूर्ण बात यह है कि आप कौन से सम्मेलन का उपयोग करने जा रहे हैं और इसे लगातार उपयोग कर रहे हैं।


बहुत बढ़िया जवाब। मैं ट्रिग्नोमेट्री के टन के साथ एक एल्गोरिथ्म बना रहा हूं जो अंततः स्क्रीन पर खींची जाने वाली चीजों को जन्म देगा, और मैं वास्तव में अनिश्चित था कि क्या मैं कुछ-कुछ वर्जना या सम्मेलन को तोड़ रहा हूं, जिससे वाई-अक्ष सकारात्मक हो रहा है।
अलेक्जेंडर होस्ट

-1

क्योंकि स्क्रीन ऊपरी बाएँ कोने से छवि को प्रस्तुत करना शुरू कर देती है। जब (0,0,0) स्क्रीन में जाने के साथ शीर्ष बाएं कोने पर (0,0,0) है, तो सह-समन्वय अक्ष के प्रतिपादन या ड्राइंग को सम्‍मिलित करना आसान होगा।


-2

इसके लिए एक तर्क: (उदाहरण के लिए)

var R uint32 = 0xFF0000FF; //:Red pixel
var W uint32 = 0xFFFFFFFF; //:White Pixel.
var Pixels []uint32 = { 
W,W,W,R,R,W,W,W,
W,W,R,R,R,R,W,W,
W,R,R,R,R,R,R,R,
W,W,W,R,R,W,W,W,   //:8x8 pixel image of " ↑ "
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W, }

स्क्रीन पर कोड के परिणाम :

यहाँ छवि विवरण दर्ज करें

यदि आप शीर्ष-बाएँ मूल का उपयोग नहीं करते हैं तो लाल तीर उल्टा होगा ।

मैं नहीं कह सकता कि यह "क्यों" है। बस, यह शीर्ष-बाएँ मूल का एक अच्छा कारण है।


2
"लाल तीर उल्टा होगा यदि आपने शीर्ष-बाएँ मूल का उपयोग नहीं किया" हाँ, तो? क्या गेम डेवलपर्स ज्यादातर समय 2d सरणियों के माध्यम से ग्राफिक्स लिखते हैं?
Vaillancourt

मैं सभी खेल डेवलपर्स के लिए बात नहीं कर सकता। I do: newgrounds.com/portal/view/706067 एडम एटॉमिक फ्लिक्सल के स्रोत कोड को पढ़ने से भी करता है। ओपनजीएल और एसएफएमएल पुस्तकालय निश्चित रूप से करते हैं। OpenCL आपको X / Y, (get_global_id (मंद)) में डेटा-पॉइंट को सार करने की अनुमति देता है, लेकिन प्रारंभिक मेमोरी आवंटन 1D है।
जे मैडिसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.