How to draw a vector/line in a mesh

29 views (last 30 days)
Lama Hamadeh
Lama Hamadeh on 16 Mar 2021
Commented: Lama Hamadeh on 19 Mar 2021
Hi all,
I have the follwoing mesh:
%Defining space variables
L = 4; %boundary legth
ns = 25; %number of points on S axis
np = 25; %number of points on P axis
s = linspace(0,L,ns); %boundary variable
p = linspace(-1,1,np); % direction/angle variable
[S,P] = meshgrid(s,p); %construct coordinates meshgrid
% mesh needs X,Y and Z so create z
Z = zeros(size(S));
%Visualise the grid
figure;
mesh(S,P,Z,'Marker','o','MarkerFaceColor','k','EdgeColor',"k")
axis equal tight
view(2)
xlabel('$S$','Interpreter','latex')
ylabel('$P$','Interpreter','latex')
set(gca,'TickLabelInterpreter','latex')
set(gca,'FontSize',16)
And I want to draw a line/vector starting from the bottom of the mesh upwards in a way that it's inclined to the right with a certain angle. Could you please help on how to draw such a line in the mesh and how to calculate its angle with the norm (not with the x axis).
Thanks.
Lama
  2 Comments
Lama Hamadeh
Lama Hamadeh on 17 Mar 2021
Thanks for your reply.
For simplicity, let's suppose we have a unit length square with an initial vector v0 that makes a angle θ0 with the norm as shown in this illustrative picture:
the code for constructing the square is as follwoing:
%the main coordinates of the square
x1 = 0; y1 = 0;
x2 = 1; y2 = 0;
x3 = 1; y3 = 1;
x4 = 0; y4 = 1;
x5 = 0; y5 = 0;
%the x and y variables
x = [x1 x2 x3 x4 x5];
y = [y1 y2 y3 y4 y5];
%plotting the square
plot(x,y,'b','LineWidth',2)
axis([-0.2 1.2 -0.2 1.2])
set(gca,'TickLabelInterpreter','latex')
set(gca,'FontSize',16)
But how can I create the line/vector, v0, based on its position and the angle that it makes with the norm. I suppose that based on its position and the angle, I can know the equation of the line.
Thanks.

Sign in to comment.

Accepted Answer

darova
darova on 18 Mar 2021
Thanks for the drawing, i understand
Here is a way:
[x,y] = meshgrid([0 1]); % coordinates for square
t0 = 45;
[u0,v0] = pol2cart(t0,1); % angle and radius
surf(x,y,x*0,'facecolor','none')
quiver(0.5,0,u0,v0) % start position and components of vector
axis([-1 2 -1 2])
  2 Comments
Lama Hamadeh
Lama Hamadeh on 19 Mar 2021
I just found out that it relates to scaling factor which is by default embedded in quiver MAtlab funciton. When scale is 'off' or 0, such as quiver(X,Y,U,V,'off'), then automatic scaling is disabled and the arrow reaches the specified x and y correctly.
Thansk for your help.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!