Tôi muốn tìm ma trận trọng lượng cho phương pháp tái tạo đại số. Đối với điều này tôi phải tìm đường giao nhau với lưới điện. tôi có thể tìm thấy đường giao nhau trực tiếp với dòng nhưng tôi phải lưu trữ số lượng đường lưới phân đoạn đường giao nhau một cách khôn ngoan. vì vậy giả sử nếu trong ô lưới hình vuông đầu tiên không giao nhau với lưới thì đặt 0 vào phần tử đầu tiên của ma trận trọng số. đây mã mà tôi đã cố gắng cho ngã tư đường:Cách lấy phân đoạn đường giao nhau hình chữ nhật trong 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']
Giải thích về vấn đề:
Tôi có một dòng, xác định bởi các thông số m, h
, nơi y = m*x + h
dòng này đi qua một mạng lưới (tức pixel). Đối với mỗi ô vuông (a, b)
của lưới (ví dụ: hình vuông [a, a+1]x[b, b+1]
), tôi muốn xác định nếu dòng đã cho đi qua hình vuông này hay không, và nếu có thì chiều dài của đoạn là trong hình vuông. Để tôi có thể xây dựng ma trận trọng lượng cần thiết cho phương pháp tái tạo đại số.
Tôi không biết bạn muốn trợ giúp điều gì. Mã của bạn đang vẽ một đường thẳng và một lưới có lưới 1 từ 3 đến 6. Trả về giá trị y ở 3,4,5 và 6. Bạn muốn kết quả cuối cùng là gì và vấn đề chính xác là gì? –
@TheMinion Tôi có một dòng, được xác định bởi các tham số m, h, trong đó y = m * x + h Đường này đi qua một mạng lưới (ví dụ: pixel). Đối với mỗi ô vuông (a, b) của lưới (nghĩa là hình vuông [a, a + 1] x [b, b + 1]), tôi muốn xác định xem đường đã cho có vượt qua ô vuông này hay không, và nếu có, chiều dài của phân đoạn trong hình vuông là bao nhiêu. Vì vậy mà tôi có thể xây dựng ma trận trọng lượng cần thiết cho phương pháp tái tạo đại số. –
@ParthPatel Cân nhắc việc thay đổi tiêu đề của câu hỏi thành "Cách lấy đoạn giao cắt hình chữ nhật dòng trong MATLAB". Tôi đã trả lời câu hỏi của bạn dưới đây và đưa ra một ví dụ về cách thực hiện nó. – DontCareBear