Pregunta

Estoy trabajando en MATLAB y tengo un problema muy simple: tengo un objeto definido por su posición (x, y) y theta (un ángulo, en grados). Me gustaría trazar el punto y agregar una flecha, comenzando desde el punto y apuntando hacia la dirección definida por el ángulo. En realidad, ni siquiera tiene que ser una flecha, ¡cualquier cosa que muestre gráficamente el valor del ángulo servirá!

Aquí hay una imagen que muestra el tipo de cosas que estoy tratando de dibujar:

eliminó el enlace muerto de ImageShack

¿Fue útil?

Solución

La función de trazado de carcaj () traza flechas como esta. Tome su valor theta y conviértalo a (x, y) coordenadas cartesianas que representan el vector que desea trazar como una flecha y úselos como los parámetros (u, v) para temblar ().

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

Eche un vistazo en línea a la documentación de Matlab para ver otros tipos de gráficos; Hay mucho, incluyendo varias parcelas radiales. Están en el MATLAB > Funciones > Gráficos > Sección de ploteo especializado. Hacer " doc temblar " en la línea de comandos y navegar alrededor.

Otros consejos

Si desea probar y hacer algo que se parece a la imagen a la que se vinculó, aquí hay un código para ayudarlo ( NOTA: primero deberá descargar el envío arrow.m por Erik Johnson en MathWorks File Exchange , que siempre me gusta usar para generar flechas de cualquier forma y tamaño):

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

Y así es como se vería:

 introduce la descripción de la imagen aquí

Luego puede agregar texto a la gráfica (para el ángulo y los valores de las coordenadas) utilizando text .

Aquí hay una respuesta parcial, espero que puedas averiguar el resto. Abrí el editor de Figuras y abrí las herramientas de la trama. Arrastré una flecha de la paleta a mi figura. Entonces generé un archivo-m. Esto incluía la línea:

anotación (figura 1, 'flecha', [0.1489 0.2945], [0.5793 0.6481]);

Entonces, el primer par de coordenadas es el comienzo de la flecha. Vas a tener que averiguar el extremo puntiagudo (segundo par de coordenadas) usando un poco de trigonometría. Incluso podrías obtener el arco pequeño si haces más trucos con las herramientas de trazado.

Háganos saber si el trig le derrota. Ah, y olvidé trazar el punto, pero supongo que puedes resolverlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top