Geometry对象2

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

IRing接口为Ring所 实现,它定义了多个处 理环对象的方法。如 IRing:Close方法首先 检测其起点和终点是否 是同一点。如果是,不 做任何处理;否则将添 加一条线段到这个开放 的环对象上,以连接环 的起始点和终止点。 IArea接口获取与面积 有关的信息。
ISegmentCollection pSegments; ILine pLine; IRing pRing; pSegments = new RingClass();
BezierCurve对象
贝塞尔曲线 (BezierCurve)是 由四个控制点定义的, 由一组三次多项式描 述的参数曲线,用于 描述等高线或者河流 等平滑变化的对象。
贝塞尔曲线的 首尾两点分别 与控制点0和控 制点1构成的线 段,控制点2和 控制点3构成的 线段相切。这 四个控制点产 生了一个平滑 曲线。
各种类型的椭圆弧
IEllipticArc接口 使用此接口定义的属性可以得到一个存在椭圆弧的 FromAngle、ToAngle和CentralAngle,使用 GetAxes方法则可以得到椭圆弧对象的长半轴和短半轴 以及其比例。 IEllipicArc::PutAxes 方法可以用于改变一个已经存 在的椭圆弧对象的半轴长度,在这个改变过程中它的起 始点、中心点和终止点还是保持不变。 另外接口也定义了几个布尔属性用于检查椭圆弧的情况: IsCircular:长半轴和短半轴长度相等 IsLine:如果为True,则短半轴为0 IsPoint:如果为True,则 长半轴短半轴都为0
EllipticArc对象
EllipiticArc(椭圆弧)是一个椭圆的一 部分,椭圆是通过一个长轴、一个短轴, 中心点和旋转角值来确定的几何对象。 CircularArc 对象和EllipticArc对象非常 类似,但它们是通过完全不同的方法构 造出来。在使用EllipticArc的过程中, 若使用的方法需要ellipseStd参数,则 有可能改变椭圆弧的坐标系和角度。当 该参数为false时,系统使用的是标准 的笛卡尔坐标系;若为true,这时所有 角度都是相对坐标,同时FromPoint 和ToPoint两点的坐标与CentralPoint 是相对的
IPath是path对象的主 要接口,它定义了设置 一个路径对象的多个方 法。 IPath:Generalizes方 法可以将一个平滑的路 径对象变为几条相连的 线段;IPaຫໍສະໝຸດ Baiduh:Smooth 方法则相反,可以将非 平滑的路径对象平滑化。 IPath:SmoothLocal 方法可以将某个 Segment连接点处平滑 化。
IBezierCurve接口: 该接口定义了用于设置和查询曲线属性的方法。
Path对象
路径是连续Segment对象的集合,除了路径的 第一个和最后一个组成Segment外,每一个片 段的起始点都是前一个片段的终止点,即路径对 象中的Segment不能出现分离的情况。路径可 以是任意数目的Line、CircularArc、 EllipticArc和BezierCurve的组合。 一个或多个路径对象组成一个Polyline对象。
IsCounterClockwise:如果为True,则 CenterAngle为正值 IsMinor:如果为True,则弧的长度小于椭圆的一半 EllipiticArc构造器接口(IConstructEllipticArc): EllipticArc对象实现了IEllipticArc接口,它拥有诸如 Complement、PutCoord、PutCoords、 QuerryCoords、QuerryCoordsByAngle和 QueryCenterPoint等方法,用于查询和设置一个椭 圆弧对象。 IEllipticArc:PutCoords和PutCoordsByAngle方法 都可以设置一个已经定义的椭圆弧的属性,它们使用 不同的参数来表达确定一个唯一椭圆弧对象的目的。 在Geometry中推荐使用后一种方法。
环(Ring)对象
环是一种封闭的路径对象,它的起始点和终止点的坐 标值是一样的,这种对象具有“内部”和“外部”属 性。环是产生Polygon的元素。组成环的Segment对 象是有序的,环对象也实现了IPath接口,环必须是 封闭的路径,因此它具有以下几个关键特征: (1)它包含一系列首尾相连的同方向的Segment对象 (2)它是封闭的,即起始点与终止点是同一点 (3)它不能自相交
口 产 生
的 例 子

