यहां कुछ भ्रम है।
OpenGL को ऑब्जेक्ट स्पेस और वर्ल्ड स्पेस में राइट हैंड किया गया है।
लेकिन विंडो स्पेस (उर्फ स्क्रीन स्पेस) में हम अचानक बायें हाथ में आ जाते हैं ।
यह कैसे हुआ ?
जिस तरह से हम दाएं हाथ से बाएं हाथ के लिए प्राप्त करते हैं वह एक नकारात्मक z स्केलिंग प्रविष्टि glOrtho
या glFrustum
प्रोजेक्शन मैट्रिसेस है। -1 से z स्केलिंग (जबकि वे थे के रूप में एक्स और वाई छोड़ने) समन्वय प्रणाली की गंभीरता को बदलने का प्रभाव है।
GlFrustum के लिए,
दूर और पास सकारात्मक माना जाता है, दूर के साथ > निकट । दूर = १००० और पास = १ कहो । फिर सी = - (1001) / (999) = -1.002।
अधिक विवरण और आरेख के लिए यहां देखें ।
एक से ओर्थोग्रफिक परिप्रेक्ष्य , glOrtho इस तरह एक मैट्रिक्स उत्पन्न करता है:
यहां, बाएं , दाएं , नीचे और ऊपर बाएं ऊर्ध्वाधर , दाएं ऊर्ध्वाधर , नीचे क्षैतिज , शीर्ष क्षैतिज कतरन विमानों (सम्मान) के लिए सिर्फ निर्देशांक हैं ।
पास और दूर विमानों, हालांकि, अलग ढंग से निर्दिष्ट कर रहे हैं । पास पैरामीटर के रूप में परिभाषित किया गया है
- नियर: समीप की दूरी समीप की कतरन समतल। यह दूरी नकारात्मक है यदि विमान दर्शक के पीछे होना है।
और आगे:
- zFar द दूर की गहराई वाले क्लिपिंग प्लेन दूरी । यह दूरी नकारात्मक है यदि विमान को दर्शक के पीछे होना है।
यहां हमारे पास एक विशिष्ट कैनोनिकल व्यू वॉल्यूम है
क्योंकि z गुणक (-2 / (दूर-पास)) है, शून्य से प्रभावी रूप से z को -1 से चिन्हित करता है । इसका अर्थ है कि "z" को देखने के परिवर्तन के दौरान बाएं हाथ से बंद कर दिया गया है , अधिकांश लोगों के लिए अनभिज्ञ है क्योंकि वे ओपनजीएल में "दाएं हाथ" समन्वय प्रणाली के रूप में काम करते हैं।
इसलिए, यदि आप फोन करते हैं
glOrthof(-1, 1, -1, 1, 10, -10) ; // near=10, FAR=-10,
तो NEAR PLANE आपसे 10 यूनिट आगे है । आप कहाँ हैं? क्यों, मूल में, आपके दाईं ओर x- अक्ष के साथ, आपके सिर के ऊपर y- अक्ष, और आपकी नाक नकारात्मक z- अक्ष को इंगित करती है (जो कि डिफ़ॉल्ट है "डिफ़ॉल्ट रूप से, कैमरा मूल पर स्थित है। , नकारात्मक z- अक्ष को इंगित करता है, और इसमें (0, 1, 0) का अप-वेक्टर होता है। " )। तो निकट विमान z = -10 पर है। सुदूर विमान आपके पीछे 10 इकाइयाँ है, z = + 10 पर ।