मेश पर बूलियन ऑपरेशन


15

प्रत्येक जाल के लिए कोने और त्रिकोण का एक सेट दिया। क्या किसी को एक एल्गोरिथ्म, या एक जगह की तलाश शुरू होती है (मैंने पहले गूगल की कोशिश की थी लेकिन शुरू करने के लिए एक अच्छी जगह नहीं मिली) उक्त मेषों पर बूलियन ऑपरेशन करने के लिए और परिणामस्वरूप मेष के लिए कोने और त्रिकोण का एक सेट प्राप्त करें? विशेष रूप से ब्याज घटाव और मिलन है।

उदाहरण चित्र: http://www.rhino3d.com/4/help/Commands/Booleans.htm

जवाबों:


10

मैं इसे कंस्ट्रक्टिव-सॉलिड-ज्योमेट्री (सीएसजी) के रूप में सोचता हूं। उम्मीद है कि आपको यहां कुछ मदद मिल सकती है।

http://www.alsprogrammingresource.com/csg.html

http://createuniverses.blogspot.com/2009/09/qtcsg-constructive-solid-geometry.html

http://www.nigels.com/research/

प्रारंभ के रूप में रचनात्मक ठोस ज्यामिति के लिए भी Google खोजें।

HTH


+1 - मैं उसी लिंक को पोस्ट करने जा रहा था, JustBoo - जब तक मैंने गौर नहीं किया कि आपने मुझे इसे हरा दिया है! :)
याकूब ०

धन्यवाद! शब्दावली रचनात्मक-ठोस-ज्यामिति वास्तव में मैं क्या जरूरत है!
लथोमास 64

@jacmoe - विडंबना अद्भुत है और अब पूर्ण है :-) आप उनमें से कुछ के लिए श्रेय के पात्र हैं। धन्यवाद।
JustBoo

उनमें से कुछ ? : पीआई का मानना ​​है कि मैंने उन सभी को वापस वहीं छोड़ दिया। : डी स्टिल, वे केवल बुनियादी सीएसजी सामान हैं। यह वहाँ से सुंदर बालों वाला हो जाता है - यहां तक ​​कि प्रमुख वाणिज्यिक मॉडलिंग पैकेज भी इसे सही नहीं मिला।
जेकमू

3

मुझे लगता है कि अगर हम सिर्फ इसके बारे में सोचते हैं तो हम इसे पहेली बना सकते हैं।

आप स्पष्ट रूप से उन चेहरों (त्रिकोण) को बनाना चाहेंगे जहां दो ज्यामितीय प्रतिच्छेद करते हैं। फिर आपको तीन जालों के साथ छोड़ दिया जाता है: जिस चौराहे को आपने अलग किया है, ज्यामिति 1, और ज्यामिति 2।

फिर, बस वह हटाएं जिसकी आपको आवश्यकता नहीं है!

  • बूलियन डिफरेंस: पृथक भाग और ज्यामिति 2 को हटाएं।
  • बूलियन इंट्रैक्शन: पृथक भाग को छोड़कर, ज्यामिति 1 और 2 को हटाएं
  • बूलियनउनियन: ज्यामितीय 1 और 2 को मर्ज करें और अलग-थलग भाग को हटा दें (सुनिश्चित करें कि ज्यामितीय 1 और 2 को एक साथ एक ठोस ज्यामिति में सिलाई करें)
  • बूलियनस्प्लिट: अलग ज्यामिति 1, ज्यामिति 2, और पृथक भाग की नकल करें (एक को ज्यामिति 1 से और दूसरे को ज्यामिति 2 से संलग्न करें)

मुझे लगता है कि यह कवर, एह? कठिन हिस्सा स्पष्ट रूप से प्रतिच्छेदन चेहरे का निर्माण करेगा। उसके लिए, एक के प्रत्येक चेहरे के माध्यम से पुनरावृति करें और जांचें कि क्या वह चेहरा दूसरे का हिस्सा है; यदि यह पूरी तरह से अंदर है, तो चेहरे को प्रतिच्छेदन जाल के हिस्से के रूप में कॉपी करें। यदि यह आंशिक रूप से अंदर है, तो आपको त्रिकोण को चौराहे की रेखा के साथ विभाजित करने की आवश्यकता है; मुझे लगता है कि DirectX और OpenGL दोनों में इसके लिए सहायक कार्य होंगे, या यह केवल कुछ 3D विमान गणित (वैक्टर) हैं। मैंने कैलकुलस 3 में उस तरह की चीज़ सीखी (या यह 2 थी?) लेकिन अगर आपके पास कोई सुराग नहीं है, तो शायद math.stackexchange.com पर पूछें । और फिर निश्चित रूप से अगर चेहरा बाहर है, तो कुछ भी न करें। एक बार जब आप दोनों मेषों के सभी चेहरों पर पुनरावृत्त हो जाते हैं तो आपको चौराहे के जाल के साथ छोड़ दिया जाएगा।


2

यदि आप बहुभुज मॉडल के साथ काम कर रहे हैं, तो आपको अच्छी तरह से गैर-कई गुना ज्यामिति से निपटना पड़ सकता है, जिसका अर्थ है कि "अंदर" और "बाहर" क्या है इसका प्रश्न परिभाषित नहीं है। यदि आपके पास 0 या 1 है तो पता नहीं है कि यह बूलियन ऑपरेशन करने के लिए मुश्किल है।

आपको फ्रिंज मामलों जैसे कि को-प्लानर पॉलीगॉन, पॉलीगॉन से भी निपटना पड़ता है जो किनारों को काटते हैं, कोने और / या चेहरे पर झूठ, कोने और उस प्रकृति की चीजें। जिनमें से कोई भी असंभव नहीं है, आपको बस अपने जाल डेटा का प्रतिनिधित्व करने के एक बहुत मजबूत तरीके की आवश्यकता है, और उन मामलों में जो आप होने की उम्मीद करते हैं उसकी एक तंग परिभाषा।


1

यह ध्यान देने योग्य है कि आपके अधिकांश कार्यों को निषेध और संघ द्वारा दर्शाया जा सकता है, जहां कुछ ज्यामिति की उपेक्षा सिर्फ इतनी है कि ज्यामिति इसके मानदंडों के साथ फ़्लिप हो गई है। इसलिए यदि आप सही मिल सकते हैं, तो अन्य कार्यों का पालन करना चाहिए:

  • चौराहा (ए, बी): =! संघ! (ए!; बी!)
  • घटाना (A और B): =! संघ! (A, B)

सैंडर के पास कुछ अच्छे ब्लॉग पोस्ट हैं जो CSG कार्यान्वयन पर चर्चा करते हैं: http://sandervanrossen.blogspot.com/search/label/CSG


1
मैं अपने खुद के सीएसजी सामान का उल्लेख करने जा रहा था, लेकिन जाहिर है किसी और ने पहले से ही किया: ओ)
सैंडर वैन रॉसेन

1

यह एक बहुत ही मुश्किल विषय है, कम से कम यदि आप इसे मजबूत तरीके से करना चाहते हैं (फ्लोटिंग पॉइंट कुछ गंभीर कठिनाइयों का कारण बनता है)।

मैं आपको इस विषय पर कम्प्यूटेशनल ज्यामिति / कंप्यूटर ग्राफिक्स साहित्य की ओर संकेत करूंगा, विशेष रूप से इन हालिया पत्रों में:

http://homes.cs.washington.edu/~gilbo/repofiles/booleans2009.pdf

http://openflipper.org/uploads/media/campen_2010_eg_02.pdf

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