How to plot vectors exactly on the edge of another graph?

5 views (last 30 days)
Niklas Kurz
Niklas Kurz on 15 Oct 2021
Commented: Niklas Kurz on 17 Oct 2021
The best I've got is expressed by the following:
clear
[u,v] = meshgrid(-2:0.2:2);
f = u.^2+v.^2-1;
[du,dv] = gradient(f);
hold all
g = @(a,b) a.^2+b.^2-1;
fimplicit(g)
D1 = u.^2+v.^2 >1;
D2 = u.^2+v.^2 <1.5;
v(~D1) = NaN;
u(~D2) = NaN;
norm = norm(gradient(f));
quiver(u,v,du./norm,dv./norm,'Color','r')
axis equal
However, the vectors are close to the edge, but not right originating from there. I can't think a straight way around it.

Accepted Answer

Matt J
Matt J on 15 Oct 2021
Edited: Matt J on 15 Oct 2021
t=linspace(0,360,91); t(end)=0;
u=cosd(t);
v=sind(t);
fimplicit(@(a,b) a.^2+b.^2-1);hold on
quiver(u,v,u,v,'Color','r'); hold off
axis equal
  1 Comment
Niklas Kurz
Niklas Kurz on 17 Oct 2021
Appreciated approch, using the outward second derivat of a circle parametrization.

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!

Translated by