簡體   English   中英

matlab 矩形 plot 帶矩陣

[英]matlab rectangle plot with a matrices

我正在繪制矩形。 我希望從最大的矩形開始繪制矩形到最小的矩形。我的代碼的問題是我保持同心矩形,其中寬度的間隙小於長度的間隙。 如果您想了解更多信息,請在第 81 行放置一個斷點並運行每個循環以了解我的意思。 查看每個后續矩形是如何繪制的。 您會看到新舊矩形的寬度之間的差距小於長度差距。 我提供代碼以便您提供幫助。 非常感謝您的幫助。

    gap=(22.2/20)*10^(-3);
h=(0:7)*10^(-3);
n=20;
a=-59.9*10^(-3);
b=-5.5*10^(-3);
c=-125*10^(-3);
d=125*10^(-3);




a2=59.9*10^(-3);
b2=5.5*10^(-3);
c2=-125*10^(-3);
d2=125*10^(-3);




for i=1:length(h)
for j=1:n
%line 1
y1=c+gap*(j-1):0.1*10^-(3):d-gap*(j-1);
x1=ones(1,length(y1))*(a+gap*(j-1));

z1=ones(1,length(y1))*h(i);


lx1=ones(1,length(c2+gap*(j-1):0.1*10^(-3):d2-gap*(j-1)))*(a2-gap*(j-1));
ly1=c2+gap*(j-1):0.1*10^-(3):d2-gap*(j-1);
lz1=ones(1,length(ly1))*h(i);



%line 2
x2=a+gap*(j-1):0.1*10^-(3):b-gap*(j-1);
y2=ones(1,length(x2))*d-gap*(j-1);
z2=ones(1,length(y2))*h(i);



lx2=a2-gap*(j-1):-0.1*10^-(3):b2+gap*(j-1);
ly2=ones(1,length(lx2))*(d2-gap*(j-1));
lz2=ones(1,length(ly2))*h(i);


%line 3
y3=d-gap*(j-1):-0.1*10^-(3):c+gap*(j-1);
x3=ones(1,length(y3))*(b-gap*(j-1));

z3=ones(1,length(y3))*h(i);


ly3=d2-gap*(j-1):-0.1*10^-(3):c2+gap*(j-1);
lx3=ones(1,length(ly3))*(b2+gap*(j-1));

lz3=ones(1,length(ly3))*h(i);
%line 4
x4=b-gap*(j-1):-0.1*10^-(3):a+gap*(j-1);
y4=ones(1,length(x4))*c+gap*(j-1);
z4=ones(1,length(x4))*h(i);



lx4=b2+gap*(j-1):0.1*10^-(3):a2-gap*(j-1);
ly4=ones(1,length(lx4))*c2+gap*(j-1);
lz4=ones(1,length(lx4))*h(i);


u=[x1 x2 x3 x4];
v=[y1 y2 y3 y4];
w=[z1 z2 z3 z4];

u1=[lx1 lx2 lx3 lx4];
v1=[ly1 ly2 ly3 ly4];
w1=[lz1 lz2 lz3 lz4];
plot3(u1,v1,w1);
hold on
plot3(u,v,w); 
hold on
end
end

您的代碼對於它應該做的事情來說太復雜了。 一個矩形只能用 5 個點 A,B,C,D,A 定義,其中最后一個點關閉矩形。

這是一個示例,我使用縮放矩陣在每個矩形之間應用相同的間隙:

%% Creation of the variables
gap = 0.1;                     % gap between each rectangle
w = 1;                         % width
l = 2;                         % length
x = [-w/2 w/2 w/2 -w/2 -w/2];  % zero centered x-coordinate
y = [-l/2 -l/2 l/2 l/2 -l/2];  % zero centered y-coordinate
z = [1 1 1 1 1];               % z coordinate

%% Plot each rectangle
for ii = 0:5
    S = diag([1-2*ii*gap/w, 1-2*ii*gap/l, 1]) % scaling matrix where the gap is ponderated with the widht/length of our rectangle
    C = S*[x;y;z];                            % apply the scaling
    plot3(C(1,:),C(2,:),C(3,:))
    hold on
end

axis equal

結果:

在此處輸入圖像描述

您可以使用以下方法輕松移動矩形:

plot3(C(1,:)+shift_x,C(2,:)+shift_y,C(3,:))

所以基本上當你需要變換幾何體時,最簡單的方法通常是使用變換矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM