




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、名词解释计算机地图制图:以传统的地图制图原理为基础,以计算机及其外设为工具,采用数据库技术、图形、图像处理技术等,实现地图信息的获取、变换、传输、识别、存储、处理、显示和绘图等的应用科学。(又称自动化制图或计算机辅助制图)顶点匹配:把具有一定距离限度的弧度的端点作为一个节点,其坐标值取多个端点的平均值,然后对节点顺序编号的过程 曲线光滑:根据给定的点列,用插值法或曲线拟合法建立某一符合实际要求的连续、光滑曲线的函数、使给定点满足这个函数关系,并按该函数关系用计算加密点列来完成光滑连接的过程垂距法:按垂距的限差选取符合或超过限差的点。P2点的垂距大于限差,应保留;P3点的垂距小于限差,予以舍弃。共线四点的交比:设A、B、C、D为共线的四点,且A!=B ,C!=B,D!=A,称(A、B、C)与(A、B、D)的比为A、B、C、D的交比,记为(A、B;C、D),即交比也称作二重比A,B;C,D=A,B,CA,B,D=ACCBADDB 共点四线的交比 设L1,L2,L3,L4是通过O点的四条直线,L1!=L2,任取一条不通过0点的直线L,设L与Li的交点为Ai,i=1,2,3,4,如果(A1、A2;A3、A4)有意义,则定义共点四直线L1,L2,L3,L4的交比为:(L1、L2;L3、L4)=(A、B;C、D)共点四线的交比只与线的相互位置关系有关,而与截线的选取无关。灰度值变换 PPT-新灰度值与原灰度值通过“传递函数”变换来描述,分为线性、分段线性和非线性变换。课本-栅格数据中像元的原始灰度值往往需要按某种特定方式进行变换,从而得到较好的图形质量或分析效果。其变换方式通常用“传递函数”来描述。其中原始灰度值与新灰度值之间的关系正如函数中自变量与因变量之间的关系。常用的传递函数包括数学上的线性、分段线性和非线性函数,此外,还包括临界值操作和分割型传递函数。临界值操作是指凡低于(或高于)某一个临界值的灰度值都被置成一种新灰度值(例如0),其余的可置为另一种不同的灰度值(例如1),当灰度值只有0和1是也称图像二值化。分割型传递函数的目标是把一定范围内(如100-200之间)的原始灰度值原封不动的保留,而把其余所有的原始灰度值均变换为0。2、 简答题(1)双边裁剪法及其算法步骤 原理:双边裁剪法的裁剪窗口和被裁剪窗口都可以是任意多边形(凹、凸、带岛);把被裁剪多边形记为A,裁剪多边形记为B,内裁减:A交B,外裁减AB。裁剪的结果是,由A的部分边界和B的部分边界组成新的多边形。如果A和B有交点,则交点成对出现,它们可以分两类:进点为被裁剪多边形的边界由此进入裁剪多边形内,出点为被裁剪多边形的边界由此离开裁剪多边形区域。算法实现步骤为:1、建立被裁剪多边形和裁剪多边形的顶点表2、求被裁剪多边形和裁剪多边形的交点,并将交点按顺序插入两多边形的顶点表中。在两多边形的顶点表中的相同交点间建立双向指针。3、裁剪。对没有跟踪过的交点执行以下操作1)建立裁剪结果多边形的顶点表2)选取任一没有被跟踪过的交点为开始点,将其输出到结果多边形顶点表中3)如果该交点为进点,跟踪被裁剪多边形的边界,如果是出点,则跟踪裁剪多边形的边界4)跟踪多边形边界,每遇到一个多边形顶点,将其输出到结果多边形顶点表中,直至遇到新的交点5)将该交点输出到结果多边形的顶点表中,并通过连接该交点的双向指针改变跟踪方向(如果上一步跟踪的是被裁剪多边形边界,现在改为跟踪裁剪多边形边界;如果上一步跟踪的是裁剪多边形边界,现在改为跟踪被裁剪多边形边界)。6)重复4、5步骤,直至回到起点特殊点的处理规则:与裁剪多边形重合的被裁剪多边形的边不参与求交点对于顶点落在裁剪多边形边上的被裁剪多边形的边,如果落在该裁剪边的内侧,将该顶点算作交点;如果落在该裁剪边的外侧,该顶点不作为交点。(2)双仿射四点交换的内容及特点(线性变换) 仿射变换是比较简单的一次变换,其表达式为x=a1x+a2y+a3,y=b1x+b2y+b3,由不在同一直线上的3个控制点即可求出待定系数。四个以上的点可以做最小二乘法。仿射变换的特点是:直线变换后仍为直线平行变换后仍为平行线,并保持简单的长度比(同一方向长度比不变)不同方向上的长度比发生变化双仿射变换是两个仿射变换,如图:两个仿射变换:三角形A1A2A3-三角形A1A2A3、三角形A1A3A4-三角形A1A3A4特点:每个三角形的仿射变换都只只利用三角形的三个顶点的坐标作为控制点进行变换,因此两个相邻三角形公共边上的点的像是唯一的,即两个三角形变换后拓扑关系不变(3)道格拉斯及光栏原理及其特点光栏法:原理:按预先定义的一个扇形(喇叭口),根据曲线上各点是在扇形内还是扇形外来决定节点是保留还是舍去。设曲线的点列为Pi,i=1,2,3.n,光栏的口径为d(即阈值),按如下步骤确定各点的留、弃:(1) 过P2点做一条垂直于P1P2的直线,在该垂线上取两点A1、A2,使A1P2=A2P2=d/2,这样A1P1A2就构成了一个扇形(2) 若P3点在扇形内,则舍弃P2点,然后过P3点做P1P3的垂线,该垂线与前面定义的扇形交于C1、C2,在该垂线上取B1、B2两点,使B1P3=B2P3=d/2,用两个扇形的交集(C1P1C2和B1P1B2的交集(交角)为新的扇形,来判断下一个点的取舍(3) 检查下一个节点(P4点),若该点在新的扇形(B1P1C2)内,则重复第二步;若该点在新扇形外,则保留P3点,并以P3点为新的起点,重复(1)-(3)步,直到所有点检测完为止。道格拉斯-普克法(分裂法)原理:将一条曲线首尾点虚连成一条直线,求出其余各顶点到该直线的距离 ,选其最大者dmax与给定的限差D相比较,若dmax=D,则与该直线的距离最大的顶点保留,并以此为界,把曲线分为两部分,重复以上步骤方法步骤(递归定义) (1) 在给定的曲线的两端之间连一直线L (2)对曲线上每一点计算它与直线的垂直距离。若所有这些距离均小于某一阈值 0,那么就用直线L来表示原曲线。 (3)若(2)总条件不满足,则以具有最大垂直距离的点Pj为分割点将原曲线分成两段曲线,分别对这两段曲线递归的重复使用分裂法两者特点:1)两者都无条件保留首尾点2)两者都有可能舍弃不该舍弃的点3)道格拉斯法具有最小的线性位移,化简效果最好4)光栏法保留原曲线形状最好(4)二维几何变换矩阵(分为四个子区,子区进行哪些变换,变换矩阵是什么) 二维变换矩阵:从功能上可以把变换为四个子矩阵,其中是对图形进行伸缩、旋转、对称、错切变换,是对图形进行平移变换,对整体图形进行伸缩变换;i是对整个图形作伸缩变换。(1) 平移变换(2) 比例变换(3) 对称变换(4) 旋转变换:(5)错切变换从功能上变换为四个子矩阵,进行伸缩、旋转、对称、错切变换,进行平移变换,对整体图形进行伸缩变换特点:1)平移变换只改变图形的位置,不改变图形的大小和形状 2)旋转变换改变图形的方向,保持图形各部分间的线性关系、角度和长度不变。 3)比例变换改变图形的大小和形状 4)错切变换引起角度和长度的改变,有时会引起图形发生畸变拓扑关系算法及步骤(建立多边形拓扑关系)拓扑关系分为拓扑邻接、关联、和包含拓扑算法步骤:弧段的组织 把弧段按一定顺序存储,如X坐标或Y坐标的顺序,便于检索和查找,然后按顺序编号结点的匹配 把具有一定距离限度的弧度的端点作为一个节点,其坐标值取多个端点的平均值,然后对节点顺序编号的过程 检查多边形是否闭合 检查多边形闭合可以通过判断一条弧的端点是否有与之匹配的端点来进行。 构建拓扑多边形顺时针方向构建多边形所谓顺时针方向构建多边形是指多边形在弧段的右侧。这需要定义弧段的方向。弧段跟踪法建拓扑关系步骤此法是基于弧段的邻接关系,按照一定规则沿弧段跟踪形成各个闭合环,然后采用内点匹配法得到各个换与内点的包含关系,最后根据多边形结构特点,确定环与内点的圈定关系,即是建立多边形面域与弧段的关联关系。首先计算弧段方位角及拓扑邻接的两湖段间的夹角,然后依据最小角法则进行多边形的搜索,接着根据搜索多边形时所建立弧段拓扑邻接表来确定弧段邻接关系及消除多余的多边形,最后利用铅垂线内点法来确定多边形拓扑关系及多边形与内点的拓扑包含关系。具体分为如下几步:1、弧段邻接关系的建立 如果两条弧段具有相同的端点,则定义这两条弧段具有邻接关系。 记录规则:邻接于弧段同一端点的各个邻接弧段按顺时针方向顺序记录;按照数字化 方向,如果邻接弧段是首点邻接,则在其前面冠以正号,否则冠以负号。 2、环的生成;3、建立环与内点的包含关系按环记录中的关键字,可将该环上各弧段坐标数据读出,对所有内点匹配,便能确定环与各内点的包含关系 4、建立环与内点的圈定关系一个多边形可能有一个或多个环,但是一个多边形只有一个内点。所以,环与内点的拓扑关系可能是一对一或多对一的关系。拓扑结构需要确定一对一的点环关系,就是一个内点就要代表一个多边形。所以需要找出环是属于某一个内点所表示的多边形。即是建立多边形与轮廓的关联关系。园内填充晕线Option ExplicitDim R As SingleDim L As SingleDim Px As SingleDim Py As SingleDim XLU As SingleDim YLU As SingleDim XRU As SingleDim YRU As SingleDim XLD As SingleDim YLD As SingleDim XRD As SingleDim YRD As SingleDim XLU1 As SingleDim YLU1 As SingleDim XRU1 As SingleDim YRU1 As SingleDim XLD1 As SingleDim YLD1 As SingleDim XRD1 As SingleDim YRD1 As SingleDim i As IntegerDim n As IntegerDim angle As SingleDim StartCircle As BooleanConst Pi = 3.141592653Private Sub CmdAdd_Click()If Px = 0 ThenMsgBox 请先画圆!Else If TxtA.Text = Or TxtD.Text = Then MsgBox 请输入间距和角度! Else angle = TxtA.Text * Pi / 180 L = Val(TxtD.Text) n = R L For i = 0 To n XLU = Px - Sqr(R * R) - (i * L * i * L) YLU = Py - (i * L) XRU = Px + Sqr(R * R) - (i * L * i * L) YRU = YLU XLD = XLU YLD = Py + (i * L) XRD = XRU YRD = YLD XLU = XLU - Px YLU = YLU - Py XRU = XRU - Px YRU = YLU XLD = XLU YLD = YLD - Py XRD = XRU YRD = YLDXLU1 = XLU * Cos(angle) - YLU * Sin(angle)YLU1 = XLU * Sin(angle) + YLU * Cos(angle)XRU1 = XRU * Cos(angle) - YRU * Sin(angle)YRU1 = XRU * Sin(angle) + YRU * Cos(angle)XLD1 = XLD * Cos(angle) - YLD * Sin(angle)YLD1 = XLD * Sin(angle) + YLD * Cos(angle)XRD1 = XRD * Cos(angle) - YRD * Sin(angle)YRD1 = XRD * Sin(angle) + YRD * Cos(angle) XLU1 = XLU1 + Px YLU1 = YLU1 + Py XRU1 = XRU1 + Px YRU1 = YRU1 + Py XLD1 = XLD1 + Px YLD1 = YLD1 + Py XRD1 = XRD1 + Px YRD1 = YRD1 + Py Me.Line (XLU1, YLU1)-(XRU1, YRU1) Me.Line (XLD1, YLD1)-(XRD1, YRD1) Next End IfEnd IfEnd SubPrivate Sub CmdCircle_Click() StartCircle = TrueEnd SubPrivate Sub CmdClear_Click() Me.Cls Px = 0End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If StartCircle = True Then If TxtR.Text = Then MsgBox 请输入半径! Else R = Val(TxtR.Text) Px = X Py = Y Me.Circle (Px, Py), R End IfEnd IfEnd Sub直线求交点Option ExplicitDim X0 As DoubleDim Y0 As DoubleDim X1 As DoubleDim Y1 As DoubleDim X2 As DoubleDim Y2 As DoubleDim X3 As DoubleDim Y3 As DoubleDim Xs As SingleDim Ys As SingleDim a0, b0, c0 As SingleDim a1, b1, c1 As SingleDim D As SingleDim isFirstLine As BooleanPrivate Sub CmdClear_Click() Me.Cls X0 = 0 X2 = 0 D = -1End SubPrivate Sub CmdSolve_Click()If X0 = 0 Or X2 = 0 ThenMsgBox 请先画两条线!Else a0 = Y0 - Y1 b0 = X1 - X0 c0 = X0 * Y1 - X1 * Y0 a1 = Y2 - Y3 b1 = X3 - X2 c1 = X2 * Y3 - X3 * Y2 D = a0 * b1 - a1 * b0 If D = 0 Then MsgBox 平行 Else Xs = (b0 * c1 - b1 * c0) / D Ys = (a1 * c0 - a0 * c1) / D Me.FillStyle = 0 Me.Circle (Xs, Ys), 50 End IfEnd IfEnd SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If isFirstLine = True Then X0 = X Y0 = Y Else X2 = X Y2 = Y End IfEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If isFirstLine = True Then X1 = X Y1 = Y Me.Line (X0, Y0)-(X1, Y1) isFirstLine = False Else X3 = X Y3 = Y Me.Line (X2, Y2)-(X3, Y3) isFirstLine = True End IfEnd Sub线状符号Option ExplicitDim xi(100) As DoubleDim yi(100) As DoubleDim d12 As DoubleDim d1p As DoubleDim t As IntegerDim d As IntegerDim xp As DoubleDim yp As DoubleDim cosAngle As DoubleDim sinAngle As DoubleDim bBeginDrawLine As BooleanDim n As IntegerDim i As IntegerDim j As IntegerDim xc1 As DoubleDim yc1 As DoubleDim xc2 As DoubleDim yc2 As DoubleDim x1 As SingleDim y1 As SingleDim x2 As SingleDim y2 As SinglePrivate Sub CmdClear_Click() Me.Cls i = 0 bBeginDrawLine = False cmdDrawLine.Caption = 开始画线 Erase xi Erase yiEnd SubPrivate Sub cmdDrawLine_Click() bBeginDrawLine = True cmdDrawLine.Caption = 请画线 d = 500 t = 100End SubPrivate Sub cmdDrawSymbol_Click() d1p = d For i = 0 To n - 1 x1 = xi(i) y1 = yi(i) x2 = xi(i + 1) y2 = yi(i + 1) d12 = Sqr(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) Do While d12 d1p xp = x1 + (x2 - x1) * d1p / d12 yp = y1 + (y2 -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论