Вы можете следовать следующим образом:
Сначала обратитесь по этой ссылке , чтобы понять, как получить один конец прямой линии с заданным уклоном и один конец линии.
Во-вторых, код должен найти некоторые точки пересечения, для которых я использовал функцию обмена файлами MATLAB InterX из этой ссылки .
Проверьте код ниже:
mask = zeros(400,600);
% mesh grid for the zone
[X,Y]= meshgrid(1:600,1:400) ;
L1 = [X(:) Y(:)] ;
% Given line details
A = [200,300]; % one end of line
th = 45 ; % slope of line in degrees
m = tand(th) ; % slope of the line
d = 100 ; % Length of the line we want
% get the other end of line
x = [A(1)+ d*sqrt(1/(1+m^2)) A(1)- d*sqrt(1/(1+m^2))] ;
y = [A(2)+ m*d*sqrt(1/(1+m^2)) A(2)- m*d*sqrt(1/(1+m^2))] ;
B = [x(1) y(1)] ;
% Get nearest neighbors of points of the line in mask
idx1 = knnsearch(L1,A) ;
idx2 = knnsearch(L1,B) ;
% Get intersection points
L2 = [[A(1) x(1)]' [A(2) y(1)]']' ; % take A and B points
P = InterX(L1',L2) ;
idx = knnsearch(L1,P') ;
mask(idx) = 1 ;
imshow(mask)
Вывод кода выглядит следующим образом: