第12章 FORTRAN图形操作

合集下载

FORTRAN图形界面

FORTRAN图形界面

二、QuickWin绘图应用
1. 图形库函数 MSFLIB 2. QuickWin绘图坐标系
视口 坐标原点 左手坐标系
基本绘图函数 例:绘制正弦曲线
3.
USE MSFLIB INTEGER(2) result INTEGER(4) color TYPE(xycoord) XY result=INITIALIZEFONTS() !初始化前景 result=SETFONT('Arial''h18w10i') !设置前景字体 color=SETCOLORRGB(#0000ff) !设置当前绘图颜色为红色 CALL SETVIEWORG(200,200,XY) !改变视口坐标原点位置 CALL MOVETO(INT2(-50),INT2(0),XY) !移动到指定位置 result=LINETO(INT2(400),INT2(0)) !绘制直线 CALL MOVETO(INT2(-10),INT2(5),XY) CALL OUTGTEXT("0") !输出字符 DO x=0,360,3 y=-SIN(x/180*3.141593)*100 result=SETPIXELRGB(INT2(x),INT2(y), #ffffff) !指定像素点色值 END DO END
第十二章 FORTRAN图形 用户界面的设计
图形界面的设计 QuickWin绘图应用 对话框的设计
一、图形界面的设计
1. QuickWin应用程序的创建过程 在Microsoft Fortran PowerStation中调用QuickWin 库 来创建QuickWin应用程序。 2.QuickWin窗口的特征与控制 窗口特征 控制窗口的函数 3.响应鼠标事件 (1)基于事件的函数。当鼠标事件发生时调用应用程序预 先定义的回调函数; (2)中断函数。将程序挂起等候用户鼠标事件输入。

Fortran 程序基础

Fortran 程序基础
(3)引用数组片段 数组名(下标范围)
2021/7/1
26
数组操作
PROGRAM TEST IMPLICIT NONE ! 变量定义 REAL :: A1, A2,A3,A4,A5,B(5,5) READ(*, *)A1,A2,A3,A4,A5 ! 数组片断的引用 B(1,1:5) = A1 B(2,1:5) = A2 B(3,1:5) = A3 B(4,1:5) = A4 B(5,1:5) = A5
数组可用DIMENSION语句定义 DIMENSION runoff(365) Real runoff ※使用数组必须先定义
2021/7/1
25
数组操作
数组引用
(1)引用数组元素 数组名(下标),如 runoff(15),rain(3,5)
(2)引用全部数组 数组名,如: real B(10),A(10) B=A
2021/7/1
8
数据类型及I/0格式
变量的定义及类型说明:
(1)类型说明语句
integer year, month, day
real runoff
character*10 station
(2)隐含约定
I~N 规则
2021/7/1
9
数据类型及I/0格式
输入、输出语句
READ(设备号, 格式说明或格式说明语句标号) [变量列表] WRITE (设备号, 格式说明或格式说明语句标号) [变量列表]
其他程序控制语句 End Pause stop
2021/7/1
22
Fortran程序流程控制
实例分析
(1)1~100求和 (2)输入5个数,按大小排序
2021/7/1
23
数组操作

FORTRAN编程中PGPLOT绘图库的制作与调用

FORTRAN编程中PGPLOT绘图库的制作与调用

FORTRAN编程中PGPLOT绘图库的制作与调用文档编写:马利华PGPLOT是一个不依赖于任何装置的数据绘图程序库。

程序库由加州理工学院的Tim Pearson从1983开始编写,大多以FORTRAN程序写成。

它被设计成模组化的应用程序接口,可以输出到数种绘图装置上。

因为该程序库具备低阶(字、点、线、面)和高阶的绘图功能,被广泛应用于学术和科学社群。

PGPLOT可以被第三方重新散布和修改,但只能以编译过的二进制档案形式。

无论原始的或修改过的源代码都不能被重新散布。

最近的版本是5.2.2,于2001年二月发布。

PGPLOT提供了C和Fortran 77的接口,也有许多由用户提供的其他编程语言接口,例如:C++、perl、python、ruby、tcl/tk...等。

PGPLOT可以做许多种不依赖于任何装置的输出,包含数种图档格式、图形显示终端、PostScript装置,及X Window。

也可以用图形游标来帮助输入数据。

它可以在许多种操作系统上运作,包含大多的Unix-like系统、Mac OS,及Microsoft Windows。

因为此程序发行较早,相对于较新的套件,如PLplot,PGPLOT有许多的限制。

特别是PGPLOT只支援8位元的彩图,而不是完整的RGB色彩;而且也没有简单的方法来直接绘图到程式内存中。

目前该程序库的应用范围仍然很广。

参照程序包说明:aaaread.me文件给出的Windows95/98/NT下库文件制作过程,以下给出在Windows 7下,PGPLOT.lib静态库文件的制作过程。

编译环境:Windows 7(sp1)64位操作系统,采用Intel Visual Fortran编译器,运行在Miscrosoft Visual Studio(Ultimate 2013 Version 12.0.21005.1 REL)IDE环境,Fortran版本为Intel(R) Visual Fortran Package ID: w_fcompxe_2013_sp1.1.139。

fortran语法手册

fortran语法手册

1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→()2 FORTRAN77变量类型2.1 隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。

2.2 用类型说明语句确定变量类型:可以改变I-N规则2.3 用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如 IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。

2.4 数组的说明与使用使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5 使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/-1.0,-1.0,-1.0/DATA A/-1.0/,B/-1.0/,C/-1.0/DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规则程序中的变量名,不分大小写;变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;一行只能写一个语句;程序的第一个语句固定为PROGRAM 程序名称字符串某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;某行的第73至80字符位为注释区,80字符位以后不能有内容。

fortran教程.ppt

fortran教程.ppt

N-S 图——结构化流程图 S=0
例2 用N-S图表示
N=1
S+1/N= S
N+1= N
直到N>100为止
打印 S 值
例1 用N-S图表示
N=0 T=0
输入 A A+T →T N+1 →N 直到N≥100 为止 打印 T
例3
L=1
N=1
S=1
SUM = 1
L+2 → L
-S → S
N+1 → N
SUM+S/L →SUM
(3)输入一个数给“收入变量”A
(4)将A和T的值相加,其和值放在变量T中 A+TT;
(5)使N的值加1,即N+1 N(N的值表示已累加数据的个数)
(6)若N﹤100,则返回(3)继续执行以后各步,否 则转到执行(7)
(7)打印出总和T的值
以上算法体现“迭代”的思想—计算机算法的最大特 点
例2 求 1
将高级语言程序(源程序)转换为机器语言程序(目标程序)
的工作由“编译程序”来完成。 编译
执行
高级语言程序
机器指令目标程序
计算结果
编译程序 (预先存如电脑)
裸机
用户源程序
操作系统
高级语言编译系统
计算机系统与操作系统关系示意图
§ 1-2 算法(Algorithm)与程序设计(Programming)
1. 近50年的丰富积累,资源不浪费,对原有程 序向下兼容。而C语言与Matlab才20多年
2. FORTRAN书写和语法要求严格,更适合于 严谨的科学计算。而C对数组不提供越界检查, 容易出错,而且不容易查出
3. FORTRAN 90~95可以直接对矩阵和复数进行 运算。而C语言则要用多重循环

Fortran第12章

Fortran第12章

4、打开文件时的状态分类:老文件、新文件 老文件:打开文件时,文件已存在 新文件:打开文件时,文件不存在
注意:文件应先连接(即打开)或预连接 ,再读写
12.1.3 逻辑设备
1.特殊设备号:由系统预先定义 用设备号5定义键盘,设备号6定义显示器 *即可定义键盘又可定义显示器 注意:这些设备是预连接的,不需要打开就可以直接使用 2. 内部文件的设备号:不需要打开就可以直接使用
OPEN(2,FILE=‘A.DAT’,ACCESS=‘DIRECT’, FORM=FORMATTED’,RECL=12)
RECL:规定记录的统一长度 例:无格式顺序文件OPEN语句的最简形式 OPEN(2,FILE=‘A.DAT’, ‘FORM=UNFORMATTED’) 例:无格式直接文件OPEN语句的最简形式
=‘NO’:遇下一个输入语句不换行读取
WRITE的选项 IOSTST=IT IT为整型变量执,执行此语句时获得数 值,<0表遇到文件结束信息 >0 此操作发生错误 =0 执行成功 无此项,读写发生错误将报错,并停止运行 ADVANCE=‘YES’(默认值):遇下一个输出语句换行 输出 =‘NO’:遇下一个输出语句不换行输出
例:无格式顺序文件OPEN语句的最简形式 OPEN(2,FILE=‘A.DAT’, FORM=‘UNFORMATTED’) 例:无格式直接文件OPEN语句的最简形式 OPEN(2, FILE=‘A.DAT’, ACCESS=‘DIRECT’, RECL=16)
2、 READ语句最简写法:
无格式顺序文件、直接文件的READ语句:与有格式的区别是 去掉格式说明这一项 顺序文件READ (设备号)输入表 直接文件READ (设备号,REC=记录号)输入表 例:READ(10)I,J READ(10,REC=3)I,J 3、 WRITE语句最简写法: 例:WRITE(10)I,J WRITE(10,REC=3)I,J

VisualFortran的界面设计及其三维图形绘制

VisualFortran的界面设计及其三维图形绘制
易, 这得益于 Visual Fortran 对 Windows 图形设备接 口( GDI) 函数的封装。而它出色的图形功能, 使其 在科学计算可视化等领域得到很好的应用, 采用它 可以利用以前的资源, 节约大量编程时间, 使古老的 计算机语言焕发青春。
参考文献 [ 1] 邓巍巍, 王越男.Visual Fortran 编程指南[ M] .北京: 人民邮电
对框架窗口和子窗口的设置: !设置框架窗口和子窗口标题 i4=SetWindowText ( GetHwndQQ ( QWIN- ¥FRAMEWINDOW) , & ( " 使用菜单交互绘图 "C) i4=SetWindowText( GetHwndQQ(0),&! 缺省子窗 口的单元号 " 图形输出窗口 "C) !将状态栏的状态提示由 "Running" 改为 " 运行 状态 " Call SetMessageQQ ( “ 运 行 状 态 ”, QWIN- ¥MSG_RUNNING)
பைடு நூலகம்
result代表 Logical 的函数返回结果。函数调用成 功, 返回.True.; 否则返回.False.。
menuID 为 Integer 参数, 标识包含插入菜单项的 菜单号。
flags为 Integer 参数, 标识菜单项状态。 text 为 Character 参数, 规定菜单项名称。 routine为外部例程名, 代表选择菜单项时执行 的回调例程。 下例为 QuickWin 的正余弦曲线 绘 制 程 序 中 的 第 三 组“ 绘 图 ”菜 单 , 其 下 拉 菜 单 中 的 两 个 菜 单 项 “正弦”和“余弦”: i4=AppendMenuQQ (3,¥MENUENABLED,' 绘 图 (&P)'C,NUL) i4=AppendMenuQQ (3,¥MENUENABLED,' 正 弦 (&S)'C,PlotSin) i4=AppendMenuQQ (3,¥MENUENABLED,' 余 弦 (&C)'C,PlotCos) 其中, PlotSin 和 PlotCos 是用户编写的用于绘制 正弦和余弦曲线的绘图过程。 1.2 对话框 创建对话框有两个步骤: 指定对话框外观和它 包含的控件名称、属性; 编写通过识别和响应用户选 择来激活这些控件的应用程序。 要在程序中操作对话框及其控件, 需要引用对 话框模块( DFLogM) , 并包含资源头文件( Resource. FD) , 即 Use DFLogM Include 'Resource.FD' 操作对话框的大致步骤为: ( 1) 调用 DlgInit 例程初始化对话框类型, 并将

Fortran用户指南

Fortran用户指南

Sun Microsystems, Inc.有关本文档的建议请发到:/hwdocs/feedback Fortran 用户指南Sun™ Studio 8部件号码 817-5802-10 2004 年 4 月,修订 A版权所有© 2004 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 保留所有权利。

美国政府权利―商业软件。

政府用户在使用时应遵循 Sun Microsystems, Inc. 的标准许可协议和 FAR 及其补充中的适用规定。

使用本软件应遵守许可证条款。

此次分发可能包含由第三方开发的内容。

该产品的部分内容可能出自 Berkeley BSD 系统,由加州大学 (University of California) 授权。

UNIX 是在美国和其它国家(地区)的注册商标,由 X/Open Company, Ltd. 独家授权。

Sun、Sun Microsystems、Sun 徽标、Java、JavaHelp 是 Sun Microsystems, Inc. 在美国和其它国家(地区)的商标或注册商标。

所有的 SPARC 商标均需获得授权才能使用,它们是 SPARC International, Inc. 在美国和其它国家(地区)的商标或注册商标。

标有 SPARC 商标的产品都基于由Sun Microsystems, Inc. 开发的体系结构。

该产品为美国的出口控制法所涵该和控制,并有可能要遵守其它国家(地区)的出口或进口法规。

严禁将产品用于核、导弹、生化武器或核海事等最终目的或交给有此类企图的最终用户,无论是直接还是间接。

严禁将产品出口或再次出口到美国禁运的国家(地区)或美国出口排除列表中的实体,包括但不限于被拒绝的人员以及专门指定的公民列表。

本文档按“原样”提供,对所有明示或默示的条件、陈述和担保,包括对适销性、特殊用途的适用性或非侵权性的默示保证,均不承担任何责任,除非此免责声明的适用范围在法律上无效。

fortran指令大全

fortran指令大全

fortran指令大全附录 C SCILAB 部分函数指令表(c)LIAMA. All rights reserved.(注解:本指令表只收集了部分常用指令, 有关全部指令请参照文档文件)+ 加- 减* 矩阵乘数组乘*.1. 通用指令^ 矩阵乘方数组乘方^.\ 反斜杠或左除help 在线帮助/ 斜杠或右除apropos 文档中关键词搜寻或.\ 数组除/. ans 缺省变量名以及最新表达式的运算结果== 等号~= 不等号clear 从内存中清除变量和函数< 小于exit 关闭SCILAB > 大于quit 退出SCILAB <= 小于或等于save 把内存变量存入磁盘>= 大于或等于exec 运行脚本文件&,and 逻辑与mode 文件运行中的显示格式|,or 逻辑或getversion 显示SCILAB 版本~,not 逻辑非ieee 浮点运算溢出显示模式选择: 冒号who 列出工作内存中的变量名( ) 园括号edit 文件编辑器[ ] 方括号type 变量类型{ } 花括号what 列出SCILAB 基本命令小数点.format 设置数据输出格式, 逗号chdir 改变当前工作目录; 分号getenv 给出环境值// 注释号mkdir 创建目录= 赋值符号pwd 显示当前工作目录' 引号evstr 执行表达式' 复数转置号转置号'.ans 最新表达式的运算结果2.运算符和特殊算符%eps 浮点误差容限, =2-52≈2.22×10-16%i 虚数单位= √(-1) %inf 正无穷大%pi 圆周率,π=3.1415926535897....3. 编程语言结构abort 中止计算或循环break 终止最内循环case 同select 一起使用continue 将控制转交给外层的for或while循环else 同if一起使用elseif 同if一起使用end 结束for,while,if 语句for 按规定次数重复执行语句if 条件执行语句otherwise 可同switch 一起使用pause 暂停模式return 返回select 多个条件分支then 同if一起使用while 不确定次数重复执行语句eval 特定值计算feval 函数特定值计算或多变量计算function 函数文件头global 定义全局变量isglobal 检测变量是否为全局变量error 显示错误信息lasterror 显示最近的错误信息sprintf 按格式把数字转换为串warning 显示警告信息4.基本数学函数acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割asin 反正弦asinh 反双曲正弦atan 反正切atanh 反双曲正切cos 余弦cosh 双曲余弦cotg 余切coth 双曲余切sin 正弦sinh 双曲正弦tan 正切tanh 双曲正切exp 指数log 自然对数log10 常用对数log2 以2为底的对数sqrt 平方根abs 绝对值conj 复数共轭imag 复数虚部real 复数实部ceil 向上(正无穷大方向)取整fix 向零方向取整floor 向下(负无穷大方向)取整round 四舍五入取整sign 符号函数gsort 降次排序erf 误差函数erfc 补误差函数gamma gamma 函数interp 插值函数interpln 线性插值函数intsplin 样条插值函数smooth 样条平滑函数spline 样条函数quarewave 方波函数sign 符号函数double 将整数转换为rank 矩阵秩trace 矩阵迹cond 矩阵条件数rcond 逆矩阵条件数inv 矩阵的逆lu LU分解或高斯消元法pinv 伪逆qr QR分解givens Givens 变换linsolve 求解线性方程lyap Lyapunov 方程hess Hessenberg 矩阵poly 特征多项式schur Schur 分解expm 矩阵指数expm1 矩阵指数的Pade逼近expm2 用泰勒级数求矩阵指数expm3 通过特征值和特征向量求矩阵指数funm 计算一般矩阵函数logm 矩阵对数sqrtm 矩阵平方根6. 特性值与奇异值spec 矩阵特征值gspec 矩阵束特征值bdiag 块矩阵, 广义特征向量eigenmarkov 正则化Markov 特征向量pbig 特征空间投影svd 奇异值分解sva 奇异值分解近似7. 矩阵元素运算cumprod 元素累计积cumsum 元素累计和hist 统计频数直方图max 最大值mean 平均值median中值min 最小值prod 元素积sort 由大到小排序std 标准差sum 元素和trapz 梯形数值积分corr 求相关系数或方差8. 稀疏矩阵运算sparse 稀疏矩阵(只存储非零元素)adj2sp 邻接矩阵转换为稀疏矩阵full 稀疏矩阵转换为全矩阵mtlb_sparse 将SCILAB 稀疏矩阵转换为MATLAB稀疏矩阵格式sp2adj 稀疏矩阵转换为邻接矩阵speye 稀疏矩阵方式单位阵sprand 稀疏矩阵方式随机矩阵spzeros 稀疏矩阵方式全零阵lufact 稀疏矩阵LU 分解lusolve 稀疏矩阵方程求解spchol 稀疏矩阵Cholesky分解9. 输入输出函数diary 生成屏幕文本记录disp 变量显示file 文件管理input 用户键盘输入load 读已存的变量mclose 关闭文件mget 读二进制文件mgetl 按行读ASCII 码文件mgetstr 读字符串中单个字mopen 打开文件mput 写二进制文件mfscanf 读ASCII 码文件print 将变量记录为文件read 读矩阵变量save 存变量为二进制文件strartup 启动文件write 按格式存文件xgetfile 对话方式获取文件路径x_dialog 建立Xwindow参数输入对话框Tk_Getvar 得到Tk 文件变量Tk_EvalFile 执行Tk 文件10. 函数与函数库操作deff 在线定义函数edit 函数编辑器function 打开函数定义functions SCILAB 函数或对象genlib 在给定目录下建立所有文件的函数库get_function_path读函数库的文件存储目录路径getd 读函数库中的全部文件getf 在文件中定义一个函数lib 函数库定义macro SCILAB函数或对象macrovar 输入变量个数newfun 输出变量个数11. 字符串操作code2str 将SCILAB 数码转换为字符串convstr 字母大小转换emptystr 清空字符串grep 搜寻相同字符串part 字符提取str2code 将字符串转换为SCILAB数码string 字符串转换strings SCILAB 对象, 字符串strcat 连接字符strindex 字符串的字符位置搜寻strsubst 字符串中的字符替换12. 日期与时间date 日期getdate 读日期与时间timer CPU时间计时13. 二维图形函数plot2d 直角坐标下线性刻度曲线champ 2 维向量场champ1 由颜色箭头表示的2维向量场contour2d 等高线图errbar 曲线上增加误差范围框线条grayplot 应用颜色表示的表面xgrid 画坐标网格线histplot 统计频数直方图Matplot 散点图阵列14. 三维图形函数plot3d 三维表面plot3d1 用颜色或灰度表示的三维表面param3d 三维中单曲线param3d1 三维中多曲线contour 三维表面上的等高线图hist3d 三维表示的统计频数直方图geom3d 三维向二维上的投影15. 线条类图形xpoly 单线条或单多边形xpolys 多线条或多各多边形xrpoly 正多边形xsegs 非连接线段xfpoly 单个多边形内填充xfpolys 多个多边形内填充xrect 矩形xfrect 单个矩形内填充xrects 多个矩形内填充xarc 单个弧线段或弧园xarcs 多个弧线段或弧园xfarc 单个弧线段或弧园填充xfarcs 多个弧线段或弧园填充xarrows 多箭头16. 图形注释, 变换xstring 图形中字符xstringb 框内字符xtitle 图形标题xaxis 轴名标注plotframe 图形加框并画坐标网格线isoview 等尺寸比例显示(原图形窗口不改变)square 等尺寸比例显示(原图形窗口改变)xsetech 设置小窗口xchange 转换实数为图形象素坐标值subplot 设置多个子窗口17. 图形颜色及图形文字colormap 应用颜色图getcolor 交互式选择颜色图addcolor 增加新色于颜色图graycolormap 线性灰度图hotcolormap 热色(红到黄色)颜色图xset 图形显示方式设定xget 读当前图形显示方式设定getsymbol 交互式选择符号和尺寸18. 图形文件及图形文字xsave 将图形存储为文件xload 从磁盘中读出图形文件xbasimp 将图形按PS文件打印或存储为文件xs2fig 将图形生成Xfig 格式文件xbasc 取消图形窗及其相关内容xclear 清空图形窗driver 选择图形驱动器xinit 图形驱动器初始化xend 关闭图形xbasr 图形刷新replot 更改显示范围后的图形刷新xdel 关闭图形xname 改变当前图形窗名称19. 控制分析用图形bode 伯德图坐标gainplot 幅值图坐标(伯德图中的幅值图) nyquist 奈奎斯特图m_circle M-圆图chart 尼库拉斯图black Black-图evans 根轨迹图sgrid s 平面图plzr 零-极点图zgrid z 平面图20. 图形应用中的其它指令graphics 图形库指令表xclick 等待鼠标在图形上的点击输入locate 由鼠标点击读入图形中的多点位置坐标xgetmouse 由鼠标点击读入图形中的当前点位置坐标21. 系统与控制abcd 状态空间矩阵cont_mat 可控矩阵csim 线性系统时域响应dsimul 状态空间的离散时域响应feedback 反馈操作符flts 时域响应(离散、采样系统〕frep2tf 基于传递函数的频域响应freq 频域响应g_margin 幅值裕量imrep2ss 基于状态空间的脉冲响应lin 线性化操作lqe Kalman 滤波器lqg LQG补偿器lqr LQ补偿器ltitr 基于状态空间的离散时域响应obscont 基于观测器的控制器observer 观测器obsv_mat 观测矩阵p_margin 相位裕量phasemag 相位与幅值计算ppol 极点配置repfreq 频域响应ricc Riccati 方程rtitr 基于传递函数的离散时域响应sm2ss 系统矩阵到状态空间变换ss2ss 反馈连接的状态空间到状态空间变换ss2tf 状态空间到传递函数变换stabil 稳定性计算tf2ss 传递函数到状态空间变换time_id SISO系统最小方差辨识22. 鲁棒控制augment 被控对象增广操作bstap Hankel 矩阵近似ccontrg H∞控制器dhnorm 离散H∞范数h2norm H2 范数h_cl 闭环矩阵h_inf H∞控制器h_norm H∞范数hankelsv Hankel 矩阵奇异值leqr H∞控制器的LQ增益linf 无穷范数riccati Riccati 矩阵sensi 敏感函数23. 动态系统arma ARMA 模型arma2p 基于AR模型中获得多项式矩阵armac ARMAX 辨识arsimul ARMAX系统仿真noisegen 噪声信号发生器odedi 常微分方程仿真检测prbs_a 伪随机二进制序列发生器reglin 线性拟合24. 系统与控制实例artest Arnold 动态系统bifish 鱼群人口发展的离散时域模型boucle 具有观测器的动态系统相位图chaintest 生物链模型gpech 渔业模型fusee 登陆火箭问题lotest Lorennz 吸引子mine 采矿问题obscontl 可控可观系统portr3d 三维相位图portrait 二维相位图recur 双线性回归方程systems 动态系统tangent 动态系统的线性化tadinit 动态系统的交互初始化25. 非线性工具(优化与仿真〕bvode 边界值问题的常微分方程dasrt 隐式微分方程过零解dassl 代数微分方程datafit 基于测量数据的参数辨识derivative 导数计算fsolve 非线性函数过零解impl 线性微分方程int2d 二维定积分int3d 三维定积分intg 不定积分leastsq 非线性最小二乘法linpro 线性规划lmisolver 线性不等矩阵ode 常微分方程ode_discrete 离散常微分方程ode_root 常微分方程根解odedc 连续/离散常微分方程optim 非线性优化quapro 线性二次型规划semidef 半正定规划26. 多项式计算coeff 多项式系数coffg 多项式矩阵逆degree 多项式阶数denom 分母项derivat 有理矩阵求导determ 矩阵行列式值factors 因式分解hermit Hermit 型horner 多项式计算invr 有理矩阵逆lcm 最小公倍数ldiv 多项式矩阵长除numer 分子项pdiv 多项式矩阵除pol2des 多项式矩阵到表达式变换pol2str 多项式到字符串变换polfact 最小因式residu 余量roots 多项式根simp 多项式化简systmat 系统矩阵27. 信号处理%asn 椭圆积分%k Jacobi 完全椭圆积分%sn Jacobi 椭圆函数analpf 模拟量低通滤波器buttmagButterworth 滤波器响应cepstrum 倒谱计算cheb1mag Chebyshev 一型响应cheb2mag Chebyshev 二型响应chepol Chebyshev 多项式convol 卷积corr 相关, 协方差cspect 谱估计(应用相关法)dft 离散富立叶变换fft 快速富立叶变换filter 滤波器建模fsfirlin FIR滤波器设计hank 协方差矩阵到Hankel矩阵变换hilb Hilbert 变换iir IIR数字滤波器intdec 信号采样率更改kalm Kalman 滤波器更新mese 最大熵谱估计mfft 多维快速富立叶变换mrfit 频率响应拟合phc Markov 过程srkf Kalman 滤波器平方根sskf 稳态Kalman 滤波器system 观测更新wfir 线性相位FIR 滤波器weiener Weiener(维纳)滤波器window 对称窗函数yulewalk 最小二乘滤波器zpbutt Buthererworth 模拟滤波器zpch1 Chebyshev 模拟滤波器28. 音频信号analyze 音频信号频域图auread 读*.au 音频文件auwrite 写*.au 音频文件lin2mu 将线性信号转换为µ率码信号loadwave 取*.wav 音频文件mapsound 音频信号图示mu2lin 将µ率码信号转换为线性信号playsnd 音频信号播放savewave 存*.wav 音频文件wavread 读*.wav 音频文件wavwrite 写*.wav 音频文件29. 语言与数据转换工具ascii 字符串的ASCII码excel2sci 读ASCII 格式的Excel 文件fun2string 将SCILAB 函数生成ASCII 码mfile2sci 将MATLAB 的M 格式文件转换为SCI格式文件mtlb_load 取MATLAB第4版本文件中变量matlb_save 按MATLAB 第 4 版本文件格式存变量pol2tex 将多项式转换为TeX格式sci2for 将SCILAB函数转换为FORTRAN格式文件texprint 按TeX 格式输出SCILAB 对象translatepaths 将子目录下的所有MATLAB 文件转换为SCI文件格式一个公式写成Fortran 语言代码program baiduinteger::I,J,Nreal*8::Cr,Treal*8,dimension(:),all ocatable ::P,XN=3!变量X的个数Cr=5.0d0!常量Cr,自己设定T=4.0d0!常量T,自己设定allocate(P(N),X(N))! =======读入变量X 的值do I=1,Nwrite(*,*)"请输入第",I," 个变量的值:"read(*,*)X(I)enddo! =======读入变量X 的值do I=1,NP(I)=(-4.2d0/Cr**2*X( I)+2.9/Cr)*Twrite(*,*)“第”,I," 个变量X 对应结果:",P(I)enddoend。

(完整版)fortran文件操作

(完整版)fortran文件操作

fortran文件操作From: 《Fortran 95 程序设计》彭国伦1.文件读取的概念:读取:“顺序读取”和“直接读取”。

保存:“文本文件”和“二进制文件”。

二进制文件:读取快,因为保存格式和数据在内存中的保存方法一样,同时也节省空间。

----------------------------------2. 文件的操作:----------------------------------open的使用:使用open命令打开文件之后,就可以对文件来做输入输出。

example:program ex0901impicit noneopen(unit=10, file='hello.txt') ! 打开hello.txt文件, unit指定文件代码,file 指定文件名称。

write(10, *) "hello" !在代码为10的文件中写入hellostopend program ex0901open中有很多参数可以使用,详细如下:OPEN(UNIT=number, FILE='filename', FORM='...', STATUS='...', ACCESS='...', RECL=length, ERR=label, IOSTAT=iostat, BLANK='...', POSITION='...', ACTION=action, PAD='...', DELIM='...')UNIT='number': number必须是一个正整数,它可以使用变量或是常量来赋值。

number最好避开1,2,5,6。

因为2,6是默认的输出位置,也就是屏幕。

1,5则是默认的输入位置,键盘。

FILE='filename':指定要打开的文件名称,文件名要符合系统规定。

fortran绘图

fortran绘图


integer(2) function GETPIXEL[_W]( x, y )



integer(4) function GETPIXELRGB[_W]( x, y )

integer(2) function LINETO[_W]( x, y )


功能:从目前画笔位置到(x,y)间画一条直线。 参数:integer(2) x,y指定画线的终点,返回值如果不为0,代 表函数运行不正常。
7
Fortran95程序设计
第11章 绘


integer(2) function GETCURRENTPOSITION[_W]( t )

功能:查询目前的画笔位置
type(xycoord) t

功能:返回目前画笔的所在位置,使用虚拟坐标时t的类型为 type(wxycoord)
功能:取得(x,y)点的颜色,返回值为INDEX模式的颜色值。 功能:取得(x,y)点的颜色,返回值为RGB模式的颜色值。
2
Fortran95程序设计
第11章 绘

11-2 绘图函数


Visual Fortran的绘图函数大部分是函数,调用后的返 回值大多是用来说明函数是否正常执行。几何绘图函 数通常有两个版本,函数名称最后为「_W」的使用虚 拟坐标,不然就使用窗口坐标。使用虚拟坐标时,都 使用双精度浮点数来传递坐标值。 在dflib.f90定义了自定义数据类型 xycoord来保存窗口 中的一个坐标。

subroutine SETBKCOLORRGB(color)
– –

subroutine SETTEXTPOSITION(row, column, t)

FORTRAN语言图形方式下十字光标定位方法

FORTRAN语言图形方式下十字光标定位方法

FORTRAN语言图形方式下十字光标定位方法一雪酵廖霰Frepeatread(f1.asK:)}aSC—value:ord(asc)Ipasswword—value:ord(password[I])}asc—vaalue::(asc—value)xor(password---value)}_丑sct=ehr(ase--value)Ii:=i/i;ifi=9theni:=1Iif(a{;c—value&lt;$AO)and(nsc—value&gt;$7F)thenread(f1.asc)elsewrite(f2.asK:){untilasc—value=$laIread(f1.asc);write(f2,axc);elsoe(f2);close(f1);end.上述程序编译后生成EXE文件.运行后根据提示输入相应的源文件名和文本文件名,则可获得WPS文件对应的文本文件.此程序未考虑原WPS文件不存在,目标文件重名及目标文件磁盘存储空间不够等问题的处理,读者有兴趣可在上述程序的基础上自行添加.上述程序已在Pc/xT 和286机器上以WPS2.1O版本为例运行通过.上述程序也可作为忘记WPS文件密码时的文件解密来使用F0RTRAN语言图形方式下十字光标定位方法重庆大学计孙王成良1I在用高级语言开发图形应用软件时,有时需要用十字光标定位交互地来绘制某一图形,或选取某一部分图形进行相应处54理.如图形的缩放,移动,复制等.计算机视频方式分为图形方式和文本方式.在文本方式下屏幕的分辨率以字符为单位.光标可设置成可见的;而在图形方式下,屏幕的分辨率以象素为单位.光标是不可见的.如何在图形方式下实现十字光标的定位,我们结合用MS—FoRTRAN5.0语言所编制的一个完整源程序DRAW.FOR 来加以讨论.十字光标的移动可通过按”一”,”一, “十”{“等键来实现,每按一下上述键,十字光标就沿箭头所指方向移动1个象素点,再将原十字光标隐去;按回车键就{自取这点的实际位置.原十字光标隐去的过程可以在屏幕上异或写象索的方法来实现. 在画十字光标时.将其颜色值与128进行按位.或”运算.命名其颜色值的最高位为1.调用BIOSINT10H功能就可实现异或写象素点.在同一点以相同颜包写两次就可隐去该点.这样,在(IX,IY)处写一象索点.再分别沿一X,+X.一Y+Y写若干相同个数的象索点就构成十字光标,再在(IX.rY)处重画十字光标就可隐去该十字光标.十字光标的长度由子程序DCROSS中的IENG决定.由于MS—FORTRAN5.0不提供调用软中断的函数,我们用MS一)R—TRAN5.0和MASM5.0接口的方法编制了wPlxEI汇编子程序进行异或写象索点.在FORTRAN中就可直接调用wPIxEI(1x,IY,IC)汇编子程序进行异或写象索点.在FoRTRAN中就可直接调用wPIxEL(IX,IY,IC)汇编子程序.其中Ix.IY为屏幕上任一点的位置.Ic为所给的颜色值(已与128按位作过”或运算). 程序中由于耍判断所按键的ASCII码或扫描码.MS—FORTRAN5.0中无此类函数,我们也是利用它与MASM5.0接口~文期橛昧O实践创新O的方法+用B10sINTl6H功能编制了KBHlT()汇编子程序以实现返回其所按键的ASCII码,若无ASCII码则返回其负的扫描码.为了加快十字光标的移动速度,若每按一次PgUp键或Ins键.十字光标的移动步长将增加4个象索点,直到100为止.若每按一次PgUp键或Del键,十字光标的移动步长将增加4个象索点,直到l为止.本文源程序在VGA640×480图形方式下,可实现在屏幕上任意处交互地绘制一条直线.使用时可将两个汇编子程序分别编译成.OBJ文件,再用LINK将它们与其它.OBJ文件连接成可执行文件.上述方法.虽然是用MS—FOR-TRAN5.0编制的(由于库函数无上述两种功能,增加了编程的困难性),但其方法完全适用于其它高级语言.如用NDP FoRTRAN一386或C或PASCAL语言编程,由于其库函数中台有调用软中断和确定所按键扫描码的函数,编程将更加方便.(源程序,编者略)使SUPER—CCD0S5.1的部分字库驻留扩展内存新疆生产建设兵团搂建华SUPER—CCI)()s的说明书上说,SPIIB.EXE具有搜索汉卡和扩展内存的功能.如果没有汉卡但有扩展内存.则自动将显示字库驻留扩展阿存(地址在lM以上的内存).但许多用户反映,他们使用的SUPER—CCD0S5.0和5.1版本中的SPI.IB.EXE没有这项功能.本人对SPLIB.XE(版本5.1.下同)尾部的927字节进行了分析.发现SPI.IB.EXE确实没有使字库驻留扩展内存的功能,带参数运行也只能使部分或全部显示字库驻留基本内存.本人编写了一个附加程序(清单略),放在SPIIB.EXE之后运行,即可使部分字库驻留扩展内存.驻留区的大小由运行SPI,IBH.c()OM时所带参数的大小确定(十进制,单位KB).本法在AST386SX/20,HT一1X286和AST286上运行通过,效果良好.一,关于SPIIB.EXE的简要分析启动SPLIB.EXE之后,将运行其尼部的一段程序(797字节)这段程序的主~]rf,I要功能是:(1)查找硬盘参数,并填入读宇库程序段的相应位置i(2)顺序查出字库xsIS.LPH各簇的起始扇区号,并存放在内存中{(3)根据所带参数,修改读字库程序段,并将部分或全部显示字库读入基本内存I(4)将本段程序清零,并使扇区记录区,字库区,SPIIB.EXE的主体部分驻留内存.由上述分析不难看出,问题的关键在于:(1)修改读字库程序段i(2)把字库读入扩展内存.本文中的正是用于解决这两个问题的.二,附加程序的结构1.Ol95—02C4是程序的主体.2.0150—0l5F与原字库管理模块SPIIB;EXE中的一部分相同,它被作为比较字符串,用干查找SPLlB.EXE运行后, 内存中读字库程序段所用的代码段.此查找也可防止被重复执行.3.0160--0194是个程序段,被加到原读字库程序段的前部.在 中,这段程序不运行,被当作数据串传送. E017E]和[mTC],Eo179]这三字节为驻留55。

