Wie kann ich einen Pfeil in einem bestimmten Winkel in MATLAB positioniert angezeigt werden?

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

  •  05-07-2019
  •  | 
  •  

Frage

ich in MATLAB arbeitete und ich bin auf ein sehr einfaches Problem stecken: Ich habe ein Objekt bekommt definiert durch seine Position (x,y) und theta (ein Winkel, in Grad). Ich mag den Punkt zeichnen und einen Pfeil hinzuzufügen, von dem Punkt beginnen und in Richtung der durch den Winkel definiert. Es ist eigentlich nicht einmal ein Pfeil, alles grafisch muss sein, den Wert des Winkels zeigt tun!

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

entfernt tot Images Link

War es hilfreich?

Lösung

Der Köcher () Plotten Funktion Plots Pfeile wie diese. Nehmen Sie sich Theta-Wert und wandelt es in (x, y) kartesischen Koordinaten, die den Vektor Sie als Pfeil darstellen möchten und verwenden diese als die (u, v) Parameter Köcher ().

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 durch Online-Dokumentation Matlab andere Plottypen zu sehen; es gibt eine Menge, darunter mehrere radiale Plots. Sie sind in der MATLAB> Funktionen> Grafik> Specialized Plotten Abschnitt. Do „doc Köcher“ in der Befehlszeile und stöbern.

Andere Tipps

Wenn Sie versuchen wollen und etwas, das wie das Bild aussieht Sie verknüpft, hier einige Code, den Sie es tun, um zu helfen ( Hinweis: Sie müssten zuerst die Vorlage herunterladen arrow.m von Erik Johnson auf der MathWorks Exchange- Datei, die ich für die Erzeugung Pfeile von jeder Form und Größe verwenden, immer wieder gerne):

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:

Sie können dann Text auf dem Grundstück hinzuzufügen (für den Winkel und die Koordinatenwerte) mit der text Funktion.

Hier ist eine teilweise Antwort erwarte ich Ihnen den Rest herausfinden können. Ich feuerte die Figuren-Editor auf und öffnete die Plot-Tools. Ich schleppte einen Pfeil aus der Palette auf meine Figur. Dann erzeugen ich eine m-Datei. Dazu gehörte auch die Zeile:

Anmerkung (figure1 'Pfeil', [0,1489 0,2945], [0,5793 0,6481]);

So ist das erste Paar von Koordinaten der Start des Pfeils. Du wirst das spitze Ende (zweites Koordinatenpaar) mit einem wenig Trigonometrie haben, um herauszufinden. Man könnte sogar in der Lage sein, den kleinen Bogen zu erhalten, wenn Sie etwas mehr tun, um mit Plot Tool Hantieren.

Lassen Sie uns wissen, wenn die trig Sie besiegt. Oh, und ich vergaß den Punkt zu zeichnen, aber ich denke, man kann das herausgefunden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top