数据采集逆圆插补
从(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