Fortran作图1

Fortran作图1

声明:本文系本人阅读各类文章、论文、论坛贴吧后对fortran可视化问题的一点自我总结,希望和同样学习fortran的同学交流一下,比较浅显,希不吝赐教。

(除第二部分主要是引用外,其他均为原创)一、总论直到现今,fortran仍然是土木、水利类工科同学学习计算机语言的首选,除了因为它传统的超强的计算功能,更因为它是最早的计算机高级编程语言,所以广阔的已经成形的计算资源,如各种计算软件等都是由其编译而来,所以,至少在很长一段时间内,fortran仍将活跃在世上,而不会为C/C++、VB等取代。

有必要提一下fortran的基本知识,这些在我们上课的时候可能都没有涉及。

首先是fortran语言规范与编译器的区别:fortran主要的语言规范有fortran7 7、fortran90以及fortran2003,其中,目前学生学习主要是fortran90规范,因为fortran77实在是太古老了,在其改革到fortran90之后,fortran加入了指针等C/C++中的东西,使得fortran学习、使用起来更为方便,但是这并不是说fortran77就不行了或是怎么的,事实上,众多的使用fortran的研究人员仍然使用着它,譬如说国家地理信息等行业的人员,他甚至可能会对fortran的后续语言规范嗤之以鼻,毕竟这种改变并不能使他的SCI论文增加多少的。

