Come posso visualizzare una freccia posizionata ad un angolo specifico in MATLAB?

StackOverflow https://stackoverflow.com/questions/1803043

  •  05-07-2019
  •  | 
  •  

Domanda

Sto lavorando in MATLAB e sono bloccato su un problema molto semplice: ho un oggetto definito dalla sua posizione (x, y) e theta (un angolo, in gradi). Vorrei tracciare il punto e aggiungere una freccia, partendo dal punto e puntando verso la direzione definita dall'angolo. In realtà non deve nemmeno essere una freccia, qualsiasi cosa mostrerà graficamente il valore dell'angolo farà!

Ecco un'immagine che mostra il tipo di cosa che sto cercando di disegnare:

rimosso link ImageShack morto

È stato utile?

Soluzione

La funzione di tracciamento quiver () traccia le frecce in questo modo. Prendi il tuo valore theta e convertilo in (x, y) coordinate cartesiane che rappresentano il vettore che vuoi tracciare come una freccia e usa questi come parametri (u, v) per far tremare ().

theta = pi/9;
r = 3; % magnitude (length) of arrow to plot
x = 4; y = 5;
u = r * cos(theta); % convert polar (theta,r) to cartesian
v = r * sin(theta);
h = quiver(x,y,u,v);
set(gca, 'XLim', [1 10], 'YLim', [1 10]);

Dai un'occhiata online alla documentazione di Matlab per vedere altri tipi di trama; ce n'è molto, tra cui diversi grafici radiali. Sono nel MATLAB > Funzioni > Grafica > Sezione di stampa specializzata. Esegui " doc faretra " dalla riga di comando e sfogliare.

Altri suggerimenti

Se vuoi provare a creare qualcosa che assomigli all'immagine a cui ti sei collegato, ecco un codice per aiutarti a farlo ( NOTA: dovresti prima scaricare l'invio arrow.m di Erik Johnson su MathWorks File Exchange , che mi piace sempre utilizzare per generare frecce di qualsiasi forma e dimensione):

x = 1;                          % X coordinate of arrow start
y = 2;                          % Y coordinate of arrow start
theta = pi/4;                   % Angle of arrow, from x-axis
L = 2;                          % Length of arrow
xEnd = x+L*cos(theta);          % X coordinate of arrow end
yEnd = y+L*sin(theta);          % Y coordinate of arrow end
points = linspace(0, theta);    % 100 points from 0 to theta
xCurve = x+(L/2).*cos(points);  % X coordinates of curve
yCurve = y+(L/2).*sin(points);  % Y coordinates of curve
plot(x+[-L L], [y y], '--k');   % Plot dashed line
hold on;                        % Add subsequent plots to the current axes
axis([x+[-L L] y+[-L L]]);      % Set axis limits
axis equal;                     % Make tick increments of each axis equal
arrow([x y], [xEnd yEnd]);      % Plot arrow
plot(xCurve, yCurve, '-k');     % Plot curve
plot(x, y, 'o', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'w');  % Plot point

Ed ecco come sarebbe:

 inserisci qui la descrizione dell'immagine

È quindi possibile aggiungere testo al grafico (per i valori di angolo e coordinate) utilizzando text .

Ecco una risposta parziale, mi aspetto che tu possa capire il resto. Ho avviato l'editor di figure e ho aperto gli strumenti per la trama. Ho trascinato una freccia dalla tavolozza sulla mia figura. Quindi ho generato un m-file. Questo includeva la linea:

annotazione (figura1, 'freccia', [0.1489 0.2945], [0.5793 0.6481]);

Quindi, la prima coppia di coordinate è l'inizio della freccia. Dovrai capire la fine appuntita (seconda coppia di coordinate) usando un po 'di trigonometria. Potresti anche essere in grado di ottenere il piccolo arco se fai un po 'di più con gli strumenti della trama.

Facci sapere se il grilletto ti sconfigge. Oh, e ho dimenticato di tracciare il punto, ma immagino che tu possa capirlo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top