Question

Je travaille dans MATLAB et je suis coincé sur un problème très simple: j'ai un objet défini par sa position (x, y) et theta (un angle, en degrés). Je voudrais tracer le point et ajouter une flèche, partant du point et pointant vers la direction définie par l'angle. En fait, il ne doit même pas s'agir d'une flèche, tout ce qui peut représenter graphiquement la valeur de l'angle fera l'affaire!

Voici une photo montrant le genre de chose que j'essaie de dessiner:

Suppression du lien ImageShack mort

Était-ce utile?

La solution

La fonction de traçage de quiver () trace les flèches de cette façon. Prenez votre valeur thêta et convertissez-la en coordonnées (x, y) cartésiennes représentant le vecteur que vous souhaitez tracer sous forme de flèche et utilisez-les comme paramètres (u, v) pour quiver ().

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

Parcourez en ligne la documentation Matlab pour connaître les autres types de tracé. il y a beaucoup, y compris plusieurs parcelles radiales. Ils sont dans le MATLAB > Fonctions > Graphiques > Section de traçage spécialisée. Ne " doc quiver " en ligne de commande et parcourez les lieux.

Autres conseils

Si vous souhaitez créer quelque chose qui ressemble à l'image vers laquelle vous avez créé un lien, voici un code pour vous aider à le faire ( REMARQUE: , vous devez d'abord télécharger la soumission arrow.m par Erik Johnson sur Échange de fichiers MathWorks , que j’aime utiliser pour générer des flèches de toutes formes et de toutes tailles:

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

Et voici à quoi cela ressemblerait:

 entrer la description de l'image ici

Vous pouvez ensuite ajouter du texte au tracé (pour l'angle et les valeurs de coordonnées) à l'aide du texte fonction.

Voici une réponse partielle, je suppose que vous pouvez trouver le reste. J'ai lancé l'éditeur de figures et ouvert les outils de l'intrigue. J'ai fait glisser une flèche de la palette sur ma figure. Ensuite, j'ai généré un fichier m. Cela comprenait la ligne:

annotation (figure1, 'flèche', [0.1489 0.2945], [0.5793 0.6481]);

La première paire de coordonnées est donc le début de la flèche. Vous allez devoir déterminer la fin pointue (deuxième paire de coordonnées) en utilisant un peu de trigonométrie. Vous pourriez même être capable d’obtenir le petit arc si vous jouez un peu plus avec les outils d’intrigue.

Faites-nous savoir si le trig vous bat. Oh, et j'ai oublié de tracer le point, mais je suppose que vous pouvez comprendre cela?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top