刘洋 发表于 2014-5-6 10:39:36

绘制相切曲线的问题




      如图,用红色曲线的圆阵列,我需要这些圆的内包络线,这个跟hilbert不太一样吧,不是传统的包络线。我用过atan(-gradient(x)./gradient(y))+pi,不行,当x为0时会出问题。
      有人知道应该怎么得到里面与圆相切的曲线吗。

王晓明 发表于 2014-5-6 15:29:50

你试试隐函数画图,你这包络不就是到圆心曲线的距离等于半径的点集吗?

刘洋 发表于 2014-5-6 17:36:13

我是matlab新手隐函数我不知道怎么用你看一下这一段,怎么画出圆内包络线,谢谢了wt=0:1:360;x=100*cos(wt*pi/180);y=100*sin(wt*pi/180);k=atan(-gradient(x)./gradient(y))+pi;a=x+30*cos(k);b=y+30*sin(k);hold on;axis equalt=0:0.01:2*pi;m=30*cos(t);n=30*sin(t);for i=0:1:360plot(m+x(i+1),n+y(i+1),'y');plot(x(1:i+1),y(1:i+1),'b');plot(a(1:i+1),b(1:i+1),'b');end

王晓明 发表于 2014-5-7 10:53:29

把a和b的值用下面的方式定义,你看是否满足你的要求:a=x-30*gradient(y)./((gradient(y)).^2+(gradient(x)).^2).^(1/2);b=y+30*gradient(x)./((gradient(y)).^2+(gradient(x)).^2).^(1/2);

刘洋 发表于 2014-5-7 15:20:49

我爱你,这问题困扰我两个月了,终于解决了
页: [1]
查看完整版本: 绘制相切曲线的问题