资源描述:
《插补算法——圆弧插补.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、17-6-16上午10:16H:MatlabDo...demo.m第1页,共1页%%初始化clear,clccloseallwarningofffeaturejitoff%%主程序%R代表所插补的圆的半径R=10;%ThetaAround代表所要插补的角度范围ThetaAround=[135,90;90,0;0,-45];;%Use_SN代表所在控制的插补方向%Use_S表示进行顺向插补Use_N表示进行逆向插补Use_SN='Use_S';%通过OCT_MControl函数进行插补并返回插补信息%Dat
2、a是切削刀头的移动坐标数据%MovePosition是切削刀头的移动方向信息[Data,MovePosition]=OCT_MControl(ThetaAround,R,Use_SN);%%作图,动态演示插补过程holdongridonaxisequalezplot(strcat('x^2+y^2=',num2str(R^2)),[-R,R]);mycomet(Data.X,Data.Y)17-6-16上午10:19H:...OCT_MControl.m第1页,共1页function[Data,MoveP
3、osition]=OCT_MControl(ThetaAround,O_R,Use_SN)%插补过程的总控制函数%对于跨过几个象限的圆弧,程序可以分段对其每个象限圆弧进行插补Data.X=[];Data.Y=[];Data.Fm=[];%确定插补段数forn=1:size(ThetaAround,1)%将半径及角度信息转换为插补的起始与终止点坐标Position.X_FirstPosition=O_R*cosd(ThetaAround(n,1));Position.Y_FirstPosition=O_R*si
4、nd(ThetaAround(n,1));Position.X_EndPosition=O_R*cosd(ThetaAround(n,2));Position.Y_EndPosition=O_R*sind(ThetaAround(n,2));%对每一象限的圆弧进行单独插补并返回数据TmpData{n,1}=OCT_GetData(OCT_Function(Position,Use_SN));%记录移动方向信息MovePosition{n,1}=TmpData{n,1}.MovePosition;%记录坐标及误
5、差等数据信息Data.X=[Data.X;TmpData{n,1}.X];Data.Y=[Data.Y;TmpData{n,1}.Y];Data.Fm=[Data.X;TmpData{n,1}.Fm];end17-6-16上午10:17H:Matlab...mycomet.m第1页,共3页functionmycomet(varargin)[ax,args,nargs]=axescheck(varargin{:});ifnargs<1error(message('MATLAB:narginchk:notEn
6、oughInputs'));elseifnargs>3error(message('MATLAB:narginchk:tooManyInputs'));endifnargs<2,x=args{1};y=x;x=1:length(y);endifnargs==2,[x,y]=deal(args{:});endifnargs<3,p=0.10;endifnargs==3,[x,y,p]=deal(args{:});endif~isscalar(p)
7、
8、~isreal(p)
9、
10、p<0
11、
12、p>=1error(mess
13、age('MATLAB:comet:InvalidP'));endax=newplot(ax);if~ishold(ax)[minx,maxx]=minmax(x);[miny,maxy]=minmax(y);axis(ax,[minxmaxxminymaxy])endco=get(ax,'colororder');m=length(x);k=round(p*m);ifsize(co,1)>=3colors=[co(1,:);co(2,:);co(3,:)];lstyle='-';elsecolors=rep
14、mat(co(1,:),3,1);lstyle='--';endhead=line('parent',ax,'color',colors(1,:),'marker','o','linestyle','none',...'xdata',x(1),'ydata',y(1),'Tag','head');body=matlab.graphics.animation.AnimatedLine('color',