Cum se trasează 4 linii separate pentru a forma un pătrat în MATLAB? (Programare, Matlab, Plot, Matlab Figura)

fiorie a intrebat.

Trasez 4 linii separate aleatoare într-un grafic și vreau ca acestea să fie conectate pentru a forma un pătrat. Asta e ceea ce am obținut până acum, orice indicații ar fi de mare ajutor. De asemenea, aceasta este prima dată când folosesc MATLAB, așa că vă rog să nu veniți pentru mine.

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

Am nevoie ca ele să fie 4 linii de aceeași lungime care se unesc pentru a forma un pătrat. Codul de mai sus îmi dă 2 linii de legătură, dar chiar nu știu încotro să merg de acolo.

Încercarea mea de cod de mai sus:

Comentarii

  • Bine ați venit pe site! În ceea ce privește Vă rog să nu veniți după mine: dacă primești un downvote, nu este împotriva tine, , înseamnă pur și simplu că întrebarea dvs. nu arată efort, este neclară sau nu este utilă (în opinia celui care a votat în minus). Faptul că este vorba despre dvs. prima dată când utilizați MATLAB este irelevant. Întrebările și răspunsurile sunt votate, nu oamenii –  > Por Luis Mendo.
  • Vă sugerez să folosiți un apel la plot pentru fiecare linie, cu hold on, , pur și simplu pentru că folosiți greșit funcția plot. –  > Por Ander Biguri.
1 răspunsuri
Pranav Hosangadi

The plot pur și simplu trasează coordonatele x și y pe care i le furnizați. Dându-i coordonatele corecte pentru a le trasa este treaba ta. Deci, cum ați putea afla coordonatele unui pătrat, având în vedere un punct de plecare și lungimea și direcția uneia dintre laturi?

Să presupunem că avem

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

În primul rând, să transformăm direcția într-un vector unitar.

u_vec = d0 ./ norm(d0);

Apoi, să rotim acest vector cu 90 de grade pentru a obține vectorul unitar pentru latura perpendiculară

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

Folosind adunarea vectorilor, știm că al doilea punct este p1 = p0 + L * u_vec. Al treilea punct este p2 = p1 + L * u_perp, , iar punctul final este p3 = p_0 + L * u_perp. Putem suprapune acești vectori doar pentru a ușura tastarea codului de reprezentare grafică:

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

Și, în cele din urmă, să le trasăm:

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;

Sau, puteți stivui totul într-o singură matrice și reprezentarea folosind o singură linie:

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