मैं एक एसटीएल ऑब्जेक्ट में बूस्ट :: ज्यामिति पॉलीगॉन कैसे प्राप्त करूं?एक बूस्ट ट्रांसफॉर्म करना :: एक एसटीएल ऑब्जेक्ट में ज्यामिति पॉलीगॉन
मुझे यकीन है कि यह आसान होना चाहिए क्योंकि मुझे दस्तावेज़ में कहीं भी उदाहरण नहीं मिल सकते हैं। फिर भी मैंने इस छोटे से काम करने की कोशिश कर रहे 4 पूर्ण कार्य दिवस बिताए हैं। मैं सी ++ (लंबे समय तक आर प्रोग्रामर) के लिए नया हूं, लेकिन इन छोटी डेटा रूपांतरण चीजें मुझे पागल कर रही हैं। Getting the coordinates of points from a Boost Geometry polygon
लेकिन कोड (और पोस्टर इसे बदल तो कई बार रखा) है कि मैं सिर या यह की पूंछ नहीं बना सकते तो जटिल है, और न ही कर सकते हैं:
हाँ वहाँ एक सवाल जिसका शीर्षक ज्यादा मेरा की तरह है मुझे कल्पना है कि अन्य सी ++ नए लोग सक्षम होंगे।
यह एक साधारण उदाहरण है जिसे कुछ अन्य बढ़ावा :: ज्यामिति डेटा प्रकारों में अनुवाद करना चाहिए, इसलिए उम्मीद है कि कोई भी इसका अनुसरण कर सकता है।
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
//One thing I tried is a function to use with `for_each_point()` so I set that up first.
template <typename Point>
void get_coordinates(Point const& p)
{
using boost::geometry::get;
std::cout << get<0>(p) get<1>(p) << std::endl;
}
int main()
{
typedef boost::tuple<double, double> point;
typedef boost::geometry::model::polygon<point> polygon;
polygon poly;
boost::geometry::read_wkt("polygon((2.0 1.3, 2.4 1.7, 2.8 1.8, 3.4 1.2, 3.7 1.6, 3.4 2.0, 4.1 3.0, 5.3 2.6, 5.4 1.2, 4.9 0.8, 2.9 0.7, 2.0 1.3))", poly);
polygon hull;
boost::geometry::convex_hull(poly, hull);
// Now I know I can `dsv()` and print to the screen like this:
using boost::geometry::dsv;
std::cout
<< "hull: " << dsv(hull) << std::endl;
// And/Or I can use my function with for_each_point()
boost::geometry::for_each_point(hull, get_coordinates<point>);
return 0;
}
मैं इन निर्देशांकों को एक एसटीएल कंटेनर में कैसे प्राप्त करूं? मैं एक्स के लिए दो std :: वेक्टर एक और वाई के लिए एक पसंद करेंगे, लेकिन कुछ भी करेगा।
** मैंने आपके कोड में चीजों को बेहतर बनाने के लिए अपने कोड में कुछ त्रुटियों को ठीक किया है। प्रतिक्रिया देने के लिए बहुत बहुत धन्यवाद, दुर्भाग्यवश मुझे अभी भी यह नहीं मिल रहा है। मैंने [मॉडल :: बहुभुज के लिए प्रलेखन] (http://www.boost.org/doc/libs/1_53_0/libs/geometry/doc/html/geometry/reference/models/ को समझने का प्रयास करने में काफी समय लगाया model_polygon.html) और दस लाख वर्षों में कभी नहीं पता होगा कि अंक कैसे प्राप्त करें।मुझे कुछ प्रश्न पूछने दें: – politicalEconomist
1) आपने यह कैसे निर्धारित किया कि बहुभुज वस्तु में समन्वय बिंदु * बाहरी अंगूठी * कहा जाता है? मैं प्वाइंट, प्वाइंटलिस्ट, रिंगलिस्ट, अंक, आंतरिक अंगूठी देखता हूं, लेकिन कभी * बाहरी अंगूठी * नहीं देखता हूं। 2) फिर आपने यह निर्धारित कैसे किया कि * बाहरी अंगूठी * std :: vector के रूप में संग्रहीत है? 3) std :: vector तक पहुंचने के लिए आप 'exterior_ring() 'का उपयोग कैसे जानते थे? – politicalEconomist
4) भले ही मैं उन सभी को समझता हूं, फिर भी मैं उन सभी चीजों को नहीं कर सकता जो मुझे आमतौर पर उम्मीद है कि मैं एक std: vector के साथ कर सकता हूं। उदाहरण के लिए: डबल vectSize = boost :: ज्यामिति :: exterior_ring (हल)। आकार(); // रिटर्न 8 लेकिन तत्वों तक पहुंचने का प्रयास नहीं करता है: डबल एलिमेंट 1 = बूस्ट :: ज्यामिति :: बाहरी_रिंग (हल) [0]; त्रुटि: प्रारंभ में 0 बूस्ट :: tuples :: tuple 'to' double 'को परिवर्तित नहीं कर सकता –
politicalEconomist