Я хочу найти весовую матрицу для метода алгебраической реконструкции. Для этого мне нужно найти пересечение линий с сеткой. я могу найти прямую линию пересечения с линией, но я должен сохранить номер пересеченной линии сетки мудрый. так что предположим, что если в первом квадрате сетки не пересекаются с сеткой, тогда положим нуль на первый элемент весовой матрицы. здесь код, который я пытался на линии пересечения:Как получить сегмент пересечения прямоугольника прямой в matlab
ak = 3:6
aka = 3:6
x = zeros(size(aka))
y = zeros(size(ak))
for k = 1:length(ak)
line([ak(1) ak(end)], [aka(k) aka(k)],'color','r')
end
% Vertical grid
for k = 1:length(aka)
line([ak(k) ak(k)], [aka(1) aka(end)],'color','r')
end
hold on;
X =[0 15.5]
Y = [2.5 8.5]
m = (Y(2)-Y(1))/(X(2)-X(1)) ;
c = 2.5 ;
plot(X,Y)
axis([0 10 0 10])
axis square
% plotting y intercept
for i = 1:4
y(i) = m * ak(i) + c
if y(i)<2 || y(i)>6
y(i) = 0
end
end
% plotting x intercept
for i = 1:4
x(i) = (y(i) - c)/m
if x(i)<2 || x(i)>6
x(i) = 0
end
end
z = [x' y']
Объяснение проблемы:
У меня есть строка, определяемая параметрами m, h
, где y = m*x + h
Эта линия проходит через сетку (т.е. пикселей). Для каждого квадрата (a, b)
сетки (т. Е. Квадрата [a, a+1]x[b, b+1]
), я хочу определить , если данная линия пересекает этот квадрат или нет, и если да, то какая длина сегмента сегмента равна . Так что я могу построить весовую матрицу, которая необходима для метода алгебраической реконструкции.
Я не знаю, с чем вам нужна помощь. Ваш код рисует линию и сетку с сеткой 1 от 3 до 6. И возвращает значения y в 3,4,5 и 6. Что вы хотите в качестве конечного результата и что является точной проблемой? –
@ TheMinion У меня есть линия, определяемая параметрами m, h, где y = m * x + h Эта линия проходит через сетку (то есть пиксели). Для каждого квадрата (a, b) сетки (т. Е. Квадрата [a, a + 1] x [b, b + 1]), я хочу определить, пересекает ли данная линия этот квадрат или нет, и если да, какова длина сегмента в квадрате. Так что я могу построить весовую матрицу, которая необходима для метода алгебраической реконструкции. –
@ParthPatel Рассмотрите возможность изменения заголовка вопроса на «Как получить сегмент пересечения прямых прямоугольников в Matlab». Я ответил на ваш вопрос ниже и привел пример того, как это сделать. – DontCareBear