第2章绘图子程序设计_第1页
第2章绘图子程序设计_第2页
第2章绘图子程序设计_第3页
第2章绘图子程序设计_第4页
第2章绘图子程序设计_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章绘图子程序设计一、绘图子程序的设计准则二、基本子程序的设计方法三、功能子程序的设计方法

绘图子程序是指用计算机高级语言编写的具有不同绘图功能的子程序。绘图子程序分为:基本子程序、功能子程序和应用子程序。基本子程序:是与绘图设备等硬件有关的子程序。一般控制绘图机启动和停止,设置绘图单位,画直线,控制绘图笔的抬落以及选择绘图笔等。功能子程序:是在基本子程序基础上设计的具有某种特定绘图功能的子程序,如画矩形、正多边形、椭圆等图形。功能子程序反映不同行业绘图的共同要求,通用性较强。应用子程序:是在基本子程序和功能子程序基础上设计的一些专业性较强的子程序,如绘制等值线图、剖面图、柱状图等的子程序。

本章主要介绍基本子程序和功能子程序;应用子程序需根据需求编写。

一、绘图子程序的设计准则1.子程序的通用性①尽量减少子程序对硬件的依赖性依赖性越小,绘图子程序的通用性就越强,向其它计算机和绘图设备的移植就越容易。

通用性是指绘图子程序对多种计算机和绘图设备的适用性。②编程语言机器语言和汇编语言对硬件的依赖性较大,编写的子程序通用性差,不便于移植。除特殊要求外,尽可能采用计算机高级语言编写通用性强的绘图子程序。2.子程序的参数一般来说,子程序中参数的多少反映了子程序功能的强弱;但参数过多又给用户带来不便。因此,在保证子程序功能的前提下,子程序中的参数应尽可能的少。3.时间和内存选择合适的算法和设计思路,使子程序被调用时占用更少的运算时间和内存。

基本子程序是使绘图机完成基本绘图动作的子程序。如驱动和停止绘图机,画直线,控制绘图笔的抬、落以及选择绘图笔等动作。绘图动作含义:

抬笔:使绘图笔的笔尖离开纸面,准备空走。

落笔:使绘图笔的笔尖接触纸面,准备绘图。

归位:抬笔走到绘图机台面左下角的原点(0,0)。

选笔:选择某一支绘图笔,即选择绘图颜色。

移动:绘图笔在绘图范围内的移动。

二、基本子程序的设计方法

实现思路:利用高级语言的输出语句把绘图指令及相应的参数写入一个文件。绘图仪可从该文件中依次接收相应的绘图指令并根据提供的参数值完成绘图动作。

对于不同的绘图仪,生产厂家一般都提供了相应的绘图指令,用于驱动绘图仪完成绘图动作。

绘图指令格式为:绘图指令(字符)+参数可以在基本子程序中使用各种绘图指令,实现不同的绘图动作。

如何设计绘图基本子程序来控制绘图动作呢?1.绘图仪的绘图指令、基本子程序设计

以DXY-1100平板绘图仪为例介绍绘图指令、相应的基本子程序编写方法。笔架笔夹

⑴绘图仪初始化子程序

指令格式:M0,0

(M是绘图指令,代表抬笔移动;0,0是参数值,代表坐标原点)

功能:使绘图仪连通、绘图笔夹自动取出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)

调用方法:编写主程序调用子程序,即CALL

in。将主程序、子程序编译、连接后即可运行。运行结果是在硬盘上产生了一个包含字符串M0,0的文本文件。

等同于C语言中编写一个把字符串M0,0写入文本文件的函数。(fm为存放绘图指令的文件名)

⑵绘图笔归位子程序

指令格式:H

(无参数)功能:结束绘图,把画笔放回笔架,并使笔夹归位到坐标原点(0,0)。subroutinehome(子程序名)

write(11,111)

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

end

⑶绝对抬笔移动子程序

指令格式:Mx,

y

(与绘图初始化的指令相同)其中x,

y是点的绝对坐标(以左下角坐标原点为基准),是实型参数。

功能:从绘图笔当前位置抬笔移动到点(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),利用绝对抬笔移动子程序实现。

下面是个绝对抬笔移动的例子。

若再执行一次CALLmovea(0.,0.)?

实现方法: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是参数。

