Вы можете использовать функцию InterX , чтобы получить точку пересечения между синей линией и линией шторма.Проверьте код ниже.Я сделал несколько изменений в сюжете линии шторма, вам не нужно использовать там петлю.Получив точку пересечения, вы можете получить требуемый угол, используя точечное произведение или формула наклона .
N = 50; % Number of events
X = 50; Y = 50;
P1x = rand(N,1) * X;
P1y = rand(N,1) * Y ; % initial point
L = lognrnd(2,0.7,[N,1]); % Sample track length
Theta = mod(normrnd(90,15,[N,1]),360);
dx = L.*cos(deg2rad(Theta - 90));
dy = L.*sin(deg2rad(Theta - 270));
P2x = P1x + dx; P2y = P1y + dy; % Final point
plot([0 X X 0 0],[0 0 Y Y 0]); hold on
% GEt the line
lx = [(X+Y)/2.25, (X+Y)/3, (X+Y)/3, (X+Y)/4] ;
ly = [0, (X+Y)/10, (X+Y)/2.5, (X+Y)/2];
plot(lx,ly,'b')
plot(P1x,P1y,'ro')
plot([P1x P2x]',[P1y P2y]','-')
% Get intersections
iwant = zeros(N,1) ; % this gives whether point intersects or not
for i = 1:N
L1 = [lx ; ly] ;
L2 = [P1x(i) P2x(i) ;P1y(i) P2y(i)] ;
P = InterX(L1,L2) ;
if ~isempty(P)
plot(P(1),P(2),'*r')
iwant(i) = 1 ;
end
end
xlabel('X [km]'); ylabel('Y [km]');
xlim([-X/4 1.25*X]); ylim([-Y/4 1.25*Y])
Проверьте число / результат, полученный из приведенного выше кода.Помеченные красным цветом точки - это точки пересечения.