CGAL Delaunay triangulation, removal of a point - 2d

Simple question: How to remove a point in a a 2d delaunay triangulation if I have only the coordinates of the point, I´m sure the point was inserted before. CDT::remove requires vertex_handle as a parameter but I don´t have it.
Thanks in advance;

That is a loss that you no longer have the Vertex_handle, because you will have to recompute the location of the point. The simplest way is to insert it again: the insertion of point that already exists as a vertex of the triangulation will return the Vertex_handle of the existing vertex.
So, in short, my answer is:
tr.remove(tr.insert(point));

Related

how to determine OpenGL winding based on normals?

I am trying to understand how to manually generate objects.
I have a mesh, part of which I delete and create a new geometry in its place. I have information about the normals of deleted vertices. On the basis of which I have to build new faces (in a different size and quantity) looking in the same direction.
But I don’t understand how to choose the correct winding. It sounds easy when the lessons talk about CCW winding in screen space. But what if I have a bunch of almost chaotic points in the model space? How then to determine this CCW, which axis is used for this? I suggest that the nearest old normals might help. But what is the cheapest method to determine the correct order?
It turned out to be easier than I thought. It is necessary to find the cross product of the first two vectors from the vertices of a triangle, then find the dot of the resulting vector and the normal vector, if the result is negative, then during generation it is necessary to change the order of vertices.

find out a point is in which polygons

I have a region table in oracle 12c, the table include 9 region that each of them defined by a polygon.
Polygon defined by 4 points in 2D.
I give a point from client and I must find out that this point is in which polygon. can anyone help me with this problem?
by the way I use Oracle 12c.
Ray casting algorithm is a popular solution to your problem https://en.wikipedia.org/wiki/Point_in_polygon. You can find pseudo-code easily and can start from that.
If you want to have solution in a specific language, then sorry I can't be of help.

Cluster adjacent Vornoi polygons of same category

We have a set of points, each with (x,y) coordinates and a category C. We have built the Voronoi diagram based on these points and would now like to "cluster" adjacent polygons when they are of a particular category. Is there a ready-made algorithm / R package for doing this ?
If not, our current thinking is to go back to the Delaunay triangulation and brute-force our way to the solution : consider each vertix V, find the vertix v of each edge going into V and see if they are the same category, if so aggregate the polygons.
Is there a better way to do that ? Is there an R package that could do that ? If not, which R package implementing Delaunay would have the best result data-structure to do this ?
Note: I wouldn't call this cluster analysis. If you stick to this keyword, you will not find anything useful to you. What you apparently want to do is merge adjacent Voronoi cells, but that's about it.
Your Voronoi cell / Delaunay triangulation algorithm should give you information of all the edges. What you probably want to do is iterate over all edges, and when both cells have the same category, merge them.
Trivial code; and heavily application dependant (what is "same category"?), so you probably won't find a "libary" for it.
You can use a convex hull on the points and remove all points inside a same category. Then repeat the voronoi diagram. BTW. I know nothing about R.

How to construct a mesh from given edge points?

I have some points on the edge(left image), and I want to construct a mesh(right), Is there any good algorithm to achieve it? many thanks!
image can see here http://ww3.sinaimg.cn/large/6a2c8e2bjw1dk8jr3t7eaj.jpg
To begin with, see Delauney triangulation. Look at this project: http://people.sc.fsu.edu/~jburkardt/c_src/triangulate/triangulate.html.
Edited because my original had too few details on edge-flipping, and when I tried to provided those details I found the TRIANGULATE project.
If the region is flat or quasi-flat look for Ear Clipping approach (http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf). In the case of curved surface you need point inside the region and therefore you may need Constrained Delaunay Triangulation (otherwise some edges may not be included in the triangulation).
There is delaunayn function in geometry package for R language (see doc)
It takes an array of boundary points (as in your case) to create a Delaunay mesh on it.
You could also save your geometry into some well-known format, and use one of mesh generators.

Calculate area of a object in cartesian plane

I wonder if someone can help me to find the area of a 2-D object in Cartesian plane , when we know coordinates of every points.
Eg : I want to calculate the area of a triangular. A(12,34) B(45,89) C(25,35)
I want a common algorithm to find any 2-D object's area.
Thank you.
Here you go, uses triangulation. This was literally the top result off Google when I searched "area of polygon given set of points". Please do your research before posting.
If your object is a simple polygon, there's no need to triangulate it to compute its area. There's a simple formula that depends only on the coordinates of the vertices. See http://en.wikipedia.org/wiki/Polygon#Area_and_centroid

Resources