Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Compute Voronoi nodes of a Polygon

Subject: CGAL users discussion list

List archive

[cgal-discuss] Compute Voronoi nodes of a Polygon


Chronological Thread 
  • From: Bob Bill <>
  • To: "" <>
  • Subject: [cgal-discuss] Compute Voronoi nodes of a Polygon
  • Date: Mon, 18 Dec 2023 23:07:44 +0000 (UTC)
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:wjz6k6k4mfdSxm3Y/tNDhzRgAFjpDfO9imdD5ihNYBxZY6Wkfp iV7ZEmPGzP+VIssRAb6JC90ca7MBDhHPJOjrX5Xo3SHzUO2lHYTr2KhLGKq1aLdkHDH4Vmu5 uIBpIfNDSGNzlHZI3BkW6F+p4bsb+6GFzDv5ao85+TJzsaH52JEW1Ce3Om+wRNNXF77ZZVLu vk2uNX4zWnYngZdcK9Gz0MWPXCvcTCkNb8bQcBHANP0nj/sdqE0s+FL/Gj5GZubxpfhbM5tW TVmQ3w4auu9/m91x/HzmfWq5BbgsHoxNdPDNGFzpF9EESfti+4IIB6H7GStjE8p++irF4sjd nXuh8le8B+8WnYcG25qQbknwPgzDEt4Xn/zkLwuwqRneXpADYhT8ZRj4NQdRXUr0ImodFnya pOm3mUspJGZCmw4xjV9pzNTVVnh0C0qX0tnaoYlHpES5YTb7dXsMgW4F5VGI1oJlON1Kk3VO 11SM3M7vdfdl2XK3rDuHN03dCqVnMvWh+bX0kZvNCP2TQ+pgEx86NQrPZv1EvpgvoGOtR5D8 quCNUlqFkOJvVmJZ6Uc486MICK4kyne2OCDItTGyWaKEl1U0i95aIfzI9Fmd1CIqZ4t6fasK 6xKm+xtwYJCgPTNfE=
  • Ironport-phdr: A9a23:VRPqdRcsmcM/wT15zJzBrXnxlGM+xtTLVj580XLHo4xHfqnrxZn+J kuXvawr0AWZG9+Durkc0aL/iOPJZy8p2dW7jDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgH c5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTajYr5+N gu6oRnVu8UZnYduNLs6xwfUrHdPZ+lZymRkKE6JkRr7+sm+4oNo/T5Ku/Im+c5AUKH6cLo9Q LdFEjkoMH076dPyuxXbQgSB+nUTUmMNkhpVGAfF9w31Xo3wsiThqOVw3jSRMNDsQrA1XTSi6 LprSAPthSwaOTM17H3bh8pth69dvRmvpQFww5TMbY+bNPRwYKDTc84VSmVdUMZfUDdMDZmgY 4QUFOUMJ/pUoov7qlATrRW+Hw6sBOb3xzJVgX/5xrAx3vkgEQHC2AwrAtUDv2/VrNXxMKcdS uC4wabJwDjYb/JZwzf96I/Pchw7vf6MWrdwfNPXxEIyGAzLkk+eppb5PzOJyOsNqW6b4vJ+W e+viWMqrw9/rzusy8kjioTEmp4Yx17H+Ct2wYs7KsC0RFN0bNCkDZZdtj+XO5Z3T84sX2xmt yQ3x6MbtJO1eiUB1Zopxxnaa/OdcoiI5AruW/qeIThigHJpYrW/hwy98UWm1+byVdG03U5Io ydHiNXAqH4A2h/J5sSaSPZw/V2t1SiT2wzN7OxPPF45la7GK5463r4/iIATv1nCHi73hkr7l LOae0M58eay8evneK/pppqEOo90lA7+NqMul9SkAeQ/NAgOXnSU9Oqg2LDt5EH1XqhGgucqn anetpDaPsEbprSjDw9QyIkj6hK/Ay2n0NQCg3ULNlJEdwiHj4juPFHCOuz3DfC6g1i0kTdrw e7JPqH5D5jPLHXPiqntcLh+5kJG1QY+z9NS64hKBr0dPv7/Qkrxu8bZDh89PQy02eHnCNBl2 4wFWGKPBquZP7jSvFKH5+8iOOmNa5UVuDb6LPgp/eLhjXg8mVMFe6mmxoMYaGqkEfR+P0WZf X3sj88cHWsSpAoxUPTqiEGeUT5Uf3u9Q6086Ss/CI6/EIjDR5utj6Cc3CegBZ1bfXtGC1CJE XfwbYqIQfYMaCSIIs9giDMIT7ahS5VynS2p4UXxxLNja+bV4SYFronL1d5v5uSVmwt4vWh/A M2Zlm2MVGpphXggRjks3ak5r1YrmXmZ1q0tqftSXfZS4/cBBg07MZrWkrAkI8H7WgXGONyOT QD1EZ2dHTgtQ4dpkJc1aEFnFoD65vii9y+jArtO0qeOGIRx6aXEmX74O8d6zX/CkqgnlVgvB MVVZiW9nqAq0Q/VCsbSllmB0b6wfPEW3SrJ/jrfk0KftUFfV0h7VqCWFWsHaB7upM/irljHU 6foDL0mNgVbzsvXIKpObte00QtuVf7jP9OYaGW0yC+rHRjd4LSKYcLxfnkFmiXQDE9RiwcI4 XOPLhQzHA+6pGTfB2c2The1OgXn9u9lrWn9S0Y1y0eLdRcnxrO1/RlTjvuZIx8K9pQDvipp6 zB9HVLmmsnTF8LFvA15OqNVfdI65l5Dk2PfrQ10eJK6fehkgRYFfgJ7slmLtV0/A5hckcUss HIhzRZjYaOe3lRbcjqE3Jf2crTJI2j29RqrZubYwFbbmNqR/64O7rw/pTCB9EmjF04m+Sg7j fFE2nub4dPBCw9TGZP9X0Ar9gRr8qnAa3p17IfV2HtwdKis52CdnYhyVK18lUbmJY8FY8bmX EfoHsYXBtajMrkvklmtNVcfOfxKsbUzJ4WgfueH36iiOKBhmiinhCJJ+tMYsArE+ixiR+rPx 5tAzeuf217NXTb4iF387p7fiIlEYjZUFW26g3uBZsYZduhpcIAHBH37ace2wtF02sKzc29R9 FmkQVgB3YX6MQrXZFv70wpK0E0RqnHygiq0wQt/lDQxp7ae1ijDqwj7XCIOIXUDBGxrjFO3Z JOxk8hfR0+wKQ4giBqi40/+galdvqV2aWfJEw9EeC3/LmcqVaXV1PLKac9L7Jl17Xt/Qe28Z lfcQbn46xcXyCLsGWJCyStzKG7s4M6p2UUl2CTHdCw7pWGRYcxqwBbD+NHQIJwZliELQiV1k 3ifB1SxOcWo4cTBkp7Ctu6kUGfyHpZXcCTt0caBrH7kuiswWk35xq/j3Ie/S1tfs2ezzdRhW CTWoQypZ4Dq0///Kud7ZgxzA0e67cNmG4Z4m492hZcK2HFciI/GmBhP2Wr1L9hf3rrzKXQXQ jteidTU5AzvhRE9BmOAx4X+EH6ax4EyArvyKnNTwS87481QXe2e7bhAl3Yp/HKppALWZr52m TJXmrM+rXUdhe8Oog8kyC6QV6sTEUdvNivpjx2U7tq6ofYyBi7nYf2q2UF5h9zkEKCar1QWR iPiYpl7V3w4/oBlPVnLynG29oz0ZIyac4cIrhPN2w/clbpEIZI2kbwBgi8CWyq1pWE/mf8yj Rtpm5e3oMDQImFptspVGzZ+MTv4L4MW8zDp1uNFm9qOmpuoBtNnEykKW53hSbSpFigTvLLpL VTGFjp0sXqdFbfFeG3XoE57s3LCFYyqPHCLNTEYy9tlXhyUOE1YhkgdQjw7mpczEg3iytbmd Q914TUY51iwrRUpqKogLx7kTmLWvxulcB8vT56eJ0EOtUQYvgHeNsqF6/g1GihZ+tugtlbLO 2WbYAMOBmYMGynmTxjiMrSo+djc4r2YC+65fLPFZbSDr/AbVu/dms3piNA2uW/TZoPVZiMxa p9zklBOVn14BcnDzjAGSihM0jnIc9bevxCkvCt+ssG49v3vHgPp/4qGTbVIYrANs1i7h7mOM +mIiWN3MzFdg9kGxHvMwuVDgnYDgiFpcH+mFrFK5kuvBOrA37RaCRIWcXY5LMxT86c1xRVAI +bAjdX03eUg1btvUhFOUlr6n9vvYMULJye8LgmBFU+LM7PALjrOiZKSA+v0Wfhbi+NasAe1s DCQHhr4PziNoDLuUgimLeBGiCzz1P12o4a7cx02UTOmFougYRq9K9ptyzg/wLlyh2mQc38VM T97NUhKq+/Ihcu3quR2G2tGqHFiKLvd8858x/jRKpER9/BsB3Ys/98=
  • Ironport-sdr: 6580d0e3_rgZ1FoeHntBaPuuYmJgecAR+hioesxFekqDwImZ9rmNmfL2 H1iKrN0K5SJebiztkk2zvC0ipCdZaJuMn4sQmnw==

