版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、機床數(shù)控技術課程設計說明書 班級:0507105 學號:050710521 姓名: 指導教師: 時間:2011年1月 地點:明故宮校區(qū)計算中心目 錄 一、簡要說明 3 二、設計目的 3 三、設計要求 3 四、設計任務 3 五、設計過程 4 5.1 逐點比較法圓弧插補 4 5.1.1 逐點比較法圓弧插補原理及運算過程 4 5.1.2 流程圖設計 6 5.1.3 變量說明及簡單的程序?qū)崿F(xiàn) 8 5.2 dda法直線插補 9 5.2.1 dda法直線插補原理及運算過程 9 5.2.2 流程圖設計 11 5.2.3 變量說明及簡單的程序?qū)崿F(xiàn) 12 六、設計總結(jié) 14 附錄a 程序運行結(jié)果 15附錄b 源
2、程序代碼 18參考文獻 33一、簡要說明 插補 (interpolation) 在數(shù)控機床中,刀具不能嚴格地按照要求加工的曲線運動,只能用折線軌跡逼近所要加工的曲線。 插補(interpolation)定義:機床數(shù)控系統(tǒng)依照一定方法確定刀具運動軌跡的過程。也可以說,已知曲線上的某些數(shù)據(jù),按照某種算法計算已知點之間的中間點的方法,也稱為“數(shù)據(jù)點的密化”。數(shù)控裝置根據(jù)輸入的零件程序的信息,將程序段所描述的曲線的起點、終點之間的空間進行數(shù)據(jù)密化,從而形成要求的輪廓軌跡,這種“數(shù)據(jù)密化”機能就稱為“插補”。 插補計算就是數(shù)控裝置根據(jù)輸入的基本數(shù)據(jù),通過計算,把工件輪廓的形狀描述出來,邊計算邊根據(jù)計算結(jié)
3、果向各坐標發(fā)出進給脈沖,對應每個脈沖,機床在響應的坐標方向上移動一個脈沖當量的距離,從而將工件加工出所需要輪廓的形狀。 插補的原理和算法很多,根據(jù)數(shù)控系統(tǒng)輸出到伺服驅(qū)動裝置的信號的不同,插補方法可歸納為基準脈沖插補和數(shù)據(jù)采樣插補兩種類型。二、設計目的(1) 了解連續(xù)軌跡控制數(shù)控系統(tǒng)的組成原理。(2) 了解逐點比較法和dda法插補直線和圓弧的基本原理。(3) 掌握逐點比較法和dda法插補的軟件實現(xiàn)基礎。三、設計要求(1) 具有數(shù)據(jù)輸入界面,如起點、終點、圓心、半徑及插補步長等;(2) 具有插補過程的動態(tài)顯示功能,如單步插補、連續(xù)插補;(3) 適當?shù)木幊陶Z言,詳細的程序設計流程圖,變量說明、源程序
4、;(4) 插補的步長可調(diào)。四、設計任務 pc41 逐點比較法插補第4-1象限逆圓弧 dl3 dda法插補第三象限直線五、設計過程5.1 逐點比較法圓弧插補5.1.1 逐點比較法圓弧插補原理及運算過程 逐點比較法的基本原理是被控對象在按要求的軌跡運動時,每走一步都要與規(guī)定的軌跡進行比較,由此結(jié)果決定下一步移動的方向。每進給一步都要完成四個工作節(jié)拍:偏差判斷、坐標進給,偏差計算、終點判別。 設要加工圖3-1所示的第一象限逆時針走向的圓弧ab,半徑為r,以圓點為圓心,起點坐標為a(,),在xy坐標平面第一象限中,點的加工偏差有以下3種情況。若加工點正好落在圓弧上,則下式成立,即 若加工點落在圓弧外側(cè)
5、,則,即 若加工點落在圓弧內(nèi)側(cè),則,即將上面各式分別改寫為下列形式,即 (在圓弧上) (在圓弧外側(cè)) (在圓弧內(nèi)側(cè))取加工偏差判別函數(shù)為 若點在圓弧外側(cè)或圓弧上,則滿足的條件時,向軸發(fā)出一負向運動的進給脈沖;若點在圓弧內(nèi)測,即滿足條件的條件時,則向軸發(fā)出一正向運動的進給脈沖。為了簡化偏差判別式的運算,仍用遞推法來推算下一步新的加工偏差。設加工點在圓弧外側(cè)或圓弧上,則加工偏差為 故軸必須向負方向進給一步,移動到新的加工點,其加工偏差為 (5-1)設加工點在圓弧的內(nèi)測,則。那么y軸須向正向進給一步,移到新的加工點,其加工偏差為 (5-2)同理,插補第一象限順時針圓弧時,偏差判別函數(shù)為 (5-3)當
6、(5-4) 而插補其他象限的圓弧時,可采用坐標變換法統(tǒng)一于第一象限的逆圓弧插補公式,都按第一象限逆圓弧進行插補計算,而進給脈沖的方向則由實際象限決定。插補四個象限的順、逆圓弧時偏差符號和進給方向可用下面簡圖表示。插補四個象限的順、逆圓弧時偏差符號和進給方向如下圖。 f0順圓逆圓f0 y順圓逆圓逆圓逆圓順圓順圓f0f0f0f0f0f0f0f0f0f0f0f0f0f0 x 圖5-2 逐點比較法插補不同象限順、逆圓弧的偏差符號和進給方向圖5-3 圓弧過象限 另外,逐點比較法插補圓弧時,相鄰圓弧插補方法不同,計算方法也不同。要完成過象限的功能,首先應判別何時過象限。過象限有一顯著特點,就是過象限時刻正
7、好是圓弧與坐標軸相交的時刻,因此在兩個坐標值中必有一個為零,判斷是否過象限只要檢查是否有坐標值為零即可。通過該點后,變換插補運算再進行計算。5.1.2 流程圖設計綜上所述,逐點比較法圓弧插補的全過程,每走一步都要進行以下四個節(jié)拍:第一節(jié)拍偏差判別:判斷刀具當前位置相對于給定的輪廓的偏差情況,以此決定刀具移動的方向;第二節(jié)拍坐標進給:根據(jù)偏差判斷結(jié)果,控制刀具相對于工件輪廓進給一步,即向給定的輪廓靠攏,減小偏差;第三節(jié)拍偏差計算:由于刀具進給已經(jīng)改變了位置,因此應計算出刀具當前位置的新偏差,為下次判別做準備;第四節(jié)拍終點判別:判別刀具是否已到達被加工輪廓的終點。若已經(jīng)到達終點,則停止插補;若還未
8、到達終點則繼續(xù)插補。如此不斷重復上述四個節(jié)拍就可以加工出所要加工的輪廓。 由此便可設計出第4-1象限逆圓弧逐點比較法插補流程圖。 運算中f寄存偏差值為;x和y分別寄存x和y動點的坐標值,開始分別存放和;e為寄存終點判別值:。起始ynny 初始化 x0x,y0y 0f,ne nyf0 ?+y向走一步x向走一步f0 ?+y向走一步+x向走一步f+2y+1f y+1yf2x+1f x1xf+2x+1f x+1xf+2y+1f y+1ye1en e=0 ?y0 ?y結(jié)束5.1.3 變量說明及簡單的程序?qū)崿F(xiàn) 根據(jù)上面的分析及設計流程圖的基本思想,現(xiàn)采用vc+語言對其進行具體的程序?qū)崿F(xiàn)。最終設計的界面如下
9、圖: 該程序運行時首先要輸入插補圓弧插補方向,然后再選擇適當?shù)南笙?,輸入起點和終點x、y坐標,圓心對終點的增量坐標以及插補步長,再點擊“實際輪廓”按鈕顯示原始的加工輪廓,點擊“插補軌跡”按鈕,顯示插補擬合的軌跡,若需要繼續(xù)進行下一次模擬,則可以點擊“重新開始”按鈕,繼續(xù)輸入下一組數(shù)據(jù)進行模擬,點擊“退出程序”則退出界面。有關控件設置及相關變量說明如下表所示。 程序界面控件設置以及相關變量說明: 控件id 對應變量 相關說明 idc_radio1 插補方向為順時針 idc_radio2 插補方向為逆時針 idc_combo1 選擇插補起始點象限 idc_combo2 選擇插補結(jié)束點象限 idc_
10、edit1 x0 起點橫坐標 idc_edit2 y0 起點縱坐標 idc_edit3 xe 終點橫坐標 idc_edit4 ye 終點縱坐標 idc_edit5 dx 圓心對終點橫坐標增量 idc_edit6 b “插補步長” idc_button1 “實際輪廓” idc_button2 “重新開始” idc_button3 “連續(xù)插補” idc_button4 “單步插補” idcancel 退出程序 idc_static_draw 顯示圖形的窗口 注:軟件運行情況及源程序見附錄5.2 dda法直線插補5.2.1 dda法直線插補原理及運算過程在x-y平面上對直線oa進行插補,如圖5-4所
11、示,直線的起點在原點o(0,0),終點為a(xe, ye),設進給速度v是均勻的,直線oa的長度為l,則有 其中vx、vy表示動點在x和y方向的移動速度,k為比例系數(shù)。由式可得 在時間內(nèi),x和y方向上的移動距離微小增量、應為 將式代入得 因此,懂點從原點走向終點的過程,可以看作是各坐標每經(jīng)過一個單位時間間隔分別以增量、同時累加的結(jié)果。設經(jīng)過m次累加后,x和y方向分別都到達終點,則 取,則有 式變?yōu)?由式可知,即 因為累加次數(shù)m必須是整數(shù),所有比例系數(shù)k一定為小數(shù)。選取k時主要考慮、應不大于1,以保證坐標軸上每次分配的進給脈沖不超過一個單位步距,即由式得 另外,、的最大容許值受寄存器位數(shù)n的限制
12、,最大值為,所以由式得 ,即一般取則有上式說明dda法直線插補的整個過程要經(jīng)過次累加才能到達直線的終點。以上僅討論了dda法插補第一象限直線的原理和計算公式,插補其它象限的直線時,一般將終點坐標取絕對值,這樣,它們的插補計算公式與第一象限時一樣,而脈沖進給方向總是直線終點坐標絕對值增加的方向。5.2.2 流程圖設計采用dda法插補時,累計器清零,被積函數(shù)寄存器分別寄存和;插補開始后,每來一個累加脈沖,被積函數(shù)寄存器里的坐標值在相應的累加器中累加一次,累加后的溢出作為驅(qū)動相應坐標軸的進給脈沖和,而余數(shù)仍寄存在累加器中。當累加脈沖數(shù)等于以脈沖當量為最小單位的終點坐標,表明刀具運行到終點,停止插補運
13、算。用軟件實現(xiàn)dda法直線插補時,在內(nèi)存中設立幾個存儲單元,分別存放及其累加值和及其累加值,在每次插補運算循環(huán)過程中進行以下求和運算: 。用運算結(jié)果溢出的脈沖和來控制機床進給,就可走出所需的直線軌跡。根據(jù)以上討論便可設計出dda法插補第三象限直線的程序流程圖。 mm1結(jié)束m=0嗎? 初始化xexe, yeye累計次數(shù)mm, xe,ye清零xexe+xeyeye+yex向走一步xe有溢出嗎?ye有溢出嗎?ynyy向走一步nny 圖5-5 dda法插補第三象限直線的程序流程圖5.2.3 變量說明及簡單的程序?qū)崿F(xiàn)采用vc+設計界面如下圖。程序運行時首先輸入象限,輸入起點和終點x、y坐標以及插補步長,
14、再點擊“連續(xù)”“單步”按鈕顯示原始的加工輪廓和插補軌跡,點擊“重設”按鈕,繼續(xù)輸入下一組數(shù)據(jù)進行模擬,點擊“取消”則退出界面。 有關控件設置及相關變量說明如下表所示。 控件id 對應變量 相關說明 idc_radio 選擇插補象限 idc_edit1 x0 起點橫坐標 idc_edit2 y0 起點縱坐標 idc_edit3 xe 終點橫坐標 idc_edit4 ye 終點縱坐標 idc_edit5 b 插補步長 idc_button1 “連續(xù)” idc_button3 “單步” idc_button2 “重設” idcancel “取消” idc_static_draw 顯示圖形的窗口 注:
15、軟件運行情況及源程序見附錄6、 設計總結(jié)本次設計采用了一種用計算機來模擬數(shù)控插補的方法,在充分利用vc設計語言簡單直觀的基礎上,使數(shù)控插補原理的實現(xiàn)更加形象化。通過這次課程設計,使我對插補原理以及數(shù)控機床的工作原理有了更深一層的認識,同時通過借助vc+語言來完成設計,也對vc+的編程思想與編程方法有了進一步的了解。通過這次課程設計,不僅提高了我們綜合運用所學知識發(fā)現(xiàn)、分析、解決實際問題的能力,同時也很好的鍛煉了我們的思維能力與實踐能力。雖然只有短短的一個星期,但卻可以學到很多的東西。既鞏固了以前所學的專業(yè)知識,又學到了一些書本上根本就沒有的東西。做好一份課程設計,首先要有一個清晰的思路和一個完
16、整的設計步驟。通過查閱各方面的文獻與資料,來不斷完善設計的內(nèi)容,使其更加完整。在設計程序時,不能妄想一次就將整個程序設計好,要反復修改,不斷優(yōu)化。做到有條不紊,這樣出現(xiàn)錯誤時會讓自己更方便地檢查。另外,做一件事時要專心、細致,尤其是要有耐心。設計過程好比人成長的過程,常有一些不如意,也常會遇見一些挫折與困難,但困難并不可怕,可怕的是面對困難時沒有去正視它解決它的勇氣與熱情。只要充滿信心,堅持不懈的走下去,那點困難絕不是前方道路上的絆腳石,而是通往成功之峰的階梯。 回望這一周的歷程,看著桌上厚厚的一沓草稿紙和一旁摞得高高的參考書,一種成功的喜悅的心情油然而生。一分耕耘一分收獲。雖然在此過程中苦多
17、于甜,但正是這些無處不在的“苦”充實了自己,歷練了性格,增長了人生閱歷。也許并沒有做到最好,但是畢竟努力去做了。課設雖已結(jié)束,但這個過程中所體現(xiàn)出的那種嚴謹?shù)姆治?、解決問題的思想,以及周到細密的處事步驟與方法,對自己以后的學習和生活都大有裨益!附錄a 程序運行結(jié)果.逐點比較法插補第4-1象限逆圓弧 運行結(jié)果: 第一組數(shù)據(jù):起點坐標(3,-6),終點坐標(2,8),橫坐標增量dx=0,步長b=1,運行結(jié)果如下: 第二組數(shù)據(jù),改變步長:起點坐標(7,-5),終點坐標(3,5),橫坐標增量dx=0,步長b=2,運行結(jié)果如下: .dda法插補第3象限直線 運行結(jié)果: 第一組數(shù)據(jù):起點坐標(-2,-1)
18、,終點坐標(-9,-7),步長b=1,運行結(jié)果如下: 第二組數(shù)據(jù),改變步長:起點坐標(-1,-2),終點坐標(-9,-8),步長b=2。 附錄b 源程序代碼.逐點比較法插補第4-1象限逆圓弧/ pcdlg.cpp : implementation file/#include stdafx.h#include pc.h#include pcdlg.h#include math.h#define m 17 int m_radio;#ifdef _debug#define new debug_new#undef this_filestatic char this_file = _file_;#end
19、if/ caboutdlg dialog used for app aboutclass caboutdlg : public cdialogpublic:caboutdlg();/ dialog data/afx_data(caboutdlg)enum idd = idd_aboutbox ;/afx_data / classwizard generated virtual function overrides/afx_virtual(caboutdlg)protected:virtual void dodataexchange(cdataexchange* pdx); / ddx/ddv
20、support/afx_virtual/ implementationprotected:/afx_msg(caboutdlg)/afx_msgdeclare_message_map();caboutdlg:caboutdlg() : cdialog(caboutdlg:idd)/afx_data_init(caboutdlg)/afx_data_initvoid caboutdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(caboutdlg)/afx_data_mapbegin_m
21、essage_map(caboutdlg, cdialog)/afx_msg_map(caboutdlg)/ no message handlers/afx_msg_mapend_message_map()/ cpcdlg dialogcpcdlg:cpcdlg(cwnd* pparent /*=null*/): cdialog(cpcdlg:idd, pparent)/afx_data_init(cpcdlg)/ note: the classwizard will add member initialization here/afx_data_init/ note that loadico
22、n does not require a subsequent destroyicon in win32m_hicon = afxgetapp()-loadicon(idr_mainframe);void cpcdlg:dodataexchange(cdataexchange* pdx)cdialog:dodataexchange(pdx);/afx_data_map(cpcdlg)ddx_control(pdx, idc_button3, m_button3);ddx_control(pdx, idc_combo2, m_combo2);ddx_control(pdx, idc_combo1
23、, m_combo1);ddx_control(pdx, idc_button2, m_button2);ddx_control(pdx, idc_button1, m_button1);/afx_data_mapbegin_message_map(cpcdlg, cdialog)/afx_msg_map(cpcdlg)on_wm_syscommand()on_wm_paint()on_wm_querydragicon()on_bn_clicked(idc_radio1, onradio1)on_bn_clicked(idc_radio2, onradio2)on_cbn_selchange(
24、idc_combo1, onselchangecombo1)on_cbn_selchange(idc_combo2, onselchangecombo2)on_bn_clicked(idc_button1, onbutton1)on_bn_clicked(idc_button2, onbutton2)on_bn_clicked(idc_button3, onbutton3)/afx_msg_mapend_message_map()/ cpcdlg message handlersbool cpcdlg:oninitdialog()cdialog:oninitdialog(); / add ab
25、out. menu item to system menu. / idm_aboutbox must be in the system command range.assert(idm_aboutbox & 0xfff0) = idm_aboutbox);assert(idm_aboutbox appendmenu(mf_separator);psysmenu-appendmenu(mf_string, idm_aboutbox, straboutmenu); / set the icon for this dialog. the framework does this automatical
26、ly/ when the applications main window is not a dialogseticon(m_hicon, true);/ set big iconseticon(m_hicon, false);/ set small icon/ todo: add extra initialization herereturn true; / return true unless you set the focus to a controlvoid cpcdlg:onsyscommand(uint nid, lparam lparam)if (nid & 0xfff0) =
27、idm_aboutbox)caboutdlg dlgabout;dlgabout.domodal();elsecdialog:onsyscommand(nid, lparam);/ if you add a minimize button to your dialog, you will need the code below/ to draw the icon. for mfc applications using the document/view model,/ this is automatically done for you by the framework.void cpcdlg
28、:onpaint() if (isiconic()cpaintdc dc(this); / device context for painting sendmessage(wm_iconerasebkgnd, (wparam) dc.getsafehdc(), 0);/ center icon in client rectangleint cxicon = getsystemmetrics(sm_cxicon);int cyicon = getsystemmetrics(sm_cyicon);crect rect;getclientrect(&rect);int x = (rect.width
29、() - cxicon + 1) / 2;int y = (rect.height() - cyicon + 1) / 2; / draw the icondc.drawicon(x, y, m_hicon);elsecdialog:onpaint();cwnd* p=getdlgitem(idc_static_draw); /得到idc_static的句柄 cdc* pdc=p-getdc(); /根據(jù)句柄得到dc p-invalidate(); p-updatewindow(); crect rc; /得到dc的客戶區(qū)域,并創(chuàng)建畫刷填充這個區(qū)域p-getclientrect(&rc); c
30、brush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush); crgn rgn; /設置dc的裁減區(qū)域為客戶區(qū)域,因為static并不具有真正的dc,而是其父窗口的dc,所以用裁減來避免畫到客戶區(qū)域外面去rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn);int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;/畫坐標軸pdc-
31、moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-moveto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(in
32、t t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);/ the system calls this to obtain the cursor to display while the user drags/ the minimized window.hcursor cpcdlg:onquerydra
33、gicon()return (hcursor) m_hicon;void cpcdlg:draw1(int j,int k,int l,int m,int h,int n) /對應原始輸入按鈕 cwnd* p=getdlgitem(idc_static_draw); cdc* pdc=p-getdc(); p-invalidate(); p-updatewindow(); crect rc; p-getclientrect(&rc); cbrush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush);
34、 crgn rgn; rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn); int x1,y1,x2,y2,xx,b;x1=j*m;y1=-k*m;x2=l*m;y2=-m*m;xx=h*m;b=n*m;double xc,yc;int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;pdc-moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-mov
35、eto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(int t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9
36、)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);xc=x2+xx; /繪出實際輪廓yc=(y1+y2)/2.0-(x2-x1)*1.0*(xx+(x2-x1)/2.0)/(y2-y1);double l=(xc-x1)*(xc-x1)+(yc-y1)*(yc-y1),r=sqrt(l);double ax=xcenter+xc-r,ay=ycenter+yc-r,bx=xcenter+xc+r,by=ycenter+yc+r;
37、 cpen pen,*poldpen; /1個像素,紅色 pen.createpen(ps_solid,1,rgb(255,0,0); poldpen=pdc-selectobject(&pen);crect rc1(ax,ay,bx,by);pdc-arc(ax,ay,bx,by,xcenter+x1,ycenter+y1,xcenter+x2,ycenter+y2);void cpcdlg:draw(int j,int k,int l,int m,int h,int n) /對應插補軌跡按鈕 cwnd* p=getdlgitem(idc_static_draw); cdc* pdc=p-g
38、etdc(); p-invalidate(); p-updatewindow(); crect rc; p-getclientrect(&rc); cbrush brush; brush.createsolidbrush(rgb(255,255,255); pdc-fillrect(&rc,&brush); crgn rgn; rgn.createrectrgn(rc.left,rc.top,rc.right,rc.bottom); pdc-selectcliprgn(&rgn); int x1,y1,x2,y2,xx,b;x1=j*m;y1=-k*m;x2=l*m;y2=-m*m;xx=h*
39、m;b=n*m;double xc,yc;int xcenter=(rc.left+rc.right)/2,ycenter=(rc.top+rc.bottom)/2;pdc-moveto(xcenter,ycenter-200);pdc-lineto(xcenter,ycenter+200);pdc-moveto(xcenter-200,ycenter); pdc-lineto(xcenter+200,ycenter); pdc-textout(xcenter-14,ycenter-17,o);char *s20;s0=-10,s1=-9,s2=-8,s3=-7,s4=-6,s5=-5,s6=
40、-4,s7=-3,s8=-2,s9=-1,s10=o,s11=1,s12=2,s13=3,s14=4,s15=5,s16=6,s17=7,s18=8,s19=9;for(int t=0;ttextout(xcenter+(t-9)*m,ycenter-6,);pdc-textout(xcenter+(t-9)*m,ycenter+3,st+1);pdc-textout(xcenter-4,ycenter-9-(t-9)*m,-);pdc-textout(xcenter+5,ycenter-9-(t-9)*m,st+1);xc=x2+xx;yc=(y1+y2)/2.0-(x2-x1)*1.0*(
41、xx+(x2-x1)/2.0)/(y2-y1);double l=(xc-x1)*(xc-x1)+(yc-y1)*(yc-y1),r=sqrt(l);double ax=xcenter+xc-r,ay=ycenter+yc-r,bx=xcenter+xc+r,by=ycenter+yc+r; cpen pen,*poldpen; pen.createpen(ps_solid,1,rgb(255,0,0); poldpen=pdc-selectobject(&pen);crect rc1(ax,ay,bx,by);pdc-arc(ax,ay,bx,by,xcenter+x1,ycenter+y1
42、,xcenter+x2,ycenter+y2); int e=abs(abs(x2-x1)+abs(y2-y1)/m,x11=x1,y11=y1,dx,dy,z;/繪出插補軌跡for(int i=e*m/b;x11!=x2|y11!=y2;i-) cpen pen,*poldpen; /1個像素,藍色 pen.createpen(ps_solid,1,rgb(0,0,255); poldpen=pdc-selectobject(&pen); double f=(x11-xc)*(x11-xc)+(y11-yc)*(y11-yc)-r*r;dx=dy=0; if(f=0&y110) z=1;if
43、(f0) z=2;if(f=0&y11=0) z=3;if(f0&y11moveto(xcenter+x11,ycenter+y11); pdc-lineto(xcenter+x11,ycenter+y11-b*dy); y11=y11-b*dy; break; case 2: dx+; pdc-moveto(xcenter+x11,ycenter+y11); pdc-lineto(xcenter+x11+b*dx,ycenter+y11); x11=x11+b*dx; break; case 3: dx+; pdc-moveto(xcenter+x11,ycenter+y11); pdc-lineto(x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度茶藝館品牌合作全面合作協(xié)議4篇
- 綜合、專項應急預案、現(xiàn)場處置與方案
- 二零二四醫(yī)院與學校聯(lián)辦臨床實習基地合作協(xié)議3篇
- 專業(yè)化2024波紋管買賣協(xié)議詳案版B版
- 2025年度旅游文化節(jié)攤位租賃及旅游產(chǎn)品推廣合同4篇
- 專項定向井技術支持與服務協(xié)議版B版
- 2025年跨境電商平臺產(chǎn)品代理銷售合同協(xié)議4篇
- 專業(yè)法律顧問服務協(xié)議(2024)3篇
- 專業(yè)技術員2024聘用合同
- 2025年度茶葉出口貿(mào)易代理合同8篇
- 全自動化學發(fā)光分析儀操作規(guī)程
- 北侖區(qū)建筑工程質(zhì)量監(jiān)督站監(jiān)督告知書
- 深藍的故事(全3冊)
- GB/T 42461-2023信息安全技術網(wǎng)絡安全服務成本度量指南
- 職校開學第一課班會PPT
- 法考客觀題歷年真題及答案解析卷一(第1套)
- 央國企信創(chuàng)白皮書 -基于信創(chuàng)體系的數(shù)字化轉(zhuǎn)型
- GB/T 36964-2018軟件工程軟件開發(fā)成本度量規(guī)范
- 6第六章 社會契約論.電子教案教學課件
- 機加車間各崗位績效考核方案
- 小學數(shù)學專題講座:小學數(shù)學計算能力的培養(yǎng)課件
評論
0/150
提交評論