繁体   English   中英

plot 4 条单独的线如何在 MATLAB 中形成一个正方形?

[英]How to plot 4 separate lines to form a square in MATLAB?

我在 plot 中绘制 4 条随机单独的线,我希望它们连接起来形成一个正方形。 这是我到目前为止所得到的,任何指针都会非常有帮助。 另外,这是我第一次使用 MATLAB 所以请不要来找我。

N = 1;
L = 0.2;


x = L +rand(1,N)*(1-2*L);
y = L +rand(1,N)*(1-2*L);


angs = rand(1,N)*360;

xe = x - L*cosd(angs);
ye = y + L*sind(angs);
xb = -x - L*cosd(angs);
yb = y +  L*sind(angs);

ax = axes;

plot(ax,[x;xe],[y;ye],[x;xb],[y;yb])

axis square

我需要它们是 4 条相同长度的线,它们连接起来形成一个正方形。 上面的代码给了我 2 条连接线,但我真的不知道从哪里到 go。

我对上述代码的尝试:我对上述代码的尝试

plot function 只是绘制了您给它的 x 和 y 坐标。 给它正确的坐标 plot 是你的工作。 那么,在给定起点以及其中一条边的长度和方向的情况下,您将如何计算正方形的坐标?

假设我们有

p0 = rand(1, 2); % p0(1) => x; p0(2) => y
L = 10;
d0 = rand(1, 2); % The direction vector. 

首先,让我们将方向转换为单位向量。

u_vec = d0 ./ norm(d0);

接下来,让我们将这个向量旋转 90 度,得到垂直边的单位向量

u_perp = ([0, -1; 1 0] * u_vec')';

使用向量加法,我们知道第二个点是p1 = p0 + L * u_vec 第三点是p2 = p1 + L * u_perp ,最后一点是p3 = p_0 + L * u_perp 我们可以堆叠这些向量,以便更容易输入绘图代码:

l1 = [p0; p1];
l2 = [p1; p2];
l3 = [p2; p3];
l4 = [p3; p0];

最后是 plot 他们:

figure();
hold on;
plot(l1(:, 1), l1(:, 2));
plot(l2(:, 1), l2(:, 2));
plot(l3(:, 1), l3(:, 2));
plot(l4(:, 1), l4(:, 2));
axis square;

在此处输入图像描述

或者,您可以使用一行将所有内容堆叠到一个数组和 plot 中:

sq = [p0; p1; p2; p3; p0];
figure();
plot(sq(:, 1), sq(:, 2));
axis square;

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM