瑞得信息坐标系统转换版本1.0坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page2修订历史记录日期版本说明作者10日/07月/2001年1.0需求说明李尚鹏坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page3目录1.背景41.1概念:41.2其它坐标系统:41.2.1变形1(不改变XY方向,且不改变XY增量方向):41.2.2变形2(不改变XY方向,改变XY增量方向):51.2.3变形3(改变XY方向,且不改变XY增量方向):61.2.4变形4(改变XY方向,改变XY增量方向):71.2.5变形5(任意旋转XY方向):8坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page4坐标系统转换1.背景1.1概念:数学坐标系统:+YO+X数学坐标系统如上图所示。我们定义数学坐标的最小单位为一个数学坐标单位。1.2其它坐标系统:1.2.1变形1(不改变XY方向,且不改变XY增量方向):-XO+YO+X-Y-XO-Y第三相限第二相限第四相限变换公式:数学坐标系统=》当前坐标系统:X=MX+DX;Y=MY+DY当前坐标系统=》数学坐标系统:MX=X-DX;MY=Y-DYDX、DY=-数学坐标原点在当前坐标系统的XY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page51.2.2变形2(不改变XY方向,改变XY增量方向):-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、-1DX、DY=-数学坐标原点在当前坐标系统的XY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page61.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取值为:+1DX、DY=-数学坐标原点在当前坐标系统的XY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page71.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、-1DX、DY=-数学坐标原点在当前坐标系统的XY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page81.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=COSAA12=SINAA21=-SINAA22=COSADX、DY=-数学坐标原点在当前坐标系统的XY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page92.不同坐标系转换分析:数学坐标系==》任意坐标系映射公式为:X=MX*A11+MY*A12+DXY=MY*A21+MY*A22+DY其中:DX、DY=-数学坐标原点在当前坐标系统的XYMX、MY:数学坐标系上的点坐标任意坐标系==》数学坐标系映射公式为:MX=X*A11+Y*A12+DXMY=Y*A21+Y*A22+DY其中:DX、DY=-任意坐标原点在数学坐标系统的XYX、Y:任意坐标系上的点坐标坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page103.窗口变换公式:3.1坐标系定义:3.1.1设备坐标系:输出的坐标系,可以是任意的二维坐标系。3.1.2用户坐标系:用户使用的坐标系,可以是任意的二维坐标系,一般与设备坐标系不一样。3.1.3用户、设备坐标系转换:用户在编辑和显示时,使用的是用户坐标系。但在输出时(屏幕、打印机)使用的是设备坐标系。这时需要对两个坐标系统进行变换。用户坐标系可以经过平移、旋转、缩放、错切等变换而与设备坐标系重合。而设备坐标系可经过反向的变换与用户坐标系重合。我们用变换矩形的形式来表示这种转换关系:变换矩阵:A11A210A12A220=TRANSFORM1×。。。×TRANSFORMNDXDY1等价公式:UX=DX*A11+DY*A12+UXUY=DY*A21+DY*A22+UYDX=UX*A11+UY*A12+DXDY=UY*A21+UY*A22+DY坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page113.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)+XV0YV=E21*(XW–XW0)+E22*(YW–YW0)+YV0窗口到视口的变换矩阵:E11E21(XV,YV)=(XW–XW0,YW-YW0)×E12E22XV0YV0视口==》窗口XW=A11*(XV–XV0)+A12*(YV–YV0)+XW0YW=A21*(XV–XV0)+A22*(YV–YV0)+YW0视口到窗口的变换矩阵:A11A21(XW,YW)=(XV–XV0,YV-YV0)×A12A22XW0YW0坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page123.3偏移(用户坐标系统):3.3.1偏移设备坐标(移动视口原点):XV0+=DXYV0+=DYXV1+=DXYV1+=DY3.3.2偏移用户坐标(移动窗口原点):XW0+=UXYW0+=UYXW1+=UXYW1+=UY3.4以指定点为中心进行放大、缩小(用户坐标系统):第一步:改变窗口到视口的变换矩阵:E11E21S00E12E22×=0S0XV0YV0001第二步:改变视口到窗口的变换矩阵:A11A211/S00A12A22×=01/S0XW0YW0001第三步:改变窗口左上角和右下角:X=XW0Y=YW0XW0-=(XW1-XW0)/2*(1–S)/SYW0-=(YW1–YW0)/2*(1–S)/SXW1=XW0+(XW1-X)/SYW1=YW0+(YW1–Y)/S3.5对指定矩形进行放大、缩小(用户坐标系统,不改变长宽比例):第一步:确定缩放比例:SX=|XW1–XW0|/|X1–X0|SY=|YW1–YW0|/|Y1–Y0|S=min(SX,SY)坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page13第二步:改变窗口到视口的变换矩阵:E11E21S00E12E22×=0S0XV0YV0001第三步:改变视口到窗口的变换矩阵:A11A211/S00A12A22×=01/S0XW0YW0001第四步:改变窗口右下角和左上角:XW1=X0+(XW1-XW0)/SYW1=Y0+(YW1-YW0)/SXW0=X0YW0=Y0坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档Confidential瑞得信息,2000Page144.坐标系统转换程序说明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数值类型。坐标系统转换Version:1.0坐标系统转换Date:08/29/2001分析文档C