




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机床数控技术课程设计说明书指导老师:姓名:班级:学号:2014/01/10目录一课设任务1二课设要求1三编程语言1四变量说明及程序界面1〔一〕DDA第四象限直线插补变量说明1〔二〕逐点比拟法第1~2象限逆圆弧插补变量说明2〔三〕DDA第四象限直线插补程序界面3〔1〕普通DDA……………...3〔2〕全加载…………………3〔3〕半加载………………...4〔四〕逐点比拟法第1~2象限逆圆弧插补程序界面4五详细程序设计流程图………..5〔一〕DDA第四象限直线插补流程图………………….5〔二〕逐点比拟法第1~2象限逆圆弧插补流程图………….6六源程序6七参考资料32一课设任务〔1〕DDA法插补第四象限直线;〔2〕逐点比拟法插补第1~2象限顺圆弧。二课设要求〔1〕具有数据输入界面,如起点、终点、圆心、半径及插补步长等;〔2〕具有插补过程的动态显示功能,如单步插补、连续插补;〔3〕插补的步长可调;三编程语言:MATLAB四变量说明及程序界面〔一〕DDA第四象限直线插补变量名称说明变量名称说明X1直线起点横坐标JvxX被积函数存放器Y1直线起点纵坐标Jrx1X普通DDA积分累加器X2直线终点横坐标Jrx2X全加载积分累加器Y2直线终点纵坐标Jrx3X半加载积分累加器x绘图动点横坐标JvyY被积函数存放器y绘图动点纵坐标Jry1Y普通DDA积分累加器L插补步长Jry2Y全加载积分累加器N存放器位数Jry3Y半加载积分累加器MxX终点判别计数器X插补动点横坐标MyY终点判别计数器Y插补动点纵坐标〔二〕逐点比拟法第2~1象限顺圆弧插补变量名称说明变量名称说明X1圆弧起点横坐标E终点判别计数器Y1圆弧起点纵坐标F偏差判别x绘图动点横坐标X插补动点横坐标y绘图动点纵坐标Y插补动点纵坐标r圆弧半径MxX插补步数X2圆弧终点横坐标MyY插补步数Y2圆弧终点纵坐标L插补步长A圆心到弦中点的距离a1圆弧起点角坐标x0圆心横坐标a2圆弧终点角坐标y0圆心纵坐标a绘图动点角坐标程序界面:〔三〕DDA第四象限直线插补〔1〕普通DDA〔2〕全加载半加载〔四〕逐点比拟第1~2象限逆圆弧插补五详细程序设计流程图DDA第四象限直线插补逐点比拟法第1~2象限逆圆弧插补六源程序functionvarargout=f2(varargin)%F2MATLABcodeforf2.fig%F2,byitself,createsanewF2orraisestheexisting%singleton*.%%H=F2returnsthehandletoanewF2orthehandleto%theexistingsingleton*.%%F2('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinF2.Mwiththegiveninputarguments.%%F2('Property','Value',...)createsanewF2orraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforef2_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtof2_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpf2%LastModifiedbyGUIDEv2.509-Jan-201410:52:17%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@f2_OpeningFcn,...'gui_OutputFcn',@f2_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforef2ismadevisible.functionf2_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstof2(seeVARARGIN)%Choosedefaultcommandlineoutputforf2handles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesf2waitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=f2_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%---Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%绘制直线globalx1y1x2y2LNxyMxMyJvxJrx1Jrx2Jrx3JvyJry1Jry2Jry3XY;x1=str2double(get(handles.edit1,'string'));y1=str2double(get(handles.edit2,'string'));x2=str2double(get(handles.edit3,'string'));y2=str2double(get(handles.edit4,'string'));L=str2double(get(handles.edit7,'string'));N=str2double(get(handles.edit6,'string'));ifx1<=0|y1>=0|x2<=0|y2>=0set(handles.text11,'string','直线不在第四象限!');%判断直线是否在第四象限elseifx1==x2y=y1:(y2-y1)/100:y2;x=y.*0+x1;plot(x,y,'k');holdon;elsex=x1:(x2-x1)/100:x2;plot(x,y,'k');holdon;endxmin=min(x);xmax=max(x);ymin=min(y);ymax=max(y);axisequal;axis([xmin-Lxmax+Lymin-Lymax+L]);%定义坐标轴的边界set(handles.text11,'string','绘图完成');Mx=ceil(abs(x2-x1)/L);%计算插补步数My=ceil(abs(y2-y1)/L);Jvx=abs(x2-x1);%给存放器赋值Jrx2=2^N-1;Jrx3=2^(N-1);Jvy=abs(y2-y1);Jry1=0;Jry2=2^N-1;Jry3=2^(N-1);X=x1;Y=y1;end%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)functionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit1astext%str2double(get(hObject,'String'))returnscontentsofedit1asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit1_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit2_Callback(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit2astext%str2double(get(hObject,'String'))returnscontentsofedit2asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit2_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit3_Callback(hObject,eventdata,handles)%hObjecthandletoedit3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit3astext%str2double(get(hObject,'String'))returnscontentsofedit3asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit3_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit4_Callback(hObject,eventdata,handles)%hObjecthandletoedit4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit4astext%str2double(get(hObject,'String'))returnscontentsofedit4asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit4_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit5_Callback(hObject,eventdata,handles)%hObjecthandletoedit5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit5astext%str2double(get(hObject,'String'))returnscontentsofedit5asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit5_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit6_Callback(hObject,eventdata,handles)%hObjecthandletoedit6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit6astext%str2double(get(hObject,'String'))returnscontentsofedit6asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit6_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit7_Callback(hObject,eventdata,handles)%hObjecthandletoedit7(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit7astext%str2double(get(hObject,'String'))returnscontentsofedit7asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionedit7_CreateFcn(hObject,eventdata,handles)%hObjecthandletoedit7(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end%---Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%直线单步插补%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalx1y1x2y2LNxyMxMyJvxJrx1Jrx2Jrx3JvyJry1Jry2Jry3XY;if(get(handles.radiobutton1,'Value')==0)...&(get(handles.radiobutton2,'Value')==0)...&(get(handles.radiobutton3,'Value')==0)set(handles.text11,'string','请选择插补方式');elseif(Mx<=0)&(My<=0)set(handles.text11,'string','插补结束');elseJrx1=Jvx+Jrx1;Jry1=Jvy+Jry1;Jrx2=Jvx+Jrx2;Jry2=Jvy+Jry2;Jrx3=Jvx+Jrx3;Jry3=Jvy+Jry3;ifget(handles.radiobutton1,'Value')==1%普通DDAif(x1<=x2)&(y1<=y2)%转化后直线在第一象限if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1<=y2)%转化后直线在第二象限if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1>y2)%转化后直线在第三象限if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;y=zeros(1,100)+Y;endplot(x,y,'r');holdon;else%转化后直线在第四象限if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;endelseifget(handles.radiobutton2,'Value')==1%全加载if(x1<=x2)&(y1<=y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1<=y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1>y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;endelse%半加载if(x1<=x2)&(y1<=y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1<=y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(x1>x2)&(y1>y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;elseif(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;endendendend%---Executesonbuttonpressinpushbutton3.functionpushbutton3_Callback(hObject,eventdata,handles)%直线连续插补%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalx1y1x2y2LNxyMxMyJvxJrx1Jrx2Jrx3JvyJry1Jry2Jry3XY;if(get(handles.radiobutton1,'Value')==0)...&(get(handles.radiobutton2,'Value')==0)...&(get(handles.radiobutton3,'Value')==0)set(handles.text11,'string','请选择插补方式');elsewhile(Mx>0)|(My>0)Jrx1=Jvx+Jrx1;Jry1=Jvy+Jry1;Jrx2=Jvx+Jrx2;Jry2=Jvy+Jry2;Jrx3=Jvx+Jrx3;Jry3=Jvy+Jry3;ifget(handles.radiobutton1,'Value')==1if(x1<=x2)&(y1<=y2)if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1<=y2)if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1>y2)if(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(Jrx1>=2^N)Jrx1=Jrx1-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry1>=2^N)Jry1=Jry1-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);endelseifget(handles.radiobutton2,'Value')==1if(x1<=x2)&(y1<=y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1<=y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1>y2)if(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(Jrx2>=2^N)Jrx2=Jrx2-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry2>=2^N)Jry2=Jry2-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);endelseif(x1<=x2)&(y1<=y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1<=y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y+L;y=linspace(Y-L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(x1>x2)&(y1>y2)if(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X-L;x=linspace(X+L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);elseif(Jrx3>=2^N)Jrx3=Jrx3-2^N;X=X+L;x=linspace(X-L,X,100);Mx=Mx-1;elsex=zeros(1,100)+X;endif(Jry3>=2^N)Jry3=Jry3-2^N;Y=Y-L;y=linspace(Y+L,Y,100);My=My-1;elsey=zeros(1,100)+Y;endplot(x,y,'r');holdon;pause(0.1);endendendset(handles.text11,'string','插补结束');end%---Executesonbuttonpressinpushbutton3.functionpushbutton4_Callback(hObject,eventdata,handles)%绘制圆弧%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalx1y1xyrx2y2Ax0y0MFXYMxMyLa1a2a;x1=str2double(get(handles.edit1,'string'));y1=str2double(get(handles.edit2,'string'));x2=str2double(get(handles.edit3,'string'));y2=str2double(get(handles.edit4,'string'));r=str2double(get(handles.edit5,'string'));L=str2double(get(handles.edit7,'string'));A=sqrt(r^2-((x2-x1)^2+(y2-y1)^2)/4);%圆心到弦中点的长度ifsqrt(((x2-x1)^2+(y2-y1)^2))>(2*r)set(handles.text11,'string','无法构成圆弧');elsex0=(x1+x2)/2+A*(y1-y2)/sqrt((x2-x1)^2+(y2-y1)^2);%圆心坐标y0=(y1+y2)/2-A*(x1-x2)/sqrt((x2-x1)^2+(y2-y1)^2);a1=atan((y1-y0)/(x1-x0));a2=atan((y2-y0)/(x2-x0));if(x1<x0&y1>y0)a1=pi-abs(a1);elsea1=a1;endif(x2<x0&y0<y2)a2=pi-abs(a2);elseif(x2<x0&y2<y0)a2=pi+a2;elsea2=a2;enda=a1:0.01:a2;x=x0+r.*cos(a);y=y0+r.*sin(a);plot(x,y,'k');xmin=min([x,x0]);xmax=max([x,x0]);ymin=min([y,y0]);ymax=max([y,y0]);axisequal;axis([xmin-Lxmax+Lymin-Lymax+L]);%坐标轴边界holdon;set(handles.text11,'string','画图完成');F=0;X=x1;Y=y1;if(y1<=y0&x1>x0)Mx=ceil((x1-x2)/L)+ceil(2*abs(x0+r-x1)/L);elseif(x2<x0&y0>=y2)Mx=ceil((x1-x2)/L)+ceil(2*abs(x2-x0+r)/L);elseMx=ceil((x1-x2)/L);endif(x2<x0&x0<x1)My=ceil(abs(y0+r-y1)/L)+ceil(abs(y0+r-y2)/L);elseMy=ceil(abs(y1-y2)/L);endM=Mx+My;%计算插补步数end%---Executesonbuttonpressinpushbutton3.functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalxyrx0y0MFXYL;ifM<=0set(handles.text11,'string','插补结束!');elseifX>=x0ifY>=y0%相对于圆心在第一象限内插补ifF>=0%圆外X=X-L;x=linspace(X+L,X,100);y=x.*0+Y;plot(x,y,'r')F=(X-x0)^2+(Y-y0)^2-r^2;else%圆内Y=Y+L;y=linspace(Y-L,Y,100);x=y.*0+X;plot(x,y,'r')F=(X-x0)^2+(Y-y0)^2-r^2;endelse%相对于圆心在第四象限内插补ifF>=0%圆外Y=Y+L;y=linspace(Y-L,Y,100);x=y.*0+X;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;else%圆内X=X+L;x=linspace(X-L,X,100);y=x.*0+Y;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;endendelseifY>=y0;%第二象限ifF>=0%圆外Y=Y-L;y=linspace(Y+L,Y,100);x=y.*0+X;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;else%圆内X=X-L;x=linspace(X+L,X,100);y=x.*0+Y;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;endelse%第三象限ifF>=0%圆外X=X+L;x=linspace(X-L,X,100);y=x.*0+Y;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;else%圆内Y=Y-L;y=linspace(Y+L,Y,100);x=y.*0+X;plot(x,y,'r');F=(X-x0)^2+(Y-y0)^2-r^2;endendendM=M-1;end%---Executesonbuttonpressinpushbutton6.functionpushbutton6_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton6(seeGCBO)%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 器材统计报告范文大全
- 二零二五年度农业资产抵押合同协议书含农产品价格保险条款
- MySQL教程(新体系-综合应用实例视频)(第4版)习题及答案 -第07章
- 2025年度智能机器人研发人员标准劳动合同
- 2025年度股东对公司无息借款及国际市场拓展协议
- 二零二五年度信息技术代管正规委托书
- 2015版ISO9001理解和应用之四
- 2025福建德化闽投抽水蓄能有限公司招聘15人笔试参考题库附带答案详解
- 兽医知识培训课件
- 教育管理学知到智慧树章节测试课后答案2024年秋河南大学
- 高管履历核实调查报告
- SF-T0095-2021人身损害与疾病因果关系判定指南
- 2024并网光伏逆变器技术规范
- 文言文多文本阅读:叔向见韩宣子(附答案解析与译文)
- 工程招投标模拟实训报告范文2024年
- 系统脱敏治疗的长期疗效跟踪评估
- DB13(J)T 8406-2021 装配式混凝土结构工程施工与质量验收规程(京津冀)
- 2025年湖南省邵阳市新宁县初三第一次联考综合试题含答案
- 浙江省台州市2024年中考语文模拟试题及答案6
- 常用焊管规格表
- 中国文学经典导读智慧树知到答案2024年华东政法大学
评论
0/150
提交评论