简体   繁体   中英

Delaunay Triangulation - Removing Triangles

I made a Delaunay Triangulation using Matlab version 2013. I want to remove some of the triangles, meaning canceling their connectivity, for example triangle number 760. How can I make this change? When I tried to edit the connectivity list:

dt.ConnectivityList(760 , :) = [];

I got the message:

Cannot assign values to the triangulation.

I thought about maybe copying specific fields to a different structure, but:

a. I'm not familiar with structures so I don't know how to do it right.
b.After I copy the structure, how can I get my triangles?

dt contains 3 fields: Points , ConnectivityList and Constraints (empty field).

A brief note on MATLAB objects. When you access a field for reading, you are basically doing get(obj, fieldname); . When you try to set a field as you are doing, you are actually calling set(obj, fieldname, new_value) . Objects do not necessarily allow you to do these operations.

The triangulation object is read-only, so you will have to make copies of all the fields. If, as you mentioned, you would like to make a structure with similar fields, you can do as follows:

dts = struct('Points', dt.Points, 'ConnectivityList', dt.ConnectivityList);

Now you can edit the fields.

dts.ConnectivityList(760) = [];

You may be able to plot the new structure, but the methods of the delaunayTriangulation class will not be available to you.

To plot the result, use trisurf :

trisurf(dts.ConnectivityList, dts.Points);

I was facing same problem. I found another solution. Instead of creating a new struct just create an object of its super class ie triangulation class with edited connectivity list. Here is my code

P- list of points

C- Constraints (optional)

dt=delaunayTriangulation(P,C); %created triangulation but dt won't let you change connectivity list

list=dt.ConnectivityList;
%your changes here

x=triangulation(list,dt.Points);

Now you can use x as triangulation object

triplot(x)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM