MATLAB: Selecting a triangle in an array of delaunay points

delaunay scatter patch pointlocation

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

Best Answer

Answered, thanks!