{A}介绍
本文旨在提供一个简单的C图形库,为更换旧的基本图形,如HPLOT和HCOLOR命令。此库不提供屏幕上的图形功能,但有能力出口BMP或WMF图形输出。我希望这个图书馆将是一个程序员谁想要使他们自己的图形库,为简单的物理模拟的帮助。背景
我的物理模拟研究,并发现了一个精彩的书,于1984年出版的。笔者在苹果II基本实现了所有的模拟算法,和他HPLOT和HCOLOR用于图形结果。因此,有进一步研究的一些问题。不再使用旧的BASIC语言。如Turbo-C的编译器的C / C不能没有DOSBox中运行。我不想安装Python或GD库。我想要的是一个微小的和便携式的图形库,可以产生物理模拟栅格或矢量图形输出。
Python和Python扩展包是一个伟大的解决方案,但它不符合我的要求。也没有GD库的支持只是栅格图形输出。因此,我决定把自己的简单的图形库,这将是能够导出BMP和WMF图形结果。使用代码
以下基本代码实现了一个简单的运动。此方案图的X(位置)=的dv / dt =-X与T(时间)。'Simple motion with a = dv/dt = -x
10 REM DY2
15 REM X-T GRAPH OF DY1
20 INPUT "SCALE OF T-AXIS ="; K
30 INPUT "SCALE OF X-AXIS ="; L
40 HGR : HCOLOR=3
50 HPLOT 0, 40 TO 0, 140
60 HPLOT 0, 90 TO 279, 90
70 X0 = 1:V0 = 0:DT = 0.1
80 X = X0:V = V0
90 A = -X
100 V = V + A * (DT/2)
110 X = X + V * DT
120 T = T + DT
130 T1 = T * K:X1 = X * L
140 IF T1 > 270 THEN END
150 HPLOT T1, -X1 + 90
160 A = -X
170 V = V + A * DT
180 GOTO 110
]RUN
SCALE OF T-AXIS =5
SCALE OF X-AXIS = 40
下面的C代码给出了相同的图形结果:{C}
{S0的}坐标系
LibTG默认的坐标系是世界坐标系统,其起源是左下角。然而,导出功能逻辑(纸)坐标系统转换成世界坐标系,对BMP为WMF或像素坐标系统。 BMP和WMF的起源是相同的,左上角。 WMF和BMP之间的差异在坐标系统的单位。 WMF的使用英寸单元,内部缇,BMP使用像素单位。你可能会改变使用SetWindowsOrg的WMF的坐标系的原点,但我不会去这里进入该主题。
通常情况下,旧的基本模拟代码使用像素坐标系统(如:HPLOT T1-X1的90)。因此,XXXAPI_SetReverseWorldCoord(1)必须被调用之前,任何绘图功能; XXX可以是BMP或WMF。第一个图像代表了世界坐标系和下一个显示的文件或像素坐标系统。映射LibTG有两个过程:世界的逻辑和逻辑像素。 BMP出口需要,和WMF只需要世界逻辑。逻辑坐标系统是英寸单元的纸张坐标系统的别名。这将花费大量的时间来详细解释WMF格式。你可以在互联网上找到的格式规范,或检查的LibTG的WMF部分出口。
{S}
{S2的}//Example1: BMP export
TG_Point world, logical, pixel;
world.x = x, world.y = y;
World2Length(&&world, &&logical);
Length2Pixel(&&logical, &&pixel);
... putpixel(..., pixel.x, pixel.y, ...);
Example2: WMF export
TG_Point world, logical, pixel;
world.x = x, world.y = y;
World2Length(&&world, &&logical);
... putpixel(..., _to_twip(pixel.x), _to_twip(pixel.y), ...);
现在,让我们出口的WMF的图形。这是非常简单。你只需要以替换用的WMF BMP和删除的最后三个参数的OpenExport(...,xwid,xhgt,1)。{体C3}
您可以通过插入短短三行的一个象征。功能gsave和grestore保护线或从像素更改后绘制的符号图形状态的属性。 gsave和grestore是唯一有效的WMF出口。如果你只想BMP和你不需要,使用gsave和grestore,。{的C4}
{S3的}
{四至}
下面是一些有趣的例子,我将发布的图像。检查源代码,以了解他们的情况。这些图像是在均匀流的一些潜在功能的地块。的主题通常是在流体力学开始处理。第一个是根据均匀流(BMP)的偶极子。二是根据统一的流量(BMP)的旋涡。最后一盘攻击(BMP)的角度来看周围的流动行为。
{五} {六} {七}
我插入到Microsoft PowerPoint BMP和WMF文件:
{S8的}
我做了一个简单的WMF分析仪作为一个文本格式的WMF文件保存在元命令。这是非常有用的,直观的,当我从头开始开发一个WMF库。该计划有三个按钮:WMF的,确定,取消。如果您单击的WMF文件对话框出现。选择一个WMF文件和文本文件具有相同的名称和quot;。txtquot;扩展将自动创建,或单击"确定"按钮。不幸的是,我失去了源代码,但有可执行程序。我不能上传任何可执行程序CodeProject上。如果您需要它,给我发电子邮件。
{S9的}
{S10的}
SMW.TXT