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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第二章繪圖子程序設計一、繪圖子程序的設計準則二、基本子程序的設計方法三、功能子程序的設計方法

繪圖子程序是指用計算機高級語言編寫的具有不同繪圖功能的子程序。繪圖子程序分為:基本子程序、功能子程序和應用子程序?;咀映绦颍菏桥c繪圖設備等硬件有關的子程序。一般控制繪圖機啟動和停止,設置繪圖單位,畫直線,控制繪圖筆的抬落以及選擇繪圖筆等。功能子程序:是在基本子程序基礎上設計的具有某種特定繪圖功能的子程序,如畫矩形、正多邊形、橢圓等圖形。功能子程序反映不同行業(yè)繪圖的共同要求,通用性較強。應用子程序:是在基本子程序和功能子程序基礎上設計的一些專業(yè)性較強的子程序,如繪制等值線圖、剖面圖、柱狀圖等的子程序。

本章主要介紹基本子程序和功能子程序;應用子程序需根據(jù)需求編寫。

一、繪圖子程序的設計準則1.子程序的通用性①盡量減少子程序?qū)τ布囊蕾囆砸蕾囆栽叫?,繪圖子程序的通用性就越強,向其它計算機和繪圖設備的移植就越容易。

通用性是指繪圖子程序?qū)Χ喾N計算機和繪圖設備的適用性。②編程語言機器語言和匯編語言對硬件的依賴性較大,編寫的子程序通用性差,不便于移植。除特殊要求外,盡可能采用計算機高級語言編寫通用性強的繪圖子程序。2.子程序的參數(shù)一般來說,子程序中參數(shù)的多少反映了子程序功能的強弱;但參數(shù)過多又給用戶帶來不便。因此,在保證子程序功能的前提下,子程序中的參數(shù)應盡可能的少。3.時間和內(nèi)存選擇合適的算法和設計思路,使子程序被調(diào)用時占用更少的運算時間和內(nèi)存。

基本子程序是使繪圖機完成基本繪圖動作的子程序。如驅(qū)動和停止繪圖機,畫直線,控制繪圖筆的抬、落以及選擇繪圖筆等動作。繪圖動作含義:

抬筆:使繪圖筆的筆尖離開紙面,準備空走。

落筆:使繪圖筆的筆尖接觸紙面,準備繪圖。

歸位:抬筆走到繪圖機臺面左下角的原點(0,0)。

選筆:選擇某一支繪圖筆,即選擇繪圖顏色。

移動:繪圖筆在繪圖范圍內(nèi)的移動。

二、基本子程序的設計方法

實現(xiàn)思路:利用高級語言的輸出語句把繪圖指令及相應的參數(shù)寫入一個文件。繪圖儀可從該文件中依次接收相應的繪圖指令并根據(jù)提供的參數(shù)值完成繪圖動作。

對于不同的繪圖儀,生產(chǎn)廠家一般都提供了相應的繪圖指令,用于驅(qū)動繪圖儀完成繪圖動作。

繪圖指令格式為:繪圖指令(字符)+參數(shù)可以在基本子程序中使用各種繪圖指令,實現(xiàn)不同的繪圖動作。

如何設計繪圖基本子程序來控制繪圖動作呢?1.繪圖儀的繪圖指令、基本子程序設計

以DXY-1100平板繪圖儀為例介紹繪圖指令、相應的基本子程序編寫方法。筆架筆夾

⑴繪圖儀初始化子程序

指令格式:M0,0

(M是繪圖指令,代表抬筆移動;0,0是參數(shù)值,代表坐標原點)

功能:使繪圖儀連通、繪圖筆夾自動取出1號繪圖筆并抬筆將繪圖筆移至坐標原點(0,0)點。是每次使用繪圖儀之前都必須進行的準備動作。

子程序編寫為:

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)用方法:編寫主程序調(diào)用子程序,即CALL

in。將主程序、子程序編譯、連接后即可運行。運行結果是在硬盤上產(chǎn)生了一個包含字符串M0,0的文本文件。

