2010-04-28 35 views
11

के साथ क्षेत्रों पर अंक, रेखाएं और बहुभुज, मेरा आवेदन पृथ्वी के आकार (क्षेत्र का उपयोग करके पर्याप्त) सतह का प्रतिनिधित्व करना है। वे अंक, रेखाएं, और बहुभुज हो सकते हैं। समन्वय को डिग्री या रेडियंस (बस भौगोलिक निर्देशांक की तरह) का उपयोग करके परिभाषित किया जाना चाहिए।सी/सी ++

क्षेत्र की सतह पर दो बिंदुओं के बीच एक रेखा खंड great circle पर होना चाहिए। बहुभुज में ऐसी लाइनों का संग्रह होना चाहिए। इसके अलावा, मैं Set - Basic Operations प्रदर्शन करना चाहता हूं जैसे चौराहे, संघ, अंतर, आकार के आकार पर पूरक। इन परिचालनों को केवल अंक के संग्रह को आउटपुट करने की आवश्यकता है।

मैंने CGAL के 3D Spherical Geometry Kernel और 2D Boolean Operations on Nef Polygons Embedded on the Sphere का उपयोग करके इसे समझने की कोशिश की। असल में, मुझे क्षेत्र में एक रेखा डालने में पहले से ही समस्याएं थीं। इसके अलावा यूक्लिडियन स्पेस में सीजीएएल काम करता है, जो अभी भी क्षेत्र में रखी गई महान मंडलियों के साथ काम करने के लिए जियोमेट्रिक परिचालनों के साथ आवश्यक है।

मेरा प्रश्न यह है कि, यदि आप सीजीएएल में उल्लिखित कार्यक्षमता को समझने में मेरी सहायता कर सकते हैं या यदि आप सी/सी ++ के लिए दूसरी लाइब्रेरी की सिफारिश कर सकते हैं। आपका बहुत बहुत धन्यवाद!

+0

"Nef बहुभुज पर 2 डी बूलियन संचालन क्षेत्र पर एंबेडेड" यह कैसा दिखता जनरल बहुभुज क्लिपर पुस्तकालय पर गौर कर सकते जो आपको चाहिए क्या कोई विशिष्ट विशिष्ट है जिसके साथ आपको सहायता चाहिए? – user168715

+0

@ user168715 मैं आपके प्रश्न के साथ स्पष्ट नहीं हूं। पहले पैरा में आपको क्षेत्र के _surface_ पर ड्राइंग आकार की आवश्यकता होती है, लेकिन दूसरे पैरा में आप लाइनों/बहुभुजों को महान सर्कल पर खींचना चाहते हैं (जो वास्तव में रेखा/बहुभुज _inside_ क्षेत्र को आकर्षित करेगा)। – Pranav

+0

@ प्रणव: क्षेत्र की सतह पर बहुभुज की प्रत्येक "रेखा" एक अलग महान सर्कल का एक टुकड़ा है। – aschepler

उत्तर

1

मैं इस पर एक नज़र लेने के लिए सुझाव देंगे:

http://www.codeguru.com/Cpp/Cpp/algorithms/general/article.php/c5115/

सवाल 1E दो भव्य हलकों के बीच चौराहे के आपकी समस्या नहीं सुलझती। इससे आप सीजीएएल या जीईओएस जैसी बड़ी निर्भरता के बिना क्षेत्र में अपने आकृतियों के मूल संचालन को परिभाषित कर सकते हैं।

0

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

यहां एक तरीका है, जो शायद विदर के उत्तर का एक और वाक्यांश है।

प्रत्येक रेखा (आर्क) को पैरामीट्रिक समीकरण के रूप में परिभाषित करके प्रारंभ करें। बेहतर या बदतर के लिए मैं इन आर्कों को घुमाने के दौरान सामान्यीकृत वैक्टरों के पथ के रूप में देखता हूं। तो इस तरह मैं उन्हें परिभाषित करूंगा (मुझे यकीन है कि एक बेहतर तरीका है)।

तो मैं शुरुआत और अंत बिंदु लेता हूं, उन्हें वैक्टर के रूप में मानता हूं, रोटेशन की धुरी प्राप्त करने के लिए क्रॉस उत्पाद लेता हूं, और डॉट उत्पाद कोण प्राप्त करने के लिए होता है।

तो एक चाप के लिए मेरे समीकरण की तरह

चाप (टी) = StartPoint * (axisAngleToRotationMatrix (अक्ष, टी * कोण))

फिर आप स्थापित करेगा दो चाप एक दूसरे के बराबर समीकरण लगेगा और प्रत्येक समीकरण में "टी" के परिणामों के परिणामस्वरूप समीकरणों की प्रणाली को हल करें।

संबंधित मुद्दे