值得一提的是,fortran2003语言规范的出台着实让众多学习fortran的童鞋们为之一振,因为它标志着fortran也迈入了面向对象程序设计语言的行列,不过关于它的介绍还不是很多,我在J.Chapmen的fortran95程序设计一书的最后看到了相关介绍,之所以这样,主要是支持fortran2003语言规范的编译器还没有公司开发出来,所以这是一个pity。

其次,再说一下fortran编译器的方面。

fortran目前使用的主流编译器为compaq visual fortran系列,intel fortran系列,powerstation ,DVF系列等(我们老师给的应该是DVF5.0),其中,compaq公司被intel收购之后,就生产intel fortran系列了,而powerstation系列属于微软的产品,比较经典的是powerstation4.0,它使得利用windows的内置资源制作友好的图形用户界面以及强大的图形处理能力成为现实。

fortran中QuickWin绘图基础

fortran中QuickWin绘图基础

1 QuickW‎in绘图基础‎QuickW‎i n支持以像‎素为基础的图‎形,其图形库包括‎了一套完整的‎图形函数集。

1.QuickW‎in应用程序‎QuickW‎i n图形库提‎供了MSFL‎I B.F90和MS‎F LIB.MOD两个文‎件,其中包括了访‎问所有图形函‎数的说明。

