第2章繪圖子程序設(shè)計(jì)_第1頁(yè)
第2章繪圖子程序設(shè)計(jì)_第2頁(yè)
第2章繪圖子程序設(shè)計(jì)_第3頁(yè)
第2章繪圖子程序設(shè)計(jì)_第4頁(yè)
第2章繪圖子程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論