selecting a triangle in an array of delaunay points

2 views (last 30 days)
The code explains it all.
Try to run it, it might give you a good result, but that would be random.
This code is supposed to display a point, and color the nearest triangle green. It does not do this, and gives "nan" errors on seemingly random iterations of the loop.
I would appreciate some help :)
clc;
clear all;
close all;
P = [ 2.5 8.0
6.5 8.0
2.5 5.0
6.5 5.0
1.0 6.5
8.0 6.5];
dt=delaunayTriangulation(P);
triplot(dt);
hold on
%%example functions
dt.Points
dt.ConnectivityList
%abs vals x
a=min(P(:,1))
b=max(P(:,1))
%abs vals y
c=min(P(:,2))
d=max(P(:,2))
for n=1:5
random_x=a + (b-a).*rand(1);
random_y=c + (d-c).*rand(1);
triangleId=pointLocation(dt, random_x,random_y) %select the triangle ID of the triangle closest to the point generated by the random generator
scatter(random_x,random_y) %display the points
%%now... the part that does not work
%%selecting the right triangle and turning it a different color
tri = dt(triangleId, [1:end 1]);
patch(P(tri,1), P(tri,2), 'r', 'LineWidth',1, 'FaceColor','g')
end
  6 Comments
luc
luc on 17 Dec 2014
Thanks! This solved my problem. I think an addition to the source code of this function would be to still pick the nearest triangle to the point, accompanied by an error message saying that the point itself is not inside a triangle.

Sign in to comment.

Accepted Answer

luc
luc on 18 Dec 2014
Answered, thanks!

More Answers (0)

Categories

Find more on Delaunay Triangulation in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!