Dear all,

Given a polygon P, I need to compute the vertices of the segment Voronoi diagram.

I am using the 2D Segment Delaunay Graph package, but I am not able to find the vertices of the Voronoi diagram.
To give a concrete example, consider a pentagon P. I want to print its Voronoi nodes. Following this example in the documentation CGAL 5.6 - 2D Segment Delaunay Graphs: Segment_Delaunay_graph_2/sdg-voronoi-edges.cpp, I am just building the pentagon by hand by providing its edges (see code at the end of the message).

Unfortunately, it's only displaying the vertices of P many times, and I don't see coordinates that are inside the polygon P. Is there something I am missing? How can I actually compute the Voronoi nodes?


Best,
Bob


#include <CGAL/Simple_cartesian.h>

#include <cassert>
#include <fstream>
#include <iostream>
typedef CGAL::Simple_cartesian<double> K;
#include <CGAL/Segment_Delaunay_graph_2.h>
#include <CGAL/Segment_Delaunay_graph_filtered_traits_2.h>
typedef CGAL::Segment_Delaunay_graph_filtered_traits_without_intersections_2<K>
Gt;
typedef CGAL::Segment_Delaunay_graph_2<Gt> SDG2;

int main() {
std::vector<std::pair<Gt::Point_2, Gt::Point_2>> segments;
std::pair<Gt::Point_2, Gt::Point_2> segm0({0, 0}, {1, 0});
std::pair<Gt::Point_2, Gt::Point_2> segm1({1, 0}, {1, 1});
std::pair<Gt::Point_2, Gt::Point_2> segm2({1, 1}, {0.5, 1.5});
std::pair<Gt::Point_2, Gt::Point_2> segm3({0.5, 1.5}, {0, 1});
std::pair<Gt::Point_2, Gt::Point_2> segm4({0, 1}, {0, 0});
segments.push_back(segm0);
segments.push_back(segm1);
segments.push_back(segm2);
segments.push_back(segm3);
segments.push_back(segm4);
SDG2 sdg;

std::size_t n_segments =
sdg.insert_segments(segments.begin(), segments.end());
assert(sdg.is_valid(true, 1));
std::cout << std::endl;

std::string inf_vertex("infinite vertex");
char vid[] = {'A', 'B', 'C', 'D'};
SDG2::Finite_edges_iterator eit = sdg.finite_edges_begin();

std::vector<Gt::Point_2> voronoi_points;

for (int k = 1; eit != sdg.finite_edges_end(); ++eit, ++k) {
SDG2::Edge e = *eit;
// get the vertices defining the Voronoi edge
SDG2::Vertex_handle v[] = {
e.first->vertex(sdg.ccw(e.second)), e.first->vertex(sdg.cw(e.second)),
e.first->vertex(e.second), sdg.tds().mirror_vertex(e.first, e.second)};
for (int i = 0; i < 4; i++) {
// check if the vertex is the vertex at infinity; if yes, print
// the corresponding string, otherwise print the site
if (sdg.is_infinite(v[i])) {
} else if (v[i]->site().is_point()) {
std::cout << vid[i] << " (point) : " << v[i]->site().point()
<< std::endl;
voronoi_points.push_back(v[i]->site().point());
}
}
return 0;
}





  • [cgal-discuss] Compute Voronoi nodes of a Polygon, Bob Bill, 12/19/2023

Archive powered by MHonArc 2.6.19+.

Top of Page