Polyshape intersections in a loop
1 次查看(过去 30 天)
显示 更早的评论
Hello there,
I am currently trying to get a series of iterations for angles 000º to 360º. It basically consists of entering an initial angle and the loop stores a series of correlated coordinates in a matrix. It is rudimentary and the code is not optimised (I'm just a padawan), but I thought it would do the job, until.... angle 164º came and ruined my day. The thing is: I don't know why the code is broken! Could it have something to do with the polyshape?
Well, I turn to you, wise programmers, as my last resort in an attempt to save my poor script.
The script is attached, but in case you just want to copy and paste, it goes as follows:
clear all, clc;
Descarte_lon = -46.52904762; % Longitude do Ponto de Descarte
Descarte_lat = -26.46696384; % Latitude do Ponto de Descarte
Descarte = [Descarte_lon Descarte_lat];
buffer_1000m = polybuffer(Descarte,'lines',0.004496605);
buffer_500m = polybuffer(Descarte,'lines',0.0022483);
buffer_250m = polybuffer(Descarte,'lines',0.00112415);
buffer_100m = polybuffer(Descarte,'lines',0.0004496605);
for c = 0:360
dir_corr = c; % Direção da Corrente
corr_rad = dir_corr*pi/180;
angulo_15 = corr_rad+(15*pi/180);
angulo_15n = corr_rad+(345*pi/180);
angulo_corrente = corr_rad+pi;
angulo_corrente_j = corr_rad;
M1000_x = Descarte_lon+0.004496605*sin(angulo_15);
M1000_y = Descarte_lat+0.004496605*cos(angulo_15);
Lin_corr_x = Descarte_lon+0.004496605*sin(angulo_corrente);
Lin_corr_y = Descarte_lat+0.004496605*cos(angulo_corrente);
Lin_corr_xj = Descarte_lon+0.004496605*sin(angulo_corrente_j);
Lin_corr_yj = Descarte_lat+0.004496605*cos(angulo_corrente_j);
M1000_xn = Descarte_lon+0.004496605*sin(angulo_15n);
M1000_yn = Descarte_lat+0.004496605*cos(angulo_15n);
% hold on;
%
% plot(buffer_1000m);
% plot(buffer_500m);
% plot(buffer_250m);
% plot(buffer_100m);
%
% plot(Descarte_lon,Descarte_lat,'r.','MarkerSize',10);
%
% plot([Descarte_lon M1000_x],[Descarte_lat M1000_y],'g');
% plot([Descarte_lon M1000_xn],[Descarte_lat M1000_yn],'w');
% plot([Descarte_lon Lin_corr_x],[Descarte_lat Lin_corr_y],'k');
% plot([Descarte_lon Lin_corr_xj],[Descarte_lat Lin_corr_yj],'k')
% axis equal;
[lon1001, lat1001] = polyxpoly(buffer_1000m.Vertices(:,1),buffer_1000m.Vertices(:,2), [Descarte_lon M1000_x],[Descarte_lat M1000_y]);
%plot(lon1001, lat1001, 'bo')
[lon100, lat100] = polyxpoly(buffer_100m.Vertices(:,1),buffer_100m.Vertices(:,2), [Descarte_lon Lin_corr_xj],[Descarte_lat Lin_corr_yj]);
% plot(lon100, lat100, 'bo')
[lon250, lat250] = polyxpoly(buffer_250m.Vertices(:,1),buffer_250m.Vertices(:,2), [Descarte_lon Lin_corr_xj],[Descarte_lat Lin_corr_yj]);
% plot(lon250, lat250, 'bo')
[lon501, lat501] = polyxpoly(buffer_500m.Vertices(:,1),buffer_500m.Vertices(:,2), [Descarte_lon M1000_x],[Descarte_lat M1000_y]);
% plot(lon501, lat501, 'bo')
[lon502, lat502] = polyxpoly(buffer_500m.Vertices(:,1),buffer_500m.Vertices(:,2), [Descarte_lon Lin_corr_xj],[Descarte_lat Lin_corr_yj]);
% plot(lon502, lat502, 'bo')
[lon503, lat503] = polyxpoly(buffer_500m.Vertices(:,1),buffer_500m.Vertices(:,2), [Descarte_lon M1000_xn],[Descarte_lat M1000_yn]);
% plot(lon503, lat503, 'bo')
[lon1002, lat1002] = polyxpoly(buffer_1000m.Vertices(:,1),buffer_1000m.Vertices(:,2), [Descarte_lon Lin_corr_xj],[Descarte_lat Lin_corr_yj]);
% plot(lon1002, lat1002, 'bo')
[lon1003, lat1003] = polyxpoly(buffer_1000m.Vertices(:,1),buffer_1000m.Vertices(:,2), [Descarte_lon M1000_xn],[Descarte_lat M1000_yn]);
% plot(lon1003, lat1003, 'bo')
[lon1000, lat1000] = polyxpoly(buffer_1000m.Vertices(:,1),buffer_1000m.Vertices(:,2), [Descarte_lon Lin_corr_x],[Descarte_lat Lin_corr_y]);
% plot(lon1000, lat1000, 'bo')
DI_CORR(c+1,:) =[c, lon100, lat100, lon250, lat250, lon501, lat501, lon502, lat502, lon503, lat503, lon1001, lat1001, lon1002, lat1002, lon1003, lat1003, lon1000, lat1000];
end
Kind Regards,
Arthur.
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Elementary Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!