how can I sweep a triangle area using two loops

1 view (last 30 days)
mohammad mortezaie
mohammad mortezaie on 20 Jun 2021
Edited: Scott MacKenzie on 20 Jun 2021
I want to sweep all points inside a triangle by coordinates (0,0), (2*pi/(3*a),0) and (0,4*pi/(3*a)) and by deviding this into two triangles and calculating line equations i wrote this code
for j=1:101
for l=1:101
for k=1:101
for m=1:101
But this code doesn't cover some y points inside the triangle. What can i do for solving this problem?
mohammad mortezaie
mohammad mortezaie on 20 Jun 2021
this is triangle that I mean. Strip area is needed to be sweep or broom.

Sign in to comment.

Answers (1)

Scott MacKenzie
Scott MacKenzie on 20 Jun 2021
Edited: Scott MacKenzie on 20 Jun 2021
No need for loops. The tests are built in to the inpolygon function when you provide matrices as input. Assuming you want to find points inside the triangle, given a "sweep" grid of x-y test points (integers or reals), then I think this achieves what you are after:
% your triangle points
a = 0.1;
xt = [0, 2*pi / (sqrt(3)*a), 0, 0];
yt = [0, 2*pi/(3*a), 4*pi/(3*a), 0];
% plot triangle with margin around edges
margin = 5;
x1 = round(min(xt)- margin);
x2 = round(max(xt)+ margin);
y1 = round(min(yt)- margin);
y2 = round(max(yt)+ margin);
axis([x1 x2 y1 y2]);
hold on;
% make a grid of points to find points inside and outside triangle
delta = 1; % granularity of grid (adjust as desired)
[X,Y] = ndgrid(x1:delta:x2,y1:delta:y2);
% test the points (logical matrix 'in' identifies points in/out)
in = inpolygon(X,Y,xt,yt);
% output number of points inside triangle
% plot the points inside (blue) and outside (light blue)
plot(X(in),Y(in),'.b') % points inside
plot(X(~in),Y(~in),'.', 'color', [.7 .7 1]) % points outside

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!

Translated by