数据采集法逆圆插补

数据采集逆圆插补

从(8,0)点开始逆圆弧插补整圆
matlab程序:

posx=-8:0.1:8;
posy=sqrt(64-posx.^2);
plot(posx,posy,'r');
hold on;
posy=-1*sqrt(64-posx.^2);
plot(posx,posy,'r');
hold on;
dl=0.1;
x0=8.0;
y0=0.0;
x;
y;
dy0=dl;
while(1)	%第一象限
dx=dl*(y0+dy0/2)/8;
x=x0-dx;
y=sqrt(abs(64-x*x));
dy=y-y0;
dy0=dy;
plot([x0 x],[y0 y],'*');
pause(0.001);
 hold on;  
 if(x<0)
     break;
 end
 y0=y;
 x0=x;
 dy0=dy;
end
dy0=dl;
while(1)	%第二象限
dx=dl*(y0-dy0/2)/8;
x=x0-dx;
y=1*sqrt(abs(64-x*x));
dy=y0-y;
dy0=dy;
plot([x0 x],[y0 y],'*');
pause(0.001);
 hold on;  
 if(abs(x)>8)
     break;
 end
 y0=y;
 x0=x;
 dy0=dy;
end
dy0=dl;
while(1)	%第三象限
dx=dl*abs(y0-dy0/2)/8;
x=x0+dx;
y=-1*sqrt(abs(64-x*x));
dy=y0-y;
dy0=dy;
plot([x0 x],[y0 y],'*');
pause(0.001);
 hold on;  
 if(x>0)
     break;
 end
 y0=y;
 x0=x;
 dy0=dy;
end

dy0=dl;
while(1)	%第四象限
dx=dl*abs(y0-dy0/2)/8;
x=x0+dx;
y=-1*sqrt(abs(64-x*x));
dy=y-y0;
dy0=dy;
plot([x0 x],[y0 y],'*');
pause(0.001);
 hold on;  
 if(abs(x)>8)
     break;
 end
 y0=y;
 x0=x;
 dy0=dy;
end

猜你喜欢

转载自blog.csdn.net/qq_37613112/article/details/89081170