How to plot circle with direction?
Mostrar comentarios más antiguos
I wish to plot a circle with direction of its motion.An exmaple is attached below.

I wish to get around 5-10 arrows per circle (that can be chnaged as per our need).
Below attached matlab.mat file is the data file.
The code goes like:
subplot(2,2,[1 3])
h1 = plot(x, y, '-','Color','b','LineWidth',2);
Now I dont know how to put 5-10 arrows showing direction.
Can anyone help?
Respuestas (1)
Bruno Luong
el 10 de Sept. de 2019
Editada: Bruno Luong
el 10 de Sept. de 2019
2D version. adapt to your need

% circle parameter
r = 5;
cx = 0;
cy = 0;
cfun = @(tt) [cx+r*cos(tt); cy+r*sin(tt)];
xy = cfun(linspace(0,2*pi,361));
close all
hold on
plot(xy(1,:),xy(2,:),'b');
% arrows parameters
m = 10; % number of arrows
h = 0.1*r; % height
w = 0.1*r; % width
dir = -1; % 1 anticlock, -1 clock
a = [-w/2 0 w/2;
-dir*h 0 -dir*h];
for k=1:m
tt = 2*pi*k/m;
R = [cos(tt) -sin(tt);
sin(tt) cos(tt)];
xy = cfun(tt)+ R*a;
plot(xy(1,:),xy(2,:),'b');
end
axis equal
5 comentarios
Bruno Luong
el 10 de Sept. de 2019
Editada: Bruno Luong
el 10 de Sept. de 2019
3D version:

% circle parameters
r = 5;
cxyz = [0; 0; 0]; % center
N = randn(3,1); % normal to circle plane
N = N(:)/norm(N);
Q = null(N');
cfun = @(tt) cxyz + r*Q*[cos(tt); sin(tt)];
close all
hold on
xyz = cfun(linspace(0,2*pi,361));
plot3(xyz(1,:),xyz(2,:),xyz(3,:),'b');
% 3D arrows parameters
m = 10; % number of arrows
h = 0.12*r; % height
w = 0.08*r; % width
dir = -1; % 1 anticlock, -1 clock
p = 16; % #circular discretization of the arrow
phi = linspace(0,2*pi,p+1);
Va = [(w/2)*cos(phi);
(-dir*h)+zeros(size(phi));
(w/2)*sin(phi)];
Va(:,end+1) = [0; 0; 0];
F = [ 1:p;
2:p+1;
(p+2)+zeros(1,p)].';
F2 = 1:p+1;
Q = [Q, N];
for k=1:m
tt = 2*pi*k/m;
R = [cos(tt) -sin(tt) 0;
sin(tt) cos(tt) 0;
0 0 1];
Vk = cfun(tt)+ Q*R*Va;
patch('Faces', F, 'Vertices', Vk', 'FaceColor', 'b', 'EdgeColor', 'none');
patch('Faces', F2, 'Vertices', Vk', 'FaceColor', 'b', 'EdgeColor', 'none');
end
axis equal
view(3);
Bruno Luong
el 11 de Sept. de 2019
Editada: Bruno Luong
el 11 de Sept. de 2019
No sorry, I won't process your data.
I let you adapt the code and plot exactly the way you like. If you have specific question feel free to ask.
Megha
el 11 de Sept. de 2019
michael
el 20 de En. de 2021
I'w suggest to set
X = 10; % this is step size - each 10th point will have a vector
vSelect0 = 1:X:(lenTime-1);
Categorías
Más información sobre Annotations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