np=0时画y轴,np=1时画x轴。q~轴上两条刻度线间的距离。r~轴上刻度线的重复次数。

功能:从绘图笔当前位置起绘制x轴或y轴。

指令格式:

Xnp,q,r

⑼选择线型子程序

指令格式:①Bi②Lk

其中B、L是指令,i、k是参数。

功能:使绘图笔按某种线型(实线,虚线)画线。

指令L的功能是定义线型是实线还是虚线;当k=0画实线,k=1画虚线。指令B的功能是确定虚线的画法;按参数i(0<i≤255)

值的大小画线,落笔画线长度为i值一半,抬笔移动距离为i值另一半。

i

的默认值为30,即3㎜(最小绘图单位为0.1㎜)。

⑽画圆弧子程序a1a2图2-6x,y~圆心坐标;

r~圆的半径;、~圆弧起始和终止的角度(度),x轴正向为0度(图2-6)。

功能:使绘图笔按给定的参数逆时针绘圆弧。

指令格式:Cx,y,r,a1,a2⑾设置绘图单位子程序

功能:使绘图仪按给定的坐标参数设置绘图度量单位。要用到^IP和^SC两个指令。

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

;

^SCq1x,q2x,q1y,q2y

;

指令^IP的功能:按默认单位给出绘图区域的左下角原点坐标和右上角坐标,从而确定绘图区域大小(范围)。

p1x,p1y~绘图区域的左下角原点坐标(0,0)。

p2x,p2y~按默认单位(0.1㎜),绘图区域的右上角坐标(4000,2700)。(p1x,p1y)(p2x,p2y)确定区域大小(范围)

指令^SC的功能:重新设置绘图区域的左下角原点坐标和右上角坐标,从而确定新的绘图单位。

q1x,q1y~绘图区域的左下角原点坐标(0,0)。

q2x,q2y~重新设置的绘图区域右上角坐标,如:(40,27)。

因此,上述两个指令结合起来的含义是:在相同的绘图范围内,用一个新的绘图单位取代默认的绘图单位。(q1x,q1y)(q2x,q2y)区域大小相同,但度量单位不同

对于DXY-1100绘图仪,绘图范围如图2-7所示:(40,27)2700(默认)4000(默认)40(新)27(新)绘图区域(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;

功能:以㎝为单位指定字符的大小;参数w、h分别代表字符的宽度和高度。

②^DIrun,rise;

功能:指定字符的输出角度;run、rise是控制字符角度的参数,设字符输出角度为a,则run=cos(a),rise=sin(a)。角度a是从x轴正向开始,逆时针方向的角度,单位为弧度。

③^LBchars,char(3);

功能:输出一个字符串,以结束符终止;参数chars是要输出的字符串,char(3)是一个字符常量,代表结束符。综合上述三条指令可编写绘制字符串子程序。

至此,介绍了DXY-1100绘图仪的12条绘图指令及相应的基本子程序设计思路。在使用其他绘图设备时,根据相应的绘图指令,我们可采用相同的方法编写基本子程序。

Surfer软件提供了类似平板绘图仪的功能,提供的一些指令可以在屏幕上画图。我们可以根据相应的指令设计出基本子程序,并在Surfer环境下运行。既把生成的绘图文件在Surfer环境下显示出来,同时可打印输出。

Surfer环境下的绘图指令与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环境下的绘图基本子程序

⑻绘制实型数子程序numb1(x,y,h,a,f)

x,y是实数输出的坐标位置,h为每个数的高度,这3个参数的单位由绘图单位决定;

a为输出角度(角度);f为要输出的实型数。⑼绘制整型数子程序numb2(x,y,h,a,i)

i为要输出的整型数。⑽绘制字符串子程序text(x,y,h,a,asc)

asc为要输出的字符串。上述子程序的具体内容见教材p50~53。

功能子程序:是在基本子程序基础上设计的具有某种特定绘图功能的子程序。

1.绘正多边形功能子程序设正多边形的边数为n,其外接圆的圆心坐标为(x0

,y0),半径为r,a是正多边形起点Ps到圆心连线与x轴正向的夹角(度)。

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

绘图思路:在外接圆上找出正多边形各顶点的坐标,并依次用直线连接。⑶各顶点坐标为:⑵正多边形各边顶点与圆心连线的夹角b=2π/n

。⑴外接圆的参数方程:

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论