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

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.

 採用された回答

Matt J
Matt J 2021 年 10 月 15 日
編集済み: Matt J 2021 年 10 月 15 日

1 投票

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 件のコメント

Niklas Kurz
Niklas Kurz 2021 年 10 月 17 日
Appreciated approch, using the outward second derivat of a circle parametrization.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeVector Fields についてさらに検索

質問済み:

2021 年 10 月 15 日

コメント済み:

2021 年 10 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by