文件MSFL‎I B.F90中包含‎绘图子程序的‎定义及接口,文件MSFL‎I B.MOD中包含‎了图形过程符‎号常量说明以‎及与绘图过程‎相关的结构体‎的定义。

因此,任何使用Qu‎i ckWin‎的程序必须包‎含USEMS‎F LIB语句‎以访问Qui‎c kWin的‎图形库,USEMSF‎L IB语句应‎出现在任何声‎明语句和其他‎模块包含语句‎之前。

在默认情况下‎,QuickW‎in应用程序‎拥有一个框架‎主窗口和一个‎输出子窗口。

在主窗口中,有对子窗口及‎其图形和文本‎实施操作的菜‎单栏,其中,File菜单‎中的Save‎命令可以把绘‎图结果保存成‎*.BMP位图文‎件。

2.QuickW‎in应用程序‎的创建例1 创建显示正弦‎波形的Qui‎c kWin应‎用程序。

操作步骤如下‎:(1)在Micro‎s oft Develo‎p erStu‎d io中单击‎F ile菜单‎下的New菜‎单项,在New对话‎框中选择Pr‎o jectW‎o rkspa‎c e,单击OK按钮‎。

(2)在New Projec‎t Worksp‎ace对话框‎中,选择Quic‎k WinAp‎p licat‎i on,将工程名称设‎置为My_w‎i n,单击Crea‎t e按钮。

