На основе Matlab - Нарисуйте линии углов по кругу и получите точки пересечения
Я попробовал следующий код, который должен найти пересекающиеся точки и пометить их. К сожалению, это не работает. У вас есть идея, как я могу это решить?
Сценарий:
clc;
clear;
close all;
r=1000;
nCircle = 1000;
t = linspace(0,2*pi,nCircle);
xCircle = 0+ r*sin(t);
yCircle = 0+ r*cos(t);
pgon = polyshape(xCircle,yCircle );
line(xCircle,yCircle );
axis equal;
hold on;
nAngles = 45;
lineLength = r+50;
for angle = 0:nAngles:359
xLine(1) = 0;
yLine(1) = 0;
xLine(2) = xLine(1) + lineLength * cosd(angle);
yLine(2) = yLine(1) + lineLength * sind(angle);
plot(xLine, yLine);
lineseg = [xLine; yLine];
intersectCoord = intersect(pgon,lineseg);
scatter(intersectCoord(2,2),intersectCoord(1,2));
end
Сценарий обновления проверяет только последнюю сгенерированную строку, но он по-прежнему не работает с пересечением:
clc;
clear;
close all;
r=1000;
nCircle = 1000;
t = linspace(0,2*pi,nCircle);
xCircle = 0+ r*sin(t);
yCircle = 0+ r*cos(t);
objectCircle = rot90([xCircle; yCircle]);
line(xCircle,yCircle);
axis equal;
hold on;
nAngles = 35;
lineLength = r+5;
for angle = 0:nAngles:360
disp(angle);
xLine(1) = 0;
yLine(1) = 0;
xLine(2) = xLine(1) + lineLength * cosd(angle);
yLine(2) = yLine(1) + lineLength * sind(angle);
plot(xLine, yLine);
lineseg = [xLine; yLine];
end
coefficients = polyfit([xLine(1), xLine(2)], [ yLine(1), yLine(2)], 1);
a = coefficients (1);
b = coefficients (2);
for xLineCoord = 0:lineLength
i=xLineCoord+1;
yLineCoord=a*xLineCoord +b ;
yLineCoordArray(i, :) = yLineCoord;
xLineCoordArray(i, :) = i;
end
objectLine = [xLineCoordArray, yLineCoordArray];
C = intersect(objectLine,objectCircle);