Chcę znaleźć macierz masy dla metody rekonstrukcji algebraicznej. W tym celu muszę znaleźć przecięcie linii z siatką. mogę znaleźć bezpośrednie przecięcie linii z linią, ale muszę przechowywać mądrą liczbę przecinanych segmentów linii. więc załóżmy, że jeśli w pierwszym kwadracie siatki nie przecinają się z siatką, to umieść zero na pierwszym elemencie macierzy wagi. tutaj kod, który próbowałem na linii przecięcia:Jak uzyskać segment przecięcia prostokątnego prostokąta w 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']
Wyjaśnienie problemu:
Mam linii, zdefiniowane przez parametry m, h
, gdzie y = m*x + h
Ta linia przechodzi w poprzek siatki (tj pikseli). Dla każdego kwadratu (a, b)
siatki (tj. Kwadratu [a, a+1]x[b, b+1]
), chcę określić , jeśli podana linia przecina ten kwadrat, a jeśli tak, jaka jest długość segmentu w kwadracie. Żebym mógł zbudować matrycę wagi, która jest niezbędna dla metody rekonstrukcji algebraicznej.
Nie wiem, z czym chcesz uzyskać pomoc. Twój kod rysuje linię i siatkę z siatką 1 od 3 do 6. I zwraca wartości y na 3,4,5 i 6. Czego chcesz jako wynik końcowy i jaki jest dokładny problem? –
@TheMinion Mam linię, zdefiniowaną przez parametry m, h, gdzie y = m * x + h Ta linia przechodzi przez siatkę (tj. Piksele). Dla każdego kwadratu (a, b) siatki (tj. Kwadratu [a, a + 1] x [b, b + 1]), chcę określić, czy dana linia przecina ten kwadrat, czy nie, a jeśli tak, to jaka jest długość segmentu na placu. Tak, że mogę zbudować matrycę wagi, która jest niezbędna dla metody rekonstrukcji algebraicznej. –
@ParthPatel Rozważ zmianę tytułu pytania na "Jak uzyskać segment przecięcia prostokąta prostokąta w matlabie". Odpowiedziałem na twoje pytanie poniżej i dałem przykład, jak to zrobić. – DontCareBear