टीएल; डीआर आपको बीएसपी पेड़ों का उपयोग करके बूलियन संचालन को लागू करने की आवश्यकता है।
खैर, ऐसा लगता है कि हम यहां कंस्ट्रक्टिव सॉलिड जियोमेट्री की बात कर रहे हैं। मैंने व्यावसायिक स्तर पर CSG को लागू किया है इसलिए मुझे इसके बारे में एक या दो बातें पता हैं।
CSG के बारे में क्लासिक पेपर को मर्जिंग BSP ट्रीज यील्ड्स पॉलीहेड्रल सेट ऑपरेशंस कहा जाता है , ईमानदार होने के लिए यहाँ व्याख्या करना बहुत अधिक है, लेकिन संक्षेप में पॉलीगॉन (ओं) के साथ एल्गोरिथ्म सौदों के बारे में बताया जा रहा है जो एक बाइनरी स्पेस पार्टीशनिंग के रूप में एक ही विमान पर आते हैं, मूल रूप से निर्माण प्रत्येक बहुभुज जाल से एक बसपा का पेड़। दूसरा कदम उन बीएसपी पेड़ों का विलय करना है; आप बस एक पेड़ लेते हैं और इसे दूसरे में डालते हैं। एल्गोरिथ्म फिर यह समझाने के लिए आगे बढ़ता है कि नोड्स को विभाजित करने और स्थानांतरित करने के लिए प्रत्येक पत्ती के नोड से कैसे निपटना है, अंतिम आकृति में जिन नोड्स की आवश्यकता नहीं है, उन्हें हटा दिया जाएगा, अन्य को उपयुक्त माता-पिता दिए जाएंगे।
लेकिन रुकें! वह कागज मूल रूप से बहुभुज और 3 डी विमानों के बारे में बोल रहा है, नहीं?
एल्गोरिथ्म को किसी भी आयाम में सामान्यीकृत किया जा सकता है, इसलिए आपके 2 डी मामले में बाइनरी विभाजन के रूप में विमान के बजाय लाइन सेगमेंट का उपयोग करना आसान है। इसलिए प्रत्येक बहुभुज को बीएसपी के पेड़ में बदल दिया जाएगा। अंत में आप अंतिम बहुभुज उत्पन्न करने के लिए परिणामी पेड़ को पार कर लेते हैं,
ध्यान दें कि यह एल्गोरिथ्म और CSG सामान्य रूप से रेंडरिंग और मेष चेहरों से सीधे नहीं निपटता है और वास्तव में रेंडरिंग तैयार नहीं करता है, इसलिए आपको अंतिम BSP पेड़ों के चेहरे को निकालने की आवश्यकता होती है। मुझे यह भी पता चलता है कि CSG परिणाम प्रदान करने के लिए किरण एक आसान तरीका है, आपको केवल पेड़ों को निकालने के लिए किरणों की आवश्यकता होती है और वास्तव में चेहरे को विभाजित करना (याद रखें कि हम केवल द्विआधारी विभाजन से निपटते हैं)।
संख्यात्मक मजबूती के बारे में। यह नोट करना अच्छा है कि दो प्रकार के ज्यामितीय अभिकलन हैं,
- जो निर्माण पर आधारित हैं, आप पिछले ऑपरेशन के परिणाम के आधार पर एक आकार का निर्माण करते हैं। उदाहरण के लिए
y = sqrt(x)
और फिर y
एक नए ऑपरेशन में उपयोग करें । इसे निर्माण कहा जाता है; समस्या यह है कि संख्यात्मक त्रुटियां जल्दी से जमा होंगी।
- वैकल्पिक रूप से ऐसे ऑपरेशन होते हैं जो इसके बजाय विधेय का उपयोग करते हैं, अनिवार्य रूप से निर्माण का उपयोग करने के बजाय आप बस यह पूछते हैं कि क्या कोई शर्त सही / गलत है और अलग-अलग ऑपरेशन में एक ही मूल्य का उपयोग करें। क्लासिक परीक्षणों में अंतर्वृत्त और अभिविन्यास परीक्षण शामिल हैं; यह संख्यात्मक त्रुटियों के लिए भी संदिग्ध है, खासकर यदि आप एकल या दोहरी परिशुद्धता का उपयोग करते हैं, लेकिन आमतौर पर बहुत बेहतर परिणाम देंगे। अन्य समाधान जो गति और सटीकता पर भिन्न होते हैं। यहाँ हाल ही में एक कागजात है जो सटीक परिणाम देने के लिए एक विमान आधारित ज्यामिति का उपयोग करके निर्माण से बचता है। कागज से भी उद्धृत करूंगा:
पॉलीगोनल मेषों के विमान-आधारित प्रतिनिधित्व की अवधारणा को सबसे पहले सुगिहारा और इरी [SI89] द्वारा वर्णित किया गया था। इस तरह का प्रतिनिधित्व एक महत्वपूर्ण लाभ प्रदान करता है जब यह उन कार्यों के लिए आता है जिसमें बूलियन अभिव्यक्तियों के मूल्यांकन की तरह मेष द्वारा दर्शाए गए ठोस पदार्थों की टोपोलॉजी को बदलना शामिल है: परिणामस्वरूप पॉलीहेड्रॉन प्राप्त करने के लिए कोई नई प्राथमिक ज्यामिति जानकारी का निर्माण नहीं किया जाना है।
और अंत में मैं, जोड़ने के लिए यदि आप अपने बसपा CSG कार्यान्वयन मैं से शुरू होने की सिफारिश करेंगे शुरू करना चाहते चाहते हैं बसपा पूछे जाने वाले प्रश्न ।