2009-11-26 8 views
12

Ich arbeite in MATLAB und ich bin auf ein sehr einfaches Problem fest: Ich habe ein Objekt durch seine Position definiert (x,y) und theta (ein Winkel, in Grad). Ich möchte den Punkt zeichnen und einen Pfeil hinzufügen, der vom Punkt ausgeht und in die Richtung zeigt, die durch den Winkel definiert wird. Es muss eigentlich gar kein Pfeil sein, irgendetwas Grafisches, das den Wert des Winkels zeigt, reicht!Wie zeige ich in MATLAB einen Pfeil an, der in einem bestimmten Winkel positioniert ist?

Hier ist ein Bild, um die Art der Sache zeigt, ich versuche zu ziehen:

entfernt tot Images Link

Antwort

13

Die Köcher() Plotfunktion plottet Pfeile wie folgt. Nehmen Sie Ihren Theta-Wert und wandeln Sie ihn in (x, y) kartesische Koordinaten um, die den Vektor darstellen, den Sie als Pfeil zeichnen möchten, und verwenden Sie diese als (u, v) -Parameter zum Beben().

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]); 

Werfen Sie einen Blick in die Matlab-Dokumentation, um andere Plottypen zu sehen; es gibt eine Menge, einschließlich einiger radialer Plots. Sie befinden sich im Bereich MATLAB> Funktionen> Grafiken> Spezialisiertes Plotten. Führen Sie "doc kiver" in der Befehlszeile aus und navigieren Sie durch.

2

Hier ist eine Teilantwort, erwarte ich Ihnen den Rest herausfinden können. Ich feuerte den Figureneditor auf und öffnete die Plotwerkzeuge. Ich zog einen Pfeil von der Palette auf meine Figur. Dann habe ich eine m-Datei erstellt. Dazu gehörte die Zeile:

Annotation (Abbildung 1, 'Pfeil', [0.1489 0.2945], [0.5793 0.6481]);

Das erste Koordinatenpaar ist also der Anfang des Pfeils. Sie müssen das spitze Ende (zweites Koordinatenpaar) mit ein wenig Trigonometrie herausfinden. Sie könnten sogar in der Lage sein, den kleinen Bogen zu bekommen, wenn Sie etwas mehr mit Plot-Tools herumspielen.

Lassen Sie uns wissen, ob die Triggerung Sie besiegt. Oh, und ich habe vergessen, den Punkt zu planen, aber ich denke, dass Sie das herausfinden können?

7

Wenn Sie versuchen wollen, etwas zu machen, das Sie hier verknüpft wie das Bild aussieht ist einige Code, den Sie es tun, um zu helfen (HINWEIS: Sie würden zuerst die Vorlage arrow.m von Erik Johnson auf dem MathWorks File Exchange herunterladen müssen, die Ich mag immer zur Erzeugung von Pfeilen von jeder Form und Größe verwenden):

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 

und hier ist, wie es aussehen würde:

enter image description here

Sie können dann mit der Funktion text Text zum Plot hinzufügen (für den Winkel und die Koordinatenwerte).

Verwandte Themen