//产生构造线段的点������ ������ ������ ������ ������ ������ ������ IPoint pPoint1; IPoint pPoint2; pPoint1 = new PointClass(); pPoint1.PutCoords(100, 20); pPoint2 = new PointClass(); pPoint2.PutCoords(20, 310); IGeometryCollection pPolyline; pPolyline = new PolylineClass(); ISegmentCollection pPath; pPath = new PathClass(); //产生线段对象将其添加到路径对象������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ILine pLine; object Missing1 = Type.Missing; object Missing2 = Type.Missing; pLine = new LineClass(); pLine.PutCoords(pPoint1, pPoint2); pPath.AddSegment(pLine as ISegment,ref Missing, ref Missing2); //将路径对象添加到多义线对象������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������ ������
Polyline和Polygon类实现了 IGeometryCollection接口,它可以用于添 加、删除和改变一个Polyline和Polygon对象 的组成部分。
Polyline对象
Polyline(多义线)对象是相连的路径对象的有序集 合,它可以分别是单个路径、多个不相连的路径和多 个相连路径的集合。
一个有效的Polyline 对象需要满足一下 准则: (1)组成Polyline对象 的Path对象都是有 效的 (2)Path不会重合、相 交或自相交 (3)多个Path对象可以 连接于某一点,也 可以是分离的 (4)长度为0的Path对 象是不被允许的
Polyline对象模型图
IPolyline是Polyline类的主要接口,它定义了两个主要 方法。IPolyline:Reshape 它可以使用一个路径对象给一个存在的Polyline整形。 另一个方法SimplifyNetwork,用于简化网络。 Polyline可以使用IGeometryCollection接口添加路径 对象产生,当使用这个接口的时候,要注意以下情况: (1)每一个路径对象都必须是有效的,或者是对这个对象 使用IPath:Simplify方法后有效 (2)由于Polyline是路径对象的有序集合,因此添加路径 时注意顺序和方向 (3)为了保证Polyline是有效的,可以在产生这个形状后 使用Simplify方法
IGeometryCollection Polyline
Polygon对象
Polygon对象是一个有序环 对象的集合,这些环可以是 一个或者多个。 多边形对象通常可以用于描 述具有面积的多边形离散矢 量对象。
IPolygon接口是 Polygon类主要接口。 ExteriorRingCount 属性可以返回一个多 边形全部外部环的数 目。 InteriorRingCount 返回一个多边形的内 部环数目。
PolyCurve对象
PolyCurve是一个抽 象类,它代表了一个 Polyline或Polygon 对象的边框线。它是 由多个曲线构成的对 象,Polyline的每一 个组成部分都是一个 有效的路径对象; Polygon的每个组成 部分则是环对象。
IPolycurve接口提供了处理这两种对象的一 般方法,如IPolyCurve:SplitAtDistance和 IPolycurve:SplitAtPoint都可以通过指定一 个距离或点的方式添加一个新的顶点到 Polycurve上,以便改变Polycurve的形状。
对路径上的局部点处平滑的举例: IPointCollection pPointColl; pPointColl=pPath as IPointCollection; int dPoint; dPoint=3; pPath.SmoothLocal(dPoint);
一个路径对象的形状可以通过添加新的Segment来改变,这 个过程需要使用ISegmentCollection接口来。该接口被 Path、Ring、Polyline和Polygon实现,这些对象均可 以由一个以上的Segment对象组成。 pLine1.FromPoint = pPoint1; pLine1.ToPoint = pPoint2; pLine2.FromPoint = pPoint2; pLine2.ToPoint = pPoint3; ISegmentCollection pPath; pPath = new PathClass(); pPath.AddSegment(pLinel); pPath.AddSegment(pLine2); IConstructPath方法是Path对象的构造器接口, ConstructRigidStretch方法旋转或缩放一个已存在的路 径对象的形状。可以改变路径上某个顶点或片段的位置。
//使环封闭������ ������
下 面 的 代 码 使 用
Segment 对 象 来 组 成 一 个 环
pRing.Close();
在Geometry中,封闭的几何形体包括Envelope、 Ring和Polygon,封闭的几何形体可以确定其面积, 因此它们都实现了IArea接口。IArea:Centroid可以 返回这些几何形体的重心;IArea:LabelPoint可以返 回这些几何形体的标注点。
//产生Segment对象,然后加入segment������ ������
������
������
������
pLine = new LineClass(); pLine.PutCoords(pPoint1, pPoint2); object Missing = Type.Missing; object val = 1; pSegments.AddSegment(pLine as ISegment, ref Missing, ref val); pLine = new LineClass(); pLine.PutCoords(pPoint2, pPoint3); pSegments.AddSegment(pLine as ISegment, ref Missing, ref val); pRing = pSegments as IRing;
(1)ConstructEnvelope可以通过一 个给定的包络线来产生一个内置的 椭圆对象。 (2)ConstructQuarterEllipse构造 器要求输入起始点和终止点和方向 属性以产生一个椭圆弧。 (3)ConstructTwoPointsEnvelope 方法需要输入四个参数,起始点、 终止点、包络线、以及方向属性。 (4)ConstructUpToFivePoints可以 输入5个点来构造一个椭圆弧,这 五个点分别是起始点、终止点、一 个弧上任意点以及两个椭圆对象上 的附加点。
相关文档
最新文档