2009-11-26 20 views
12

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 mostri graficamente il valore dell'angolo lo farà!Come posso visualizzare una freccia posizionata su un angolo specifico in MATLAB?

Ecco una foto che mostra il genere di cosa che sto cercando di disegnare:

rimosso collegamento ImageShack morti

risposta

13

La funzione di traccia di quiver() traccia frecce come questa. Prendi il tuo valore theta e convertilo in (x, y) coordinate cartesiane che rappresentano il vettore che vuoi tracciare come una freccia e usa quelle come i parametri (u, v) in faretra().

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 alla documentazione di Matlab online per vedere altri tipi di trama; ce ne sono molte, incluse diverse trame radiali. Sono nella sezione MATLAB> Funzioni> Grafica> Plottaggio specializzato. Fai "doc quiver" alla riga di comando e naviga.

2

Ecco una risposta parziale, mi aspetto che si può capire il resto. Ho acceso l'editor di figure e aperto gli strumenti di trama. Ho trascinato una freccia dalla tavolozza sulla mia figura. Quindi ho generato un m-file. Ciò includeva la riga:

annotazione (figura1, 'freccia', [0,1489 0,2945], [0,5793 0,6481]);

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

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

7

Se si vuole provare a fare qualcosa che sembra come l'immagine si è collegato al, ecco qualche codice per aiutarti a farlo (NOTA: si dovrebbe per prima cosa scaricare la presentazione arrow.m dal Erik Johnson sul MathWorks File Exchange, che mi piace sempre di usare per la generazione di 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 cosa sarebbe simile:

enter image description here

È quindi possibile aggiungere del testo al grafico (per l'angolo e i valori delle coordinate) utilizzando la funzione text.

Problemi correlati