等同于C語言中編寫一個把字符串M0,0寫入文本文件的函數(shù)。(fm為存放繪圖指令的文件名)

⑵繪圖筆歸位子程序

指令格式:H

(無參數(shù))功能:結束繪圖,把畫筆放回筆架,并使筆夾歸位到坐標原點(0,0)。subroutinehome(子程序名)

write(11,111)

111format(1x,′H′)(命令)

end

⑶絕對抬筆移動子程序

指令格式:Mx,

y

(與繪圖初始化的指令相同)其中x,

y是點的絕對坐標(以左下角坐標原點為基準),是實型參數(shù)。

功能:從繪圖筆當前位置抬筆移動到點(x,

y)處。subroutinemovea(x,y)

write(11,111)x

,y

111format(1x,′M′,f8.3,′,′,f8.3)

end

(5,5)圖2-1

如圖2-1,若繪圖筆當前位置為(0,0),要抬筆移動到點(5,5),利用絕對抬筆移動子程序?qū)崿F(xiàn)。

下面是個絕對抬筆移動的例子。

若再執(zhí)行一次CALLmovea(0.,0.)?

實現(xiàn)方法:CALLmovea(5.,5.)

⑷絕對落筆畫線子程序

指令格式:

Dx,

y

其中x,

y是點的絕對坐標。

功能:從繪圖筆當前位置落筆畫線到點(x,y)

subroutinelinea(x,y)

write(11,111)x

,y111format(1x,′D′,f8.3,′,′,f8.3)

end

⑸相對落筆畫線子程序

指令格式:Ix,y

其中x,

y是相對坐標(以繪圖筆當前位置為坐標原點的坐標)

功能:從繪圖筆當前位置抬筆移動到點(x,

y)處。

(程序略)

功能:以繪圖筆當前位置為坐標原點,抬筆移動到指定位置。

⑹相對抬筆移動子程序

指令格式:

Rx,y

(程序略)

⑺選擇繪圖筆子程序

功能:使繪圖儀取出指定的繪圖筆。

指令格式:

Jn

(n=1~8,對應8支不同顏色的繪圖筆,默認值為n=1)

⑻畫坐標軸子程序

其中,X是繪圖指令,np,q,r是參數(shù)。

np=0時畫y軸,np=1時畫x軸。q~軸上兩條刻度線間的距離。r~軸上刻度線的重復次數(shù)。

功能:從繪圖筆當前位置起繪制x軸或y軸。

指令格式:

Xnp,q,r

⑼選擇線型子程序

指令格式:①Bi②Lk

其中B、L是指令,i、k是參數(shù)。

功能:使繪圖筆按某種線型(實線,虛線)畫線。

指令L的功能是定義線型是實線還是虛線;當k=0畫實線,k=1畫虛線。指令B的功能是確定虛線的畫法;按參數(shù)i(0<i≤255)

值的大小畫線,落筆畫線長度為i值一半,抬筆移動距離為i值另一半。

i

的默認值為30,即3㎜(最小繪圖單位為0.1㎜)。

⑽畫圓弧子程序a1a2圖2-6x,y~圓心坐標;

r~圓的半徑;、~圓弧起始和終止的角度(度),x軸正向為0度(圖2-6)。

功能:使繪圖筆按給定的參數(shù)逆時針繪圓弧。

指令格式:Cx,y,r,a1,a2⑾設置繪圖單位子程序

功能:使繪圖儀按給定的坐標參數(shù)設置繪圖度量單位。要用到^IP和^SC兩個指令。

指令格式:^IPp1x,p1y,p2x,p2y

;

^SCq1x,q2x,q1y,q2y

;

指令^IP的功能:按默認單位給出繪圖區(qū)域的左下角原點坐標和右上角坐標,從而確定繪圖區(qū)域大小(范圍)。

p1x,p1y~繪圖區(qū)域的左下角原點坐標(0,0)。

p2x,p2y~按默認單位(0.1㎜),繪圖區(qū)域的右上角坐標(4000,2700)。(p1x,p1y)(p2x,p2y)確定區(qū)域大小(范圍)

