MATLAB中极坐标内环形曲线外扩

该曲线是散点连接而成,或者说我现在只有散点。要沿散点拟合的曲线法向外扩一定距离。求指点。

原坐标(r,a),沿着法线扩张d后的坐标(R,A),r对a求数值导数dr/da
照下面的思路编成代码即可。

tanb=(dr/da)/r
sinb=-tanb/(1+tanb^2)
cosb=-1/(1+tanb^2)
R=sqrt(r^2-2rdcosb+d^2)
A=a+arcsin(d/Rsinb)追问

散点,求不了导啊。

追答

下面的代码放到m文件里运行

function inflate
clc
clear
%数据
a=(0:0.005:2)*pi;
r=10+sin(5*a);
d=2.5;
%实现:(r,a)→(R,A)
%法线与极径夹角为b
tanb=spline(0.5*(a(1:end-1)+a(2:end)),...
diff(r)./diff(a),a)./r; %tan(b)=(dr/da)/r
cosb=-1./sqrt(1+tanb.^2); %cos(pi-b)
sinb=tanb.*cosb; %-sin(b)
R=sqrt(r.^2-2*d*r.*cosb+d^2);
A=a+asin(d*sinb./R);
%画图
polar(A,R,'r')
hold on
polar(a,r,'b')
end

追问

已了解,谢谢。

温馨提示:答案为网友推荐,仅供参考