Subject: CGAL users discussion list
List archive
- From: Renato Silveira <>
- To:
- Subject: Re: [cgal-discuss] Get boundary points using Basic Alpha Shapes 2d
- Date: Tue, 31 Jul 2018 11:13:39 -0300
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-phdr: 9a23:6Z9ZyhOKOjhVT+5TBwIl6mtUPXoX/o7sNwtQ0KIMzox0Lf/7rarrMEGX3/hxlliBBdydt6oazbKO+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxlJiTanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPdeRWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbYUwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0yRD+s7bpkSAXwhSgIOT428mHZhMJzgqxGvhyuuwdyzJTIbIyPLvdyYr/RcNEcSGFcXshRTStBAoakYoUTEeUBO/xXr5X6p1ATsBW+BA2sBP3xxT9JnH/5x7Ax3uM6EQHH2AwgAcwBsHXOrNrvLqsSS/66zK/TwDXMavNZwzb96IzSfh89pvGMWKt9fMzMwkcsDwPIlkucpZDhMj+P1ekAs3KX4/R+We+hkWIrtgN8rzmpy8wxkIfGnJgVxUrB9ShhwIY6O9m4SEljbN6hCpRQtiWaO5J3QsMlX21koSg6xqAEtJO6ZiQKx5MnxxnQa/yDbYeE+A7sVOGUITtghXJlfqywhwqq/ES+1uHxUtO43VVKoyZfjNXAqH4A2wbO5sWFS/Zx5kKh1iyO1wDX5OFEO0c0la/DJp46w74wkoQTvlrCHi/sgkr6lrWWeVsi+uWz5OTnZ6/ppp6YN4Nulg7+NaEultSlAeskKggOQ3Sb+eOk2bL/8k32WrFKguQrnanYq5DVOdkbprWiAwJOyYYi6xO/Dy+839gCnHkHKkhFeBOdgITzNVHOOqOwMfDqiFullHJnxuvNI6b6KpTLNHnK1rn7Lphn7EsJ8gc1xMxYr6lVDq8MIej6EhvqtdjGAx4jOkquzuDPB9B014dYUmWKVPzKeJjOuEOFs7p8a9KHY5UY7W6keqoVosX2hHp8omczOKyg3J8Zcne9R600LECQYH6qidAEQz5T4lgOCdfygVjHagZ9Im6oVvtltD4+AYOiS4zEQ9L12eHT7GKABpRTI1t+JBWMHHPvLdvWXv4NbGeTJZcknGVbC/6uTIgu0Rzovwj/meJq
Try to tune your alpha parameter to better fit your problem:
"A.set_alpha(value);"
Hi everyone,I use Basic Alpha Shapes to get boundary points from some 2d points. As shown in attachments, boundary points like a rectangle is what I want to get. But I failed. Through seeing demo about Alpha_shapes_2, I think that I maybe set a wrong Alpha. I hope that you can give me some suggestions so that I can get correct result.The wrong boundary points is result of the following code.
- typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
- typedef K::FT FT;
- typedef K::Point_2 Point;
- typedef K::Segment_2 Segment;
- typedef CGAL::Alpha_shape_vertex_base_2<K> Vb;
- typedef CGAL::Alpha_shape_face_base_2<K> Fb;
- typedef CGAL::Triangulation_data_structure_2<Vb,Fb> Tds;
- typedef CGAL::Delaunay_triangulation_2<K,Tds> Triangulation_2;
- typedef CGAL::Alpha_shape_2<Triangulation_2> Alpha_shape_2;
- typedef Alpha_shape_2::Alpha_shape_edges_iterator Alpha_shape_edges_iterator;
- template <class OutputIterator>
- void alpha_edges( const Alpha_shape_2& A, OutputIterator out)
- {
- Alpha_shape_edges_iterator it = A.alpha_shape_edges_begin(),
- end = A.alpha_shape_edges_end();
- for (; it != end; ++it)
- out++ = A.segment(*it);
- }
- bool file_input(std::list<Point> &points)
- {
- std::ifstream is("J:\\General_Random_points2D.pts", std::ios::in);
- if(is.fail())
- {
- std::cerr << "unable to open file for input" << std::endl;
- return false;
- }
- Point p;
- for (int i = 0; i < 2000; i++)
- {
- is >> p;
- points.push_back(p);
- }
- CGAL::set_pretty_mode(std::cout);
- std::cout << p << std::endl;
- return true;
- }
- // Reads a list of points and returns a list of segments
- // corresponding to the Alpha shape.
- int main()
- {
- std::list<Point> points;
- if(! file_input(points))
- return -1;
- Alpha_shape_2 A(points.begin(), points.end(),
- FT(10000),
- Alpha_shape_2::GENERAL);
- std::vector<Segment> segments;
- alpha_edges(A, std::back_inserter(segments));
- std::ofstream of("vertix.pts");
- CGAL::set_ascii_mode(of);
- CGAL::set_pretty_mode(std::cout);
- for (int i = 0; i < segments.size(); i++)
- {
- of << segments[i].vertex(1) << std::endl << segments[i].vertex(2) << std::endl;
- }
- std::cout << "Alpha Shape computed" << std::endl;
- std::cout << segments.size() << " alpha shape edges" << std::endl;
- std::cout << "Optimal alpha: " << *A.find_optimal_alpha(1)<<std::endl;
- system("pause");
- return 0;
- }
Thank you, in advance. I will be honored to receive your help.bingxin发自网易邮箱大师
Renato Silveira
Ph.D. in Computer Science
NTU / UFRGS | Núcleo de Tecnologia Urbana
Porto Alegre - RS - Brazil
NTU / UFRGS | Núcleo de Tecnologia Urbana
Porto Alegre - RS - Brazil
- [cgal-discuss] Get boundary points using Basic Alpha Shapes 2d, bingxin pu, 07/29/2018
- Re: [cgal-discuss] Get boundary points using Basic Alpha Shapes 2d, Renato Silveira, 07/31/2018
Archive powered by MHonArc 2.6.18.