(3)在Micro‎s oft Develo‎p erStu‎d io中单击‎F ile菜单‎下的New菜‎单项,在New对话‎框中选择Te‎x tFile‎,单击OK按钮‎,在编辑区输入‎以下源程序:USE MSFLIB‎PARAME‎T ER(PI=3.141593‎)TYPE(QWINFO‎) winfoTYPE(WXYCOO‎R D) xyINTEGE‎R(2) result‎REAL aREAL(8) x,yCHARAC‎T ER C*4! 设置子窗口最‎大化winfo.type = QWIN$MAXresult‎= SETWSI‎Z EQQ(0, w info)result‎= SETWSI‎Z EQQ(QWIN$FRAMEW‎I NDOW, winfo)! 设置子窗口的‎背景色为白色‎result‎= SETBKC‎O LORRG‎B (#FFFFFF‎)CALL CLEARS‎C REEN ($GCLEAR‎S CREEN‎)! 设置绘图的颜‎色为黑色result‎= SETCOL‎O RRGB(#000000‎)! 设置视窗result‎= SETWIN‎D OW(.TRUE., -2*pi-1, 1.5, 2*pi+1, -1.5)! 绘制坐标轴x = 2*pi+0.5CALL MOVETO‎_W(-x, 0D0, XY)result‎= LINETO‎_W(x,0D0) ! 横轴y = 1.2CALL MOVETO‎_W(0D0, y, XY)RESULT‎= LINETO‎_W(0D0,-y) ! 纵轴! 坐标轴刻度RESULT‎=INITIA‎L IZEFO‎N TS()RESULT‎=SETFON‎T('h16w12‎i')DO i = -360, 360, 90x = pi*i/180-0.5CALL MOVETO‎_W(x, 0D0, XY)WRITE(c,"(I4)") iCALL OUTGTE‎X T(c)END DO! 绘制正弦曲线‎DO a = -360, 360, 0.5x = pi*a/180y = SIN(x)result‎=SETPIX‎E L_W(x, y)END DOREAD (*,*) ! 按回车键结束‎END(4)以文件名de‎m o.f90保存源‎程序,然后在Mic‎r osoft‎Develo‎p erStu‎d io中单击‎I nsert‎菜单下的Fi‎l es intoPr‎o ject菜‎单项,将Demo.f90文件加‎入到My_w‎i n工程中;(5)在Micro‎s oft Develo‎p erStu‎d io中分别‎单击Buil‎d菜单下的C‎o mpile‎、Build、Execut‎e菜单项,用以编译、生成并运行M‎y_win 文‎件。

fortran绘图、界面功能简介之一

fortran绘图、界面功能简介之一

fortran绘图、界面功能简介之一source:/s/blog_483ac0ab0100gq8r.ht ml###对于fortran的绘图、界面功能,我仅仅做一个简单的罗列,这样方便大家的讨论:1.利用fortran的扩充函数绘图,下面是一个简单的例子,是上面有人贴出的;Visual Fortran中有提供绘图功能。

Visual Fortran的绘图功能不完全是以扩充函数的类型存在,使用它的绘图功能必须在选择Project类型时,选择Standard Graphics或QuickWin模式。

Visual Fortran的QuickWin 及Standard Graphics模式在简单的绘图使用上会比较方便,它的绘图函数功能比较多样,不过效率会比较差,而且不支持动画功能。

Standard Graphics和QuickWin模式在绘图方面的使用方法完全相同,它们都是调用相同的函数来绘图。

差别在于Standard Graphics只能打开一个窗口来绘图、QuickWin模式则可以打开多个窗口来绘图。

QuickWin模式下可以有菜单及对话窗的功能,Standard Graphics则不行。

Standard Graphics模式的程序代码可以原封不动直接转换到QuickWin模式下使用,但是QuickWin的程序代码并不一定可以直接拿到 Standard Graphics模式下使用。

下面这个程序会在屏幕上画出一条斜线、一个方形及一个椭圆。

编译程序时,请选择Fortran Standard Graphics or QuickWin Application这个模式。

这个程序可以在Standard Graphics或QuickWin模式下使用。

打开好Project后,再把下面的程序加入Project中来编译。

1.! 简单的绘图范例2.! By Perng 1997/9/193.program Plot_Demo4.! 使用Visual Fortran的绘图功能时需要module dflibe DFLIB6.implicit none7. type(xycoord) :: t8. integer :: result9. call MoveTo(10,10,t) ! 把目前绘图的位置移动到坐标(10,10)10. result=LineTo(100,50) ! 从(10,10)到(100,50)间绘一条直线11. ! 画一个左上角为(110,10), 右下角为(150,50)的实心方形12. result=Rectangle( $GFILLINTERIOR, 110,10, 150, 50 )13. ! 画一个可以放入在(10,60)--(150,100)方形当中的空心椭圆14. result=Ellipse($GBORDER, 10, 60, 150, 100)15.end program Plot_Demo使用Standard Graphics模式时,会出现一个绘图窗口来画图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•视窗坐标 :实数坐标系 result = SETWINDOW (finvert, wx1, wy1, wx2, wy2) 其中,finvert为逻辑量,其值为真,则视窗的Y 轴与视口Y轴 相反,否则与视口坐标系相同。wx1、wy1、wx2、wy2均为 双精度实型,(wx1, wy1)和(wx2, wy2)分别定义视窗的左下角 和右上角,视窗原点由(wx1, wy1)和(wx2, wy2)的值所确定。 设置了视窗坐标系,就不再需要进行数据转换工作,可调用 绘图过程在子窗口中直接绘图。
其中(x, y) 为INTEGER(2)型,为视口坐标系中目标像素的坐标;(wx. wy) 为 REAL(8) 型,为视窗坐标系中目标像素的坐标。 3 例12.5 绘制曲线 y sin x 。
USE MSFLIB REAL(8) x, y PARAMETER(pi=3.141593) INTEGER(2) status REAL(8):: DZ = 4.5, XJG = 0.001D0 CALL SETVIEWPORT( 49, 49, 800-50, 600-50) DO x = 0, DZ, XJG ! 画函数曲线 y = sin(x)**3 status=SETPIXELRGB_W(x, y, #FFFFFF) END DO END
mask (1) mask (2) mask (3) mask (4) mask (5) mask (6) mask (7)
#08
#08 #08 #08 #08 #08 #08
五、基本图形函数
•画像素点 result = SETPIXELRGB (x, y, color) result = SETPIXELRGB_W (wx,wy, color)
三、图形坐标系
QuickWin坐标系均为左手坐标系。默认为像素坐标系,坐标值 为整数,从0开始计数,故分辨率为640×480的屏幕如下:
将坐标原点设置在物理坐标点(x,y) : CALL SETVIEWORG (x, y, t) 其中(x, y)为新原点的物理坐标,t为XYCOORD 结构体类型的变量。 TYPE xycoord INTEGER(2) xcoord ! x坐标 INTEGER(2) ycoord ! y坐标 END TYPE xycoord
• 绘制形状 • 绘制直线 result = LINETO (x,y) result = LINETO_ W (wx,wy)
USE MSFLIB INTEGER(2) status TYPE (xycoord) xy status=SETCOLORRGB(#FFFFFF) CALL MOVETO(INT2(80), INT2(50), xy) status = LINETO(INT2(240), INT2(150)) CALL SETLINESTYLE (#FF00) status = LINETO(INT2(240), INT2(50)) READ (*,*) ! 按回车键结束程序 END
六、图形字符操作
1.初始化字型 numfonts = INITIALIZEFONTS( ) 2.设置字型 从已注册的字形集中确定一种字形作 为当前字形。 result = SETFONT( options ) 其中,result为INTEGER(2)型,如果 函数执行成功,返回字型的索引号, 否则返回负整数。当前字形特征(如 字体、字符的高和宽等)由options指 定,其取值及意义如表所示。 取值 ‘t’ ‘fontnam e’ hx wy f p e 意义
•填充样式
填充样式(FillMask)是横线、竖线和斜线等按一定规律重复出现而形 成的图案,是构成填充部分的基本图元。
CALL SETFILLMASK (mask)
其中mask为INTEGER(1)型的有8个元素的一维数组,数组元素中的每 一位2进制代表填充元中的一个像素,值为1表示该像素点填充颜色,值 为0表示该像素点不填充颜色;第n个数组元素对应填充元的第n行。如 左表中所示的填充元为虚线,右表中所示的填充元为细实线。
2.窗口操作
(1) 打开子窗口 OPEN(UNIT = n, FILE = ‘USER’, TITLE = wname, IOFOCUS = status) (2) 激活窗口 result = SETACTIVEQQ(unit) (3) 控制窗口的大小和位置 result = SETWSIZEQQ(unit, winfo) winfo为结构体QWINFO类型。结构体QWINFO包含窗口的位置和大小信 息,它在模块MSFLIB.MOD中的定义为: • QWIN$MIN TYPE QWINFO • INTEGER(2) TYPE ! 窗口类型 QWIN$MAX INTEGER(2) X ! 左上角的X轴坐标 INTEGER(2) Y ! 左上角的Y轴坐标 INTEGER(2) H ! 窗口的高度 INTEGER(2) W ! 窗口的宽度 END TYPE QWINFO
位 元 素 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 值 (十六进制) #18 #18 #00 #18 #18 #00 #18 #18 mask (8) 0 0 0 0 1 0 0 0 #08
• 区域填充 使用当前图形色和填充样式填充一个由特定边界颜色定义 的有界封闭区域 result =FLOODFILLRGB (x, y, color)
result = FLOODFILLRGB_ W (wx, wy, color) 如果起点位于图形内部,则图形内部区域被填充;如果起 点位于图形外部,则背景将被填充。
7
6
5
4
3
21Leabharlann 0位 元 素7 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
3 1 1 1 1 1 1 1
2 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
值 (十六进制)
mask (1) mask (2) mask (3) mask (4) mask (5) mask (6) mask (7) mask (8)
第十二章 FORTRAN图形操作
绘图基础 QuickWin窗口的创建 图形坐标系 图形属性 基本图形函数 图形字符操作
一、QuickWin绘图基础
QuickWin支持以像素为基础的图形,其图形库包括了一 套完整的图形函数集。 1.QuickWin图形库 • MSFLIB.F90:绘图子程序的定义及接口 • MSFLIB.MOD:图形过程符号常量说明以及与绘图过程 相关的结构体的定义 2. QuickWin应用程序的创建
例4 设置绘图窗口为白色,用PRINT语句输出兰色文字,用OUTGTE XT函数输出红色字符。 USE MSFLIB INTEGER(4) RESULT TYPE(XYCOORD) XY RESULT = SETBKCOLORRGB(#FFFFFF) 要使设置的背景色发生作用, 须使用CLEARSCREEN函数 CALL CLEARSCREEN ($GCLEARSCREEN) RESULT = SETTEXTCOLORRGB(#FF0000) 清空目标区域, PRINT *, "This is blue" RESULT = SETCOLORRGB(#0000FF) CALL MOVETO(20,20,XY) CALL OUTGTEXT("This is red") END
•线型 线型(LineStyle)是点、横线和空格等按一定规律重复出现而形成的图 案,是构成直线条的基本图元。 CALL SETLINESTYLE (mask) mask是一个16位二进制数,其中每位对应线型图元的一个像素。若位值 为零,则像素保持当前背景色;若位值为1,则像素被置为当前前景色。 缺省线型模式是#FFFF(实线)。如表所示,#FF00表示长虚线型,#F0F 0表示短虚线型,缺省为实线(#FFFF)。
位 mask # FF00 # F0F0 # FFFF 15 1 1 1 14 1 1 1 13 1 1 1 12 1 1 1 11 1 0 1 10 1 0 1 9 1 0 1 8 1 0 1 7 0 1 1 6 0 1 1 5 0 1 1 4 0 1 1 3 0 0 1 2 0 0 1 1 0 0 1 0 0 0 1
• 绘制矩形
result = RECTANGLE (control, xl, yl, x2, y2) result = RECTANGLE_W(control, wxl, wyl, wx2, wy2) 说明: (1)result为INTEGER (2)型。如果绘图成功,则返回值不为 零;否则返回值为零。 (2)control为填充标志符,为INTEGER(2) 型,其值只有两 个,即: $GBORER——表示用当前图形色和当前线型绘制矩形框。 $GFILLNTEROR——表示用当前图形色和当前填充样式绘制矩 形。
• 绘制椭圆 result = ELLIPSE (control, xl, yl, x2, y2) result = ELLIPSE_W (control, wxl, wyl, wx2, wy2)
(xl, yl)、(wxl, wyl)为视口坐标系中椭圆外接矩形框左上角的坐标 (x2, y2)、( wx2, wy2)为视口坐标系中椭圆外接矩形框右下角的坐标 使外接矩形为正方形即可画圆。
二、QuickWin窗口的创建
1.设置图形模式
RESULT = SETWINDOWCONFIG(WC)
RESULT为LOGICAL型变量,若调用成功,返回值为.TRUE.,否则为.FALSE.。WC为WIN DOWCONFIG结构体类型变量。 TYPE WINDOWCONFIG INTEGER(2) NUMXPIXELS ! X轴的像素个数 INTEGER(2) NUMYPIXELS ! Y轴的像素个数 INTEGER(2) NUMTEXTCOLS ! 最大文本列数 INTEGER(2) NUMTEXTROWS ! 最大文本行数 INTEGER(2) NUMCOLORS ! 颜色索引数 INTEGER(4) FONTSIZE ! 缺省的字体大小。 CHARACTER(80) TITLE ! 窗口标题 …… END TYPE WINDOWCONFIG
相关文档
最新文档