指令^SC的功能:重新設置繪圖區(qū)域的左下角原點坐標和右上角坐標,從而確定新的繪圖單位。

q1x,q1y~繪圖區(qū)域的左下角原點坐標(0,0)。

q2x,q2y~重新設置的繪圖區(qū)域右上角坐標,如:(40,27)。

因此,上述兩個指令結合起來的含義是:在相同的繪圖范圍內(nèi),用一個新的繪圖單位取代默認的繪圖單位。(q1x,q1y)(q2x,q2y)區(qū)域大小相同,但度量單位不同

對于DXY-1100繪圖儀,繪圖范圍如圖2-7所示:(40,27)2700(默認)4000(默認)40(新)27(新)繪圖區(qū)域(0,0)(4000,2700)圖2-7DXY-1100繪圖儀繪圖范圍示意圖

默認單位中的1代表0.1mm。新單位中的1代表1cm。^IP0

,0

,4000,2700;

^SC0

,0

,40,27;⑿繪制字符串子程序

功能:繪制給定的一個符號串。要用到指令^SI、^DI、^LB三條指令。

指令格式:

①^SIw,h;

功能:以㎝為單位指定字符的大??;參數(shù)w、h分別代表字符的寬度和高度。

②^DIrun,rise;

功能:指定字符的輸出角度;run、rise是控制字符角度的參數(shù),設字符輸出角度為a,則run=cos(a),rise=sin(a)。角度a是從x軸正向開始,逆時針方向的角度,單位為弧度。

③^LBchars,char(3);

功能:輸出一個字符串,以結束符終止;參數(shù)chars是要輸出的字符串,char(3)是一個字符常量,代表結束符。綜合上述三條指令可編寫繪制字符串子程序。

至此,介紹了DXY-1100繪圖儀的12條繪圖指令及相應的基本子程序設計思路。在使用其他繪圖設備時,根據(jù)相應的繪圖指令,我們可采用相同的方法編寫基本子程序。

Surfer軟件提供了類似平板繪圖儀的功能,提供的一些指令可以在屏幕上畫圖。我們可以根據(jù)相應的指令設計出基本子程序,并在Surfer環(huán)境下運行。既把生成的繪圖文件在Surfer環(huán)境下顯示出來,同時可打印輸出。

Surfer環(huán)境下的繪圖指令與DXY-1100繪圖儀的指令略有不同,但編寫方法完全相同;共有10個繪圖基本子程序。⑴初始化子程序

in

⑵選繪圖筆子程序pen(n)

n為筆號,取值為1~16。⑶設置繪圖單位子程序fact(a)

當a=10.0時,單位為㎝;當a=1.0時,單位為mm。⑷絕對抬筆移動子程序movea(x,y)⑸相對抬筆移動子程序mover(x,y)⑹絕對落筆畫線子程序linea(x,y)⑺相對落筆畫線子程序liner(x,y)2.Surfer環(huán)境下的繪圖基本子程序

⑻繪制實型數(shù)子程序numb1(x,y,h,a,f)

x,y是實數(shù)輸出的坐標位置,h為每個數(shù)的高度,這3個參數(shù)的單位由繪圖單位決定;

a為輸出角度(角度);f為要輸出的實型數(shù)。⑼繪制整型數(shù)子程序numb2(x,y,h,a,i)

i為要輸出的整型數(shù)。⑽繪制字符串子程序text(x,y,h,a,asc)

asc為要輸出的字符串。上述子程序的具體內(nèi)容見教材p50~53。

功能子程序:是在基本子程序基礎上設計的具有某種特定繪圖功能的子程序。

1.繪正多邊形功能子程序設正多邊形的邊數(shù)為n,其外接圓的圓心坐標為(x0

,y0),半徑為r,a是正多邊形起點Ps到圓心連線與x軸正向的夾角(度)。

三、功能子程序的設計方法(x0,y0)PsP1P2P3a

繪圖思路:在外接圓上找出正多邊形各頂點的坐標,并依次用直線連接。⑶各頂點坐標為:⑵正多邊形各邊頂點與圓心連線的夾角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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論