版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章繪圖子程序設(shè)計(jì)一、繪圖子程序的設(shè)計(jì)準(zhǔn)則二、基本子程序的設(shè)計(jì)方法三、功能子程序的設(shè)計(jì)方法
繪圖子程序是指用計(jì)算機(jī)高級(jí)語(yǔ)言編寫(xiě)的具有不同繪圖功能的子程序。繪圖子程序分為:基本子程序、功能子程序和應(yīng)用子程序?;咀映绦颍菏桥c繪圖設(shè)備等硬件有關(guān)的子程序。一般控制繪圖機(jī)啟動(dòng)和停止,設(shè)置繪圖單位,畫(huà)直線,控制繪圖筆的抬落以及選擇繪圖筆等。功能子程序:是在基本子程序基礎(chǔ)上設(shè)計(jì)的具有某種特定繪圖功能的子程序,如畫(huà)矩形、正多邊形、橢圓等圖形。功能子程序反映不同行業(yè)繪圖的共同要求,通用性較強(qiáng)。應(yīng)用子程序:是在基本子程序和功能子程序基礎(chǔ)上設(shè)計(jì)的一些專(zhuān)業(yè)性較強(qiáng)的子程序,如繪制等值線圖、剖面圖、柱狀圖等的子程序。
本章主要介紹基本子程序和功能子程序;應(yīng)用子程序需根據(jù)需求編寫(xiě)。
一、繪圖子程序的設(shè)計(jì)準(zhǔn)則1.子程序的通用性①盡量減少子程序?qū)τ布囊蕾?lài)性依賴(lài)性越小,繪圖子程序的通用性就越強(qiáng),向其它計(jì)算機(jī)和繪圖設(shè)備的移植就越容易。
通用性是指繪圖子程序?qū)Χ喾N計(jì)算機(jī)和繪圖設(shè)備的適用性。②編程語(yǔ)言機(jī)器語(yǔ)言和匯編語(yǔ)言對(duì)硬件的依賴(lài)性較大,編寫(xiě)的子程序通用性差,不便于移植。除特殊要求外,盡可能采用計(jì)算機(jī)高級(jí)語(yǔ)言編寫(xiě)通用性強(qiáng)的繪圖子程序。2.子程序的參數(shù)一般來(lái)說(shuō),子程序中參數(shù)的多少反映了子程序功能的強(qiáng)弱;但參數(shù)過(guò)多又給用戶(hù)帶來(lái)不便。因此,在保證子程序功能的前提下,子程序中的參數(shù)應(yīng)盡可能的少。3.時(shí)間和內(nèi)存選擇合適的算法和設(shè)計(jì)思路,使子程序被調(diào)用時(shí)占用更少的運(yùn)算時(shí)間和內(nèi)存。
基本子程序是使繪圖機(jī)完成基本繪圖動(dòng)作的子程序。如驅(qū)動(dòng)和停止繪圖機(jī),畫(huà)直線,控制繪圖筆的抬、落以及選擇繪圖筆等動(dòng)作。繪圖動(dòng)作含義:
抬筆:使繪圖筆的筆尖離開(kāi)紙面,準(zhǔn)備空走。
落筆:使繪圖筆的筆尖接觸紙面,準(zhǔn)備繪圖。
歸位:抬筆走到繪圖機(jī)臺(tái)面左下角的原點(diǎn)(0,0)。
選筆:選擇某一支繪圖筆,即選擇繪圖顏色。
移動(dòng):繪圖筆在繪圖范圍內(nèi)的移動(dòng)。
二、基本子程序的設(shè)計(jì)方法
實(shí)現(xiàn)思路:利用高級(jí)語(yǔ)言的輸出語(yǔ)句把繪圖指令及相應(yīng)的參數(shù)寫(xiě)入一個(gè)文件。繪圖儀可從該文件中依次接收相應(yīng)的繪圖指令并根據(jù)提供的參數(shù)值完成繪圖動(dòng)作。
對(duì)于不同的繪圖儀,生產(chǎn)廠家一般都提供了相應(yīng)的繪圖指令,用于驅(qū)動(dòng)繪圖儀完成繪圖動(dòng)作。
繪圖指令格式為:繪圖指令(字符)+參數(shù)可以在基本子程序中使用各種繪圖指令,實(shí)現(xiàn)不同的繪圖動(dòng)作。
如何設(shè)計(jì)繪圖基本子程序來(lái)控制繪圖動(dòng)作呢?1.繪圖儀的繪圖指令、基本子程序設(shè)計(jì)
以DXY-1100平板繪圖儀為例介紹繪圖指令、相應(yīng)的基本子程序編寫(xiě)方法。筆架筆夾
⑴繪圖儀初始化子程序
指令格式:M0,0
(M是繪圖指令,代表抬筆移動(dòng);0,0是參數(shù)值,代表坐標(biāo)原點(diǎn))
功能:使繪圖儀連通、繪圖筆夾自動(dòng)取出1號(hào)繪圖筆并抬筆將繪圖筆移至坐標(biāo)原點(diǎn)(0,0)點(diǎn)。是每次使用繪圖儀之前都必須進(jìn)行的準(zhǔn)備動(dòng)作。
子程序編寫(xiě)為:
subroutinein
character*12fm
write(*,'(a)')'Enterplotterfilename:'
read(*,'(a)')fm
open(11,file=fm)
write(11,111)'M0,0'
111format(1x,a)
end(文件名.PLT或plt)
調(diào)用方法:編寫(xiě)主程序調(diào)用子程序,即CALL
in。將主程序、子程序編譯、連接后即可運(yùn)行。運(yùn)行結(jié)果是在硬盤(pán)上產(chǎn)生了一個(gè)包含字符串M0,0的文本文件。
等同于C語(yǔ)言中編寫(xiě)一個(gè)把字符串M0,0寫(xiě)入文本文件的函數(shù)。(fm為存放繪圖指令的文件名)
⑵繪圖筆歸位子程序
指令格式:H
(無(wú)參數(shù))功能:結(jié)束繪圖,把畫(huà)筆放回筆架,并使筆夾歸位到坐標(biāo)原點(diǎn)(0,0)。subroutinehome(子程序名)
write(11,111)
111format(1x,′H′)(命令)
end
⑶絕對(duì)抬筆移動(dòng)子程序
指令格式:Mx,
y
(與繪圖初始化的指令相同)其中x,
y是點(diǎn)的絕對(duì)坐標(biāo)(以左下角坐標(biāo)原點(diǎn)為基準(zhǔn)),是實(shí)型參數(shù)。
功能:從繪圖筆當(dāng)前位置抬筆移動(dòng)到點(diǎn)(x,
y)處。subroutinemovea(x,y)
write(11,111)x
,y
111format(1x,′M′,f8.3,′,′,f8.3)
end
(5,5)圖2-1
如圖2-1,若繪圖筆當(dāng)前位置為(0,0),要抬筆移動(dòng)到點(diǎn)(5,5),利用絕對(duì)抬筆移動(dòng)子程序?qū)崿F(xiàn)。
下面是個(gè)絕對(duì)抬筆移動(dòng)的例子。
若再執(zhí)行一次CALLmovea(0.,0.)?
實(shí)現(xiàn)方法:CALLmovea(5.,5.)
⑷絕對(duì)落筆畫(huà)線子程序
指令格式:
Dx,
y
其中x,
y是點(diǎn)的絕對(duì)坐標(biāo)。
功能:從繪圖筆當(dāng)前位置落筆畫(huà)線到點(diǎn)(x,y)
subroutinelinea(x,y)
write(11,111)x
,y111format(1x,′D′,f8.3,′,′,f8.3)
end
⑸相對(duì)落筆畫(huà)線子程序
指令格式:Ix,y
其中x,
y是相對(duì)坐標(biāo)(以繪圖筆當(dāng)前位置為坐標(biāo)原點(diǎn)的坐標(biāo))
功能:從繪圖筆當(dāng)前位置抬筆移動(dòng)到點(diǎn)(x,
y)處。
(程序略)
功能:以繪圖筆當(dāng)前位置為坐標(biāo)原點(diǎn),抬筆移動(dòng)到指定位置。
⑹相對(duì)抬筆移動(dòng)子程序
指令格式:
Rx,y
(程序略)
⑺選擇繪圖筆子程序
功能:使繪圖儀取出指定的繪圖筆。
指令格式:
Jn
(n=1~8,對(duì)應(yīng)8支不同顏色的繪圖筆,默認(rèn)值為n=1)
⑻畫(huà)坐標(biāo)軸子程序
其中,X是繪圖指令,np,q,r是參數(shù)。
np=0時(shí)畫(huà)y軸,np=1時(shí)畫(huà)x軸。q~軸上兩條刻度線間的距離。r~軸上刻度線的重復(fù)次數(shù)。
功能:從繪圖筆當(dāng)前位置起繪制x軸或y軸。
指令格式:
Xnp,q,r
⑼選擇線型子程序
指令格式:①Bi②Lk
其中B、L是指令,i、k是參數(shù)。
功能:使繪圖筆按某種線型(實(shí)線,虛線)畫(huà)線。
指令L的功能是定義線型是實(shí)線還是虛線;當(dāng)k=0畫(huà)實(shí)線,k=1畫(huà)虛線。指令B的功能是確定虛線的畫(huà)法;按參數(shù)i(0<i≤255)
值的大小畫(huà)線,落筆畫(huà)線長(zhǎng)度為i值一半,抬筆移動(dòng)距離為i值另一半。
i
的默認(rèn)值為30,即3㎜(最小繪圖單位為0.1㎜)。
⑽畫(huà)圓弧子程序a1a2圖2-6x,y~圓心坐標(biāo);
r~圓的半徑;、~圓弧起始和終止的角度(度),x軸正向?yàn)?度(圖2-6)。
功能:使繪圖筆按給定的參數(shù)逆時(shí)針繪圓弧。
指令格式:Cx,y,r,a1,a2⑾設(shè)置繪圖單位子程序
功能:使繪圖儀按給定的坐標(biāo)參數(shù)設(shè)置繪圖度量單位。要用到^IP和^SC兩個(gè)指令。
指令格式:^IPp1x,p1y,p2x,p2y
;
^SCq1x,q2x,q1y,q2y
;
指令^IP的功能:按默認(rèn)單位給出繪圖區(qū)域的左下角原點(diǎn)坐標(biāo)和右上角坐標(biāo),從而確定繪圖區(qū)域大小(范圍)。
p1x,p1y~繪圖區(qū)域的左下角原點(diǎn)坐標(biāo)(0,0)。
p2x,p2y~按默認(rèn)單位(0.1㎜),繪圖區(qū)域的右上角坐標(biāo)(4000,2700)。(p1x,p1y)(p2x,p2y)確定區(qū)域大?。ǚ秶?/p>
指令^SC的功能:重新設(shè)置繪圖區(qū)域的左下角原點(diǎn)坐標(biāo)和右上角坐標(biāo),從而確定新的繪圖單位。
q1x,q1y~繪圖區(qū)域的左下角原點(diǎn)坐標(biāo)(0,0)。
q2x,q2y~重新設(shè)置的繪圖區(qū)域右上角坐標(biāo),如:(40,27)。
因此,上述兩個(gè)指令結(jié)合起來(lái)的含義是:在相同的繪圖范圍內(nèi),用一個(gè)新的繪圖單位取代默認(rèn)的繪圖單位。(q1x,q1y)(q2x,q2y)區(qū)域大小相同,但度量單位不同
對(duì)于DXY-1100繪圖儀,繪圖范圍如圖2-7所示:(40,27)2700(默認(rèn))4000(默認(rèn))40(新)27(新)繪圖區(qū)域(0,0)(4000,2700)圖2-7DXY-1100繪圖儀繪圖范圍示意圖
默認(rèn)單位中的1代表0.1mm。新單位中的1代表1cm。^IP0
,0
,4000,2700;
^SC0
,0
,40,27;⑿繪制字符串子程序
功能:繪制給定的一個(gè)符號(hào)串。要用到指令^SI、^DI、^LB三條指令。
指令格式:
①^SIw,h;
功能:以㎝為單位指定字符的大?。粎?shù)w、h分別代表字符的寬度和高度。
②^DIrun,rise;
功能:指定字符的輸出角度;run、rise是控制字符角度的參數(shù),設(shè)字符輸出角度為a,則run=cos(a),rise=sin(a)。角度a是從x軸正向開(kāi)始,逆時(shí)針?lè)较虻慕嵌龋瑔挝粸榛《取?/p>
③^LBchars,char(3);
功能:輸出一個(gè)字符串,以結(jié)束符終止;參數(shù)chars是要輸出的字符串,char(3)是一個(gè)字符常量,代表結(jié)束符。綜合上述三條指令可編寫(xiě)繪制字符串子程序。
至此,介紹了DXY-1100繪圖儀的12條繪圖指令及相應(yīng)的基本子程序設(shè)計(jì)思路。在使用其他繪圖設(shè)備時(shí),根據(jù)相應(yīng)的繪圖指令,我們可采用相同的方法編寫(xiě)基本子程序。
Surfer軟件提供了類(lèi)似平板繪圖儀的功能,提供的一些指令可以在屏幕上畫(huà)圖。我們可以根據(jù)相應(yīng)的指令設(shè)計(jì)出基本子程序,并在Surfer環(huán)境下運(yùn)行。既把生成的繪圖文件在Surfer環(huán)境下顯示出來(lái),同時(shí)可打印輸出。
Surfer環(huán)境下的繪圖指令與DXY-1100繪圖儀的指令略有不同,但編寫(xiě)方法完全相同;共有10個(gè)繪圖基本子程序。⑴初始化子程序
in
⑵選繪圖筆子程序pen(n)
n為筆號(hào),取值為1~16。⑶設(shè)置繪圖單位子程序fact(a)
當(dāng)a=10.0時(shí),單位為㎝;當(dāng)a=1.0時(shí),單位為mm。⑷絕對(duì)抬筆移動(dòng)子程序movea(x,y)⑸相對(duì)抬筆移動(dòng)子程序mover(x,y)⑹絕對(duì)落筆畫(huà)線子程序linea(x,y)⑺相對(duì)落筆畫(huà)線子程序liner(x,y)2.Surfer環(huán)境下的繪圖基本子程序
⑻繪制實(shí)型數(shù)子程序numb1(x,y,h,a,f)
x,y是實(shí)數(shù)輸出的坐標(biāo)位置,h為每個(gè)數(shù)的高度,這3個(gè)參數(shù)的單位由繪圖單位決定;
a為輸出角度(角度);f為要輸出的實(shí)型數(shù)。⑼繪制整型數(shù)子程序numb2(x,y,h,a,i)
i為要輸出的整型數(shù)。⑽繪制字符串子程序text(x,y,h,a,asc)
asc為要輸出的字符串。上述子程序的具體內(nèi)容見(jiàn)教材p50~53。
功能子程序:是在基本子程序基礎(chǔ)上設(shè)計(jì)的具有某種特定繪圖功能的子程序。
1.繪正多邊形功能子程序設(shè)正多邊形的邊數(shù)為n,其外接圓的圓心坐標(biāo)為(x0
,y0),半徑為r,a是正多邊形起點(diǎn)Ps到圓心連線與x軸正向的夾角(度)。
三、功能子程序的設(shè)計(jì)方法(x0,y0)PsP1P2P3a
繪圖思路:在外接圓上找出正多邊形各頂點(diǎn)的坐標(biāo),并依次用直線連接。⑶各頂點(diǎn)坐標(biāo)為:⑵正多邊形各邊頂點(diǎn)與圓心連線的夾角b=2π/n
。⑴外接圓的參數(shù)方程:
x=x0+rcos(t)
y=y0+rsin(t)
(0≤t≤2π)(x0,y0)PsP1P2P3abxs=x0+rcos(a)ys=y0+rsin(a)Ps:x1=x0+rcos(a+b)y1
=y0+rsin(a+b)P1:x2=x0+r
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025塔機(jī)租賃合同(詳細(xì)版)
- 2025車(chē)位買(mǎi)賣(mài)合同
- 2024年高純超細(xì)氧化硅纖維項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 智慧醫(yī)療下的醫(yī)院食堂智能點(diǎn)餐系統(tǒng)分析
- 2024年核酸疫苗項(xiàng)目資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 科技輔助下的小學(xué)數(shù)學(xué)自主學(xué)習(xí)能力培養(yǎng)
- 江蘇省靖江市2024-2025學(xué)年七年級(jí)上學(xué)期1月期末道德與法治試題(含答案)
- 2025年外研銜接版九年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案
- 2025年華東師大版選修3物理下冊(cè)階段測(cè)試試卷含答案
- 2025年北師大新版九年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 中醫(yī)診療方案腎病科
- 人教版(2025新版)七年級(jí)下冊(cè)數(shù)學(xué)第七章 相交線與平行線 單元測(cè)試卷(含答案)
- 完整2024年開(kāi)工第一課課件
- 從跨文化交際的角度解析中西方酒文化(合集5篇)xiexiebang.com
- 中藥飲片培訓(xùn)課件
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢(shì)管理與擺位》
- 《論文的寫(xiě)作技巧》課件
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說(shuō)明以及簡(jiǎn)單故障處理
- 2022年12月Python-一級(jí)等級(jí)考試真題(附答案-解析)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專(zhuān)家共識(shí)
- Hypermesh lsdyna轉(zhuǎn)動(dòng)副連接課件完整版
評(píng)論
0/150
提交評(píng)論