坐标系统转换
瑞得信息
<坐标系统转换>
版本 <1.0>
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
修订历史记录
日期 版本 说明 作者 <10日/07月/2001年> <1.0> <需求说明> <李尚鹏>
Confidential Page 2 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
目录
1. 背景 4
1.1 概念: 4
1.2 其它坐标系统: 4
1.2.1 变形1(不改变XY方向,且不改变XY增量方向): 4
1.2.2 变形2(不改变XY方向,改变XY增量方向): 5
1.2.3 变形3(改变XY方向,且不改变XY增量方向): 6
1.2.4 变形4(改变XY方向,改变XY增量方向): 7
1.2.5 变形5(任意旋转XY方向): 8 Confidential Page 3 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
坐标系统转换
1. 背景
1.1 概念:
数学坐标系统:
,Y
O ,X
数学坐标系统如上图所示。我们定义数学坐标的最小单位为一个数学坐标单位。
1.2 其它坐标系统:
1.2.1 变形1(不改变XY方向,且不改变XY增量方向):
,X O ,Y O ,X
,Y ,X O ,Y
第三相限 第二相限 第四相限
变换公式:
数学坐标系统 ,》当前坐标系统: X , MX , DX ; Y , MY + DY
当前坐标系统 ,》数学坐标系统: MX , X , DX ; MY , Y , DY
DX、DY , ,数学坐标原点在当前坐标系统的XY
Confidential Page 4 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
变形2(不改变XY方向,改变XY增量方向): 1.2.2
,Y -Y -X +X
+X -X +Y +Y
+Y +Y +X -X
-X +X -Y -Y
。。。。。
变换公式:
数学坐标系统 ,》当前坐标系统: X , MX * A11 , DX ; Y , MY * A22 , DY
当前坐标系统 ,》数学坐标系统: MX , (X , DX) / A11 ; MY , (Y – DY) / A22
其中: A11 、A22取值为: +1、-1
DX、DY , ,数学坐标原点在当前坐标系统的XY
Confidential Page 5 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
1.2.3 变形3(改变XY方向,且不改变XY增量方向):
+X +X -Y +Y
+Y -Y -X -X
变换公式:
数学坐标系统 ,》当前坐标系统: X , MY * A12 , DX ; Y , MX * A21 , DY
当前坐标系统 ,》数学坐标系统: MY , (X , DX) / A12 ; MX , (Y – DY) / A21
其中: A21 、A12取值为: +1
DX、DY , ,数学坐标原点在当前坐标系统的XY
Confidential Page 6 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
1.2.4 变形4(改变XY方向,改变XY增量方向):
,X -X -Y +Y
+Y -Y +X +X
+X +X +Y -Y
-Y +Y -X -X
。。。。。
变换公式:
数学坐标系统 ,》当前坐标系统: X , MY * A12 , DX ; Y , MX * A21 , DY
当前坐标系统 ,》数学坐标系统: MY , (X , DX) / A12 ; MX , (Y – DY) / A21
其中: A21 、A12取值为: +1、,1
DX、DY , ,数学坐标原点在当前坐标系统的XY
Confidential Page 7 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
1.2.5 变形5(任意旋转XY方向):
,y ,X
变换公式:
数学坐标系统 ,》当前坐标系统:
X , MX * A11 + MY * A12 , DX ;
Y , MX * A21 , MY * A22 + DY
当前坐标系统 ,》数学坐标系统:
MX , (X – DX) * A11 - (Y –DY) * A12 ;
MY , (X – DX) * A21 - (Y –DY) * A22
其中: A11 = COSA A12 = SINA A21 = -SINA A22 = COSA
DX、DY , ,数学坐标原点在当前坐标系统的XY Confidential Page 8 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
2. 不同坐标系转换分析:
数学坐标系 ,,》 任意坐标系 映射公式为:
X , MX * A11 + MY * A12 + DX
Y , MY * A21 + MY * A22 + DY
其中: DX、DY , ,数学坐标原点在当前坐标系统的XY
MX、MY : 数学坐标系上的点坐标
任意坐标系,,》 数学坐标系 映射公式为:
MX , X * A11 + Y * A12 + DX
MY , Y * A21 + Y * A22 + DY
其中: DX、DY , ,任意坐标原点在数学坐标系统的XY
X、Y : 任意坐标系上的点坐标
Confidential Page 9 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
3. 窗口变换公式:
3.1 坐标系定义:
3.1.1 设备坐标系:
输出的坐标系,可以是任意的二维坐标系。
3.1.2 用户坐标系:
用户使用的坐标系,可以是任意的二维坐标系,一般与设备坐标系不一样。
3.1.3 用户、设备坐标系转换:
用户在编辑和显示时,使用的是用户坐标系。但在输出时(屏幕、打印机)使用的是设备
坐标系。这时需要对两个坐标系统进行变换。用户坐标系可以经过平移、旋转、缩放、错切等变换
而与设备坐标系重合。而设备坐标系可经过反向的变换与用户坐标系重合。我们用变换矩形的形式
来
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示这种转换关系:
变换矩阵:
A11 A21 0
A12 A22 0 , TRANSFORM1 × 。。。 × TRANSFORMN
DX DY 1
等价公式:
UX , DX * A11 + DY * A12 + UX
UY , DY * A21 + DY * A22 + UY
DX , UX * A11 + UY * A12 + DX
DY , UY * A21 + UY * A22 + DY
Confidential Page 10 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
3.2 窗视口支持(任意坐标系统):
3.2.1 窗口:
用户坐标系的一个矩形可视区域,只有在此区域内的物体才是可见的。这个矩形区域用用
户坐标描述。
3.2.2 视口:
设备坐标系的一个矩形可视区域,窗口内的所有物体都将显示在这个矩形可视区域内。视
口用设备坐标描述。
3.2.3 窗视口变换:
定义:
(XW0,YW0)是窗口左上角坐标 (XW1,YW1)是窗口右下角坐标
(XV0,YV0)是视口左上角坐标 (XV1,YV1)是视口右下角坐标
(XW, YW)是用户坐标系上一点 (XV,YV)是设备坐标系上一点
(X0, Y0)是指定矩形左上角坐标(X1,Y1)是指定矩形右下角坐标
窗口 ,,》 视口
XV = E11 * (XW – XW0) + E12 * (YW – YW0) + XV0
YV = E21 * (XW – XW0) + E22 * (YW – YW0) + YV0
窗口到视口的变换矩阵:
E11 E21
(XV,YV) ,(XW – XW0,YW-YW0) × E12 E22
XV0 YV0
视口 ,,》 窗口
XW = A11 * (XV – XV0) + A12 * (YV – YV0) + XW0
YW = A21 * (XV – XV0) + A22 * (YV – YV0) + YW0
视口到窗口的变换矩阵:
A11 A21
(XW,YW) ,(XV – XV0,YV-YV0) × A12 A22
XW0 YW0 Confidential Page 11 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
3.3 偏移(用户坐标系统):
3.3.1 偏移设备坐标(移动视口原点):
XV0 ,, DX
YV0 ,, DY
XV1 ,, DX
YV1 ,, DY
3.3.2 偏移用户坐标(移动窗口原点):
XW0 ,, UX
YW0 ,, UY
XW1 ,, UX
YW1 ,, UY
3.4 以指定点为中心进行放大、缩小(用户坐标系统):
第一步:改变窗口到视口的变换矩阵:
E11 E21 S 0 0
E12 E22 ×, 0 S 0
XV0 YV0 0 0 1
第二步:改变视口到窗口的变换矩阵:
A11 A21 1/S 0 0
A12 A22 ×, 0 1/S 0
XW0 YW0 0 0 1
第三步:改变窗口左上角和右下角:
X = XW0 Y = YW0
XW0 ,= ( XW1 - XW0 ) / 2 * ( 1 – S ) / S
YW0 ,= ( YW1 – YW0 ) / 2 * ( 1 – S ) / S
XW1 = XW0 , ( XW1 - X ) / S
YW1 = YW0 , ( YW1 – Y ) / S
3.5 对指定矩形进行放大、缩小(用户坐标系统,不改变长宽比例):
第一步:确定缩放比例:
SX = | XW1 – XW0 | / | X1 – X0 |
SY = | YW1 – YW0 | / | Y1 – Y0 |
S = min( SX , SY )
Confidential Page 12 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
第二步:改变窗口到视口的变换矩阵:
E11 E21 S 0 0
E12 E22 ×, 0 S 0
XV0 YV0 0 0 1
变视口到窗口的变换矩阵: 第三步:改
A11 A21 1/S 0 0
A12 A22 ×, 0 1/S 0
XW0 YW0 0 0 1
第四步:改变窗口右下角和左上角:
XW1 = X0 , ( XW1 - XW0 ) / S
YW1 = Y0 , ( YW1 - YW0 ) / S
XW0 = X0
YW0 = Y0
Confidential Page 13 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
4. 坐标系统转换程序说明
4.1 类模板说明:
坐标系统转换程序主要由三个类模板构成:
, 二维图形变换矩阵类模板trans_form_2d
, 二维平面坐标类模板coordinate_2d
, 视窗映射类模板map_vw。
4.1.1 二维图形变换矩阵类模板(trans_form_2d):
该类模板封装了二维图形变换的矩阵运算,提供了矩阵的旋转、平移和缩放变换。该类模板提供了二维图形的变换矩阵。
它带有一个模板参数coord_unit,该模板参数为数值类型,如float、double等。在此基础上预定义了两种常用的类型trans_form_2df,trans_form_2dd,其中trans_form_2df给定的模板参数为float类型,trans_form_2dd给定的模板参数为double类型。
4.1.2 二维平面坐标类模板(coordinate_2d):
该类模板定义了一个坐标系,通过该类可以给定一个坐标系,成员变量axis_p指定坐标系水平轴的方向,axis_v指定坐标系垂直轴的方向,unit指定坐标轴的单位,to_math指定由当前定义的坐标系到数学坐标系的变换矩阵,通过该矩阵可以将当前坐标系中的坐标变换到数学坐标系中,from_math指定由数学坐标系到当前坐标系的变换矩阵。
它带有两个模板参数:trans_form_2d为二维图形变换矩阵类型;vtype为数值类型,其缺省值为double数值类型。
在此基础上派生了以下几种类型的坐标系:
coordinate_2d_millimeter 页面坐标系,以毫米为单位,X向右为正,Y向下为正的坐标系
coordinate_2d_inch 页面坐标系,以英寸为单位,X向右为正,Y向下为正的坐标系
coordinate_2d_pixe 页面坐标系,以像素为单位,X向右为正,Y向下为正的坐标系
coordinate_2d_meter 大地坐标系,以米为单位,X向上为正,Y向右为正的坐标系
另外,用户还可以根据的使用目的在类模板coordinate_2d上派生自己所需要的坐标系。
4.1.3 视窗映射类模板(map_vw):
该类模板封装了视窗间的变换处理,提供了用户坐标到设备坐标的相互转换处理,以及窗口的平移、缩放等处理。
它带有四个模板参数:coordinate_2d_uc和 coordinate_2d_dc都是二维平面坐标类型,通过它们可给定缺省的用户坐标系和设备坐标系;trans_form_2d为二维图形变换矩阵类型;unit_type为数值类型,其缺省值为double数值类型。
Confidential Page 14 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
在此基础上派生了以下几种常用的映射类模板:
map_meter_pixe 大地坐标到页面映射类模板
map_inch_pixe 英寸页面到屏幕映射类模板
map_millimeter_pixe 毫米页面到屏幕映射类模板
另外,用户还可以根据的使用要求在类模板map_vw上派生自己所需要的映射关系。
在这三个类模板中,视窗映射类模板是一个主要的类模板,通过该类模板可以建立用户坐标系与设备坐标系之间的相互关系,使用该类模板要提供二维平面坐标类型参数、二维图形变换矩阵类型参数,该类模板通过这两个模板参数定义了视窗映射类模板中的用户坐标系、设备坐标系以及它们之间的转换矩阵。在使用二维平面坐标类模板时要求提供二维图形变换矩阵类型参数,通过该模板参数定义了数学坐标系和当前坐标系间的相互变换矩阵。
4.2 类模板的使用说明:
4.2.1 使用方法:
第一种方式:
如果采用在视窗映射类模板上派生出的三种类模板时,只要构造一个对象就可建立视窗间的变换关系。若要采用固定缩放比模式,则在构造对象是应给出视口左上角、视口右下角和窗口左上角的坐标;若要采用可变缩放比模式,则在构造对象是应给出视口左上角、视口右下角、窗口左上角和窗口右下角的坐标。
第二种方式:
如果要直接使用视窗映射类模板,则可以按以下步骤进行设置:
1、定义视窗映射模板类对象,根据自己的使用目的选择用户坐标系和设备坐标系。
2、使用set_view和set_win函数设置视口与窗口的大小。如果采用固定缩放比,则只需要给出窗口左上角在用户坐标系中的坐标;如果采用可变缩放比,则应给出窗口左上角和窗口右下角在用户坐标系中的坐标。
、使用3calc_from或one2one函数计算用户坐标和设备坐标之间的相互变换矩阵。如果要采用固定缩放比,则采用one2one计算变换矩阵;否则,采用calc_from计算变换矩阵,然后计算出视窗间的缩放比例,并将该比例乘入到变换矩阵中。
4.2.2 示例代码:
以下两段示例代码说明如何使用它们:
示例一:固定缩放比模式:
//按以下次序包含头文件
#include "GTForm.h" //二维图形变换矩阵类模板头文件
#include "GCoord.h" //二维平面坐标类模板头文件
#include "GMapVW.h" //视窗映射类模板头文件
Confidential Page 15 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
//其他代码
……
……
1.1 固定缩放比程序初始化
map_millimeter_pixe
m_mapvw(vx0, vy0 ,vx1, vy1, wx0 , wy0);
//(vx0,vy0)为视口左上角在设备坐标系中的坐标,
//(vx1,vy1)为视口右下角在设备坐标系中的坐标,
//(wx0,wy0)为窗口左上角在用户坐标系中的坐标。
1.2 平移窗口
m_mapvw.offset_up(dx , dy); //dx,dy是窗口的平移量,以用户坐标为准。 Invalidate();
1.3 将用户坐标系中的点转换到设备坐标系中
m_mapvw.up_to_dp(xw, yw, xv, yv); //(xw,yw)为用户坐标系中的坐标,
//(xv,yv)为设备坐标系中的坐标。
1.4 改变用户坐标系的单位
m_mapvw.change_uc_unit(newUnit); //newUnit为用户坐标系的新单位。 Invalidate();
示例二:可变缩放比模式:
//包含头文件
#include "GTForm.h" //二维图形变换矩阵类模板头文件
#include "GCoord.h" //二维平面坐标类模板头文件
#include "GMapVW.h" //视窗映射类模板头文件
//其他代码
……
……
2.1 可变缩放比程序初始化
map_meter_pixe m_mapvw(vx0, vy0 ,vx1, vy1, wx0 , wy0,wx1,wy1);
//(vx0,vy0)为视口左上角在设备坐标系中的坐标,
//(vx1,vy1)为视口右下角在设备坐标系中的坐标,
//(wx0,wy0)为窗口左上角在用户坐标系中的坐标,
//(wx1,wy1)为窗口右下角在设备坐标系中的坐标。
2.2 缩放窗口
m_mapvw.zoom( s ); //s为缩放倍数
Invalidate();
2.3 以指定矩形进行放大
m_mapvw.zoom_rect( ux0, uy0, ux1, uy1); //(ux0,uy0)为矩形左上角在用户坐标系中的坐标, Confidential Page 16 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
//(ux1,uy1)为矩形右下角在用户坐标系中的坐标。 Invalidate();
2.4 显示整图:
m_mapvw.zoom_full_screen(x0, y0, x1 , y1 ); //(x0,y0)为整图左上角在用户坐标系中的坐标,
//(x1,y1)为整图右下角在用户坐标系中的坐标。 Invalidate();
2.5 将用户坐标系中的点转换到设备坐标系中
m_mapvw.up_to_dp(xw, yw, xv, yv); //(xw,yw)为用户坐标系中的坐标,
//(xv,yv)为设备坐标系中的坐标。
2.6 平移窗口
m_mapvw.offset_up(dx , dy); //dx,dy是窗口的平移量,以用户坐标为准 Invalidate();
2.7 改变用户坐标系的单位:
m_mapvw.change_uc_unit(newUnit); //newUnit为用户坐标系的新单位 Invalidate();
Confidential Page 17 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
4.3 类模板详细说明:
4.3.1 二维图形变换矩阵类模板:
template
class trans_form_2d
封装了二维图形变换的矩阵运算,提供了矩阵的旋转、平移和缩放变换的计算函数。模板参数
coord_unit为数值类型。
, 成员变量
e11 e21
e12 e22 存放变换矩阵中的各元素的值。
edx edy
, 成员函数
trans_form_2d()
功 能: 构造一个单位变换矩阵。
trans_form_2d( const trans_form_2d& s)
功 能: 由变换矩阵s构造一个变换矩阵。
参 数: s [in] 二维变换矩阵
trans_form_2d(coord_unit E11, coord_unit E21, coord_unit E12 ,
coord_unit E22, coord_unit EDX, coord_unit EDY )
功 能: 由给定的6个元素构造变换矩阵。
参 数: E11 E21 E12 E22 EDX EDY [in] 二维变换矩阵中的元素
const trans_form_2d& operator=(const trans_form_2d& mv)
功 能: 变换矩阵赋值运算。
参 数: mv [in] 二维变换矩阵
trans_form_2d operator*(const trans_form_2d& mv) const
功 能: 变换矩阵乘运算。
参 数: mv [in] 二维变换矩阵
void scale(coord_unit sx, coord_unit sy)
功 能: 缩放变换
参 数: sx [in] x方向的缩放倍数
sy [in] y方向的缩放倍数
void offset(coord_unit cx , coord_unit cy)
功 能: 平移变换
参 数: cx [in] x方向的平移量
cy [in] y方向的平移量
Confidential Page 18 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
void rotate(coord_unit sina , coord_unit cosa)
功 能: 旋转变换
参 数: sina [in] 旋转角的正弦值
cosa [in] 旋转角的余弦值
4.3.2 二维平面坐标类模板:
template
class coordinate_2d
模板参数trans_form_2d为二维图形变换矩阵类型,vtype为数值类型。
, 成员变量
axis_p 水平轴定义。
axis_v 垂直轴定义。
from_math 数学坐标系到当前坐标系的变换矩阵。
to_math 当前坐标系到数学坐标系的变换矩阵。
unit 1mm所对应的坐标单位。
, 成员函数
coordinate_2d()
功 能: 构造一个缺省的数学坐标系。
const coordinate_2d& operator=(const coordinate_2d& mv)
功 能: 平面坐标类赋值运算。
参 数: mv [in] 平面坐标类对象
4.3.3 视窗映射类模板:
template
class map_vw
封装了用户坐标和设备坐标之间相互转换的处理,以及窗口、视口的变换处理。模板参数
coordinate_2d_uc、coordinate_2d_dc为二维平面坐标类型,trans_form_2d为二维图形变换矩阵
类型,unit_type为数值类型。
, 成员变量
uc 用户坐标系。
dc 设备坐标系。
uc_to_dc 用户坐标系到设备坐标系的变换矩阵。
dc_to_uc 设备坐标系到用户坐标系的变换矩阵。
xw0, yw0 窗口左上角在用户坐标系中的坐标。
xw1, yw1 窗口右下角在用户坐标系中的坐标。
xv0, yv0 视口左上角在设备坐标系中的坐标。
xv1, yv1 视口右下角在设备坐标系中的坐标。
, 成员函数
Confidential Page 19 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
map_vw()
功 能: 构造器
coordinate_2d& user_coord()
功 能: 返回用户坐标系。
coordinate_2d& device_coord()
功 能: 返回设备坐标系。
const map_vw& operator=(const map_vw& mv)
功 能: 视窗映射类赋值运算。
参 数: mv [in] 视窗映射类对象
void cale_from()
功 能: 计算用户坐标和设备坐标之间的变换矩阵。
void one2one()
功 能: 计算用户坐标和设备坐标间的变换矩阵,用户坐标和设备坐标之间的缩放比为1。
void up_to_dp(unit_type xw, unit_type yw,unit_type& xv, unit_type& yv)
功 能: 用户坐标到设备坐标的变换计算。
参 数: xw , yw [in] 点在用户坐标系中的坐标
xv , yv [out] 点在设备坐标系中的坐标
void dp_to_up(unit_type xv, unit_type yv,unit_type& xw, unit_type& yw)
功 能: 设备坐标到用户坐标的变换计算。
参 数: xv , yv [in] 点在设备坐标系中的坐标
xw , yw [out] 点在用户坐标系中的坐标
unit_type uu_to_du(unit_type lw)
功 能: 逻辑距离到设备距离转换
参 数: lw [in] 用户坐标系中的距离
返回值: 设备坐标中的距离
unit_type du_to_uu(unit_type lv)
功 能: 设备距离到逻辑距离转换
参 数: lv [in] 设备坐标系中的距离
返回值: 用户坐标中的距离
void set_view(unit_type x0, unit_type y0, unit_type x1, unit_type y1)
功 能: 设置视口大小。
参 数: x0 , y0 [in] 视口左上角在设备坐标系中的坐标
x1 , y1 [in] 视口右下角在设备坐标系中的坐标
void set_win(unit_type x0, unit_type y0, unit_type x1, unit_type y1)
功 能: 设置窗口大小。
参 数: x0 , y0 [in] 窗口左上角在用户坐标系中的坐标
x1 , y1 [in] 窗口右下角在用户坐标系中的坐标 Confidential Page 20 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
void offset_up(unit_type dxw, unit_type dyw)
功 能: 移动窗口。
参 数: dxw [in] x方向的偏移量,以窗口坐标系为准
dyw [in] y方向的偏移量,以窗口坐标系为准
void offset_dp(unit_type dxv, unit_type dyv)
能: 移动视口。 功
参 数: dxv [in] x方向的偏移量,以视口坐标系为准
dyv [in] y方向的偏移量,以视口坐标系为准
void zoom(double s)
功 能: 以窗口中心点为准缩放窗口。
参 数: s [in] 缩放倍数
void zoom_rect(unit_type x0, unit_type y0 , unit_type x1, unit_type y1)
功 能: 以指定矩形进行放大。
参 数: x0 , y0 [in] 指定矩形左上角在用户坐标系中的坐标
x1 , y1 [in] 指定矩形右下角在用户坐标系中的坐标
void zoom_full_screen(unit_type x0, unit_type y0, unit_type x1, unit_type y1)
功 能: 显示整图。
参 数: x0 , y0 [in] 整图左上角在用户坐标系中的坐标
x1 , y1 [in] 整图右下角在用户坐标系中的坐标
bool dp_visiable(unit_type x, unit_type y)
功 能: 判断点是否在视口中。
参 数: x , y [in] 设备坐标系中的一个点的坐标
返回值: 若点在落在视口中则返回true,否则返回false
bool up_visiable(unit_type x, unit_type y)
功 能: 判断点是否在窗口中。
参 数: x , y [in] 用户坐标系中的一个点的坐标
返回值: 若点在落在窗口中则返回true,否则返回false
void change_uc_unit(unit_type unit)
功 能: 改变用户坐标系单位。
参 数: unit [in] 用户坐标系的新单位
void change_dc_unit(unit_type unit)
功 能: 改变设备坐标系单位。
参 数: unit [in] 设备坐标系的新单位
4.3.4 在二维平面坐标类模板上派生的类模板
在coordinate_2d基础上派生出以下几种类型的坐标系类模板:
coordinate_2d_millimeter 以毫米为单位,X向右为正,Y向下为正的坐标系 Confidential Page 21 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
coordinate_2d_inch 以英寸为单位,X向右为正,Y向下为正的坐标系
coordinate_2d_pixe 以像素为单位,X向右为正,Y向下为正的坐标系
coordinate_2d_meter 以米为单位,X向上为正,Y向右为正的坐标系
4.3.5 在视窗映射类模板上派生的类模板
在map_vw基础上派生出以下几种类型的映射类模板:
map_meter_pixe 大地坐标到页面映射类模板
map_inch_pixe 英寸页面到屏幕映射类模板
map_millimeter_pixe 毫米页面到屏幕映射类模板
以上三个类模板都带两个模板参数:trans_form_2d为二维图形变换矩阵类型;vtype为数值类型,其缺省值为double数值类型。
它们都提供了两个构造器:
带8个参数的构造器,该构造器是用于构造可变缩放比的映射模板类对象,这8个参数依次为xv0,yv0,xv1,yv1,xw0,yw0,xw1,yw1;
带6个参数的构造器,该构造器是用于构造可变缩放比的映射模板类对象,这6个参数依次为xv0,yv0,xv1,yv1,xw0,yw0。
所使用的参数意义如下:
xv0,yv0 视口左上角在设备坐标系中的坐标
xv1,yv1 视口右下角在设备坐标系中的坐标
xw0,yw0 窗口左上角在用户坐标系中的坐标
xw1,yw1 窗口右下角在用户坐标系中的坐标 Confidential Page 22 ,瑞得信息, 2000
<坐标系统转换> Version: <1.0>
Date: <08/29/2001> 坐标系统转换
<分析文档>
Confidential Page 23 ,瑞得信息, 2000