赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 手持终端

首页 > 专业技术 > 手持终端 > GeoLib计算几何开源库
GeoLib计算几何开源库
Java编程中经常需要创建和使用一些几何图形,如果使用Java编程比较繁琐复杂,这时可以使用一些开源的几何计算库,比如GeoLib。


1. 基础父类C2DBase:
C2DBase类是GeoLib库中点、线、向量等所有类的父类。此类为抽象类,其方法均为抽象方法,且均在非抽象子类中实现。

方法

含义

public abstract void Move(C2DVector Vector)

根据给定的向量移动C2DBase子类对象

public abstract void RotateToRight(double aAng,C2DPoint Origin)

C2DBase子类对象绕指定点逆时针旋转指定角度,aAng表示旋转角弧度,Origin指定点

public abstract void Grow(double dFactor,C2DPoint Origin)

绕指定点将C2DBase子类对象大小变为原来的dFactor倍,Origin指定点

public abstract void Reflect(C2DPoint Point)

将C2DBase子类对象关于对称点对称,Point指定点

public abstract void Reflect(C2DLine Line)

将C2DBase子类对象关于对称线对称,Line指定线

public abstract double Distance(C2DPoint Point)

获取C2DBase子类对象到指定点Point的最短距离

public abstract void GetBoundingRect(C2DRect Rect)

获取C2DBase子类对象的包围边框,Rect为C2DRect对象,表示获取的矩形边框

2. 点类C2DPoint:

C2DPoint表示二维坐标,其是由两个double型变量组成,支持+=、-=、x=和/=操作符。本类继承于C2DBase类,属性包括x坐标和y坐标:

属性

含义

double x

表示点在坐标系中的x坐标值

double y

表示点在坐标系中的y坐标值

构造器含有无参构造器、含参构造器等:

构造器

含义

public C2DPoint()

创建C2DPoint类对象

public C2DPoint(C2DPoint Other)

创建C2DPoint类对象,Other参数表示另一个C2DPoint对象

public C2DPoint(C2DVectort Vector)

创建C2DPoint类对象,Vector参数表示向量对象

public C2DPoint(double dx,double dy)

创建C2DPoint类对象,dx/dy参数为C2DPoint类对象的x/y值

C2DPoint常用方法有:

方法

含义

public void Set(double dx,double dy)

设定x、y值,dx/dy参数为C2DPoint类对象的x/y值

public void Set(C2DPoint pt)

设置C2DPoint类,参数pt表示另一个C2DPoint对象

public C2DPoint GetMidPoint(C2DPoint Other)

计算两个点的中点,Other表示另一个C2DPoint对象

public C2DPoint MakeVector(C2DPoint PointTo)

计算两点组成的向量,PointTo表示另一C2DPoint对象

public C2DPoint GetPointTo(C2DVector V1)

获取点与向量运算之后的点,V1表示进行运算的向量

public static C2DPoint Add(C2DPoint P1,C2DPoint P2)

计算两点相加之后的点,P1和P2表示运算的两个点

public static C2DPoint Minus(C2DPoint P1,C2DPoint P2)

计算两点相减之后的点,P1和P2表示运算的两个点

public void Multiply(double dFactor)

点对象的x、y坐标均乘以表示变化倍数的dFactor

public void Divide(double dFactor)

点对象的x、y坐标均除以表示变化倍数的dFactor

public boolean PointEqualTo(C2DPoint Other)

判断两个点是否相同,Other表示另一个C2DPoint对象

public void ReflectY()

将点的x坐标关于y轴对称

public void ReflectX()

将点的y坐标关于x轴对称

3. 向量类C2DVector:

C2DVector类由两个double类型的数组组成,表示二维向量或者二维笛卡尔坐标,支持+=、-=和x=等操作符。该类的属性有:

属性

含义

public double i

表示x方向分量

public double j

表示y方向分量

构造器含有无参构造器、含参构造器等:

构造器

含义

public C2DVector()

创建C2DVectort类对象

public C2DVector(double di,double dj)

创建C2DVector类对象,di/dj参数分别赋值给i/j

public C2DVector(C2DVector Other)

创建C2DVector类对象,Other参数表示另一个C2DVector对象

public C2DVector ( C2DPoint PointFrom, C2DPoint PointTo)

创建C2DVector类对象,PointFrom表示向量起点,PointTo表示向量终点

public C2DVector(C2DPoint Point)

创建C2DVector类对象,Point被赋值给向量对象

C2DVector常用方法有:

方法

含义

public void Set(C2DVector Other)

设置向量,参数Other表示另一个C2DVector对象

public void Reverse()

逆转方向向量,即i=-i,j=-j

public void TurnRight()

将向量顺时针旋转90度

public void TurnRight(double dAng)

将向量顺时针旋转指定度,dAng表示旋转弧度

public void TurnLeft()

将向量逆时针旋转90度

public void TurnLeft(double dAng)

将向量逆时针旋转指定度,dAng表示旋转弧度

public void GetLength()

获取向量长度

public void SetLength(double dDistance)

设置向量长度,dDistance表示指定长度

public void MakeUnit()

向量单位化,即归一化

public static C2DVector Add(C2DVector V1,C2DVector V2)

两个向量进行加法,V1和V2表示两个向量

public static C2DVector Minus(C2DVector V1,C2DVector V2)

两个向量进行减法,V1和V2表示两个向量

public void Multiply(double dFactor)

向量与数值进行乘法,dFactor表示被乘的数值

public double Dot(C2DVector Other)

向量点乘,Other指定另一个向量

public boolean VectorEqualTo(C2DVector Other)

判断两个向量是否相等,Other指定另一个向量

public double AngleFromNorth()

获取向量角弧度,垂直向上为0,顺时针为正

4. 各种线型的父类C2DLineBase:

本类为抽象类,其方法均为抽象方法,并且其方法均在子类中具体实现。常用方法有:

方法

含义

public abstract boolean Crosses(C2DLineBase Other,ArrayList<C2DPoint> IntersectionPts)

判断当前C2DLineBase子类对象与另一个是否相交,并将交点存入 IntersectionPts中

public abstract boolean Crosses(C2DLineBase Other)

判断当前C2DLineBase子类对象与另一个是否相交

public abstract double Distance(C2DPoint TestPoint,C2DPoint ptOnThis)

计算当前C2DLineBase子类对象与指定点之间的最短距离,TestPoint为指定点,ptOnThis表示最近的点

public abstract double Distance(C2DLineBase Other,C2DPoint ptOnThis,C2DPoint ptOnOther)

计算当前C2DLineBase子类对象与另一个之间的最短距离,Other为另一个C2DLineBase对象

public abstract C2DPoint GetPointFrom()

获取C2DLineBase子类对象的起点

public abstract C2DPoint GetPointTo()

获取C2DLineBase子类对象的终点

public abstract double GetLength()

获取C2DLineBase子类对象的长度

public abstract void ReverseDirection()

反转方向线,即将原来的起点作为终点,终点为起点

public abstract void GetSubLines (ArrayList <C2DPoint>PtsOnLine, ArrayList<C2DLineBase> LineSet)

根据PtsOnLine获取其子线

public abstract C2DLineBase CreateCopy()

创建C2DLineBase子类对象的副本

5. 线段类C2DLine:

C2DLine为C2DLineBase抽象类的子类,构造器有:

构造器

含义

public C2DLine()

创建C2DLine类对象

public C2DLine(double dPt1x,double dPt1y,double dPt2x,double dPt2y)

创建C2DLine类对象,dPt1表示起点,dPt2表示终点

public C2DLine ( C2DPoint PointFrom, C2DVector VectorTo)

创建C2DLine类对象,PointFrom表示线段起点,VectorTo表示线段终点的向量

public C2DLine ( C2DPoint PointFrom, C2DPoint PointTo)

创建C2DLine类对象,PointFrom表示线段起点,PointTo表示线段终点

public C2DLine(C2DLine Other)

创建C2DLine类对象,Other表示另一个C2DLine对象

C2DLine的设定方法有:

方法

含义

public void Set(C2DLine Other)

设置向量,参数Other表示另一个C2DLine对象

public void Set( C2DPoint PointFrom, C2DPoint PointTo)

设置线段的起点和终点

public void Set( C2DPoint PointFrom, C2DVector VectorTo)

设置线段的起点和终点矢量

public void SetPointTo(C2DPoint PointTo)

将线段的终点设为PointTo

public void SetPointFrom(C2DPoint PointFrom)

将线段的起点设为PointFrom

除了父类C2DLineBase的方法,C2DLine类的常用方法有:

方法

含义

public boolean IsOnRight(C2DPoint OtherPoint)

判断OtherPoint点是否在线段的右侧

public double DistanceAsRay(C2DPoint TestPoint)

假设当前C2DLine为射线,计算线和指定点之间的最短距离

public double DistanceAsRay(C2DPoint TestPoint, C2DPoint ptOnThis)

假设当前C2DLine为射线,计算线和指定点之间的最短距离,ptOnThis表示最短距离对应的点

public double Distance( C2DPoint TestPoint)

计算线与点之间的最短距离

public void SetLength( double dLength)

将线段长度设置为dLength,线段起点不变

public C2DPoint GetMidPoint()

获取线段的中点

public double GetY(double dx)

假设线无限长,根据dx获取对应的y值

public C2DPoint GetPointFrom()

获取线段的起点

public void Move(C2DVector vector)

根据给定的向量移动线段

public void Grow(double dFactor,C2DPoint Origin)

以Origin为固定点,线段长变为原来的dFactor倍

public void GrowFromCenter(double dFactor)

表示线段从中心开始变化,dFactor表示变化的倍数

public boolean WouldCross(C2DLine Other)

判断当前线段与一条无限长的线是否会相交

public boolean Crosses(C2DLine Other, ArrayList <C2DPoint> IntersectionPts, boolean bOnThis, boolean bOnOther, boolean bAddPtIfFalse)

判断两条线是否相交。Other表示另一线段,交点存储IntersectionPts,bOnThis和bOnOther分别表示交点是否在当前及另一条线上,bAddPtIfFalse用于表示两条线不平行时是否添加交点

public boolean CrossesRay(C2DLine Ray, ArrayList <C2DPoint> IntersectPts)

判断当前线段是否与Ray相交,交点存储IntersectPts

public void GetBoundingRect(C2DRect Rect)

获取边界矩形,Rect为输出的边界矩形

public void RotateToRight(double dAng, C2DPoint Origin)

线段绕指定点逆时针旋转指定角度

public void Reflect(C2DPoint Point)

将线段关于指定点对称

public void Reflect(C2DLine Line)

将线段关于指定线对称

6. 圆弧类C2DArc:

C2DArc是C2DLineBase的子类,属性有:

属性

含义

public double Radius

圆弧半径

public boolean CentreOnRight

判断相关圆的中心是否在线的右侧

public boolean ArcOnRight

判断圆弧是否在线的右侧

protected C2DLine line

被用来定义圆弧启动和终点的直线

C2DArc的构造器:

构造器

含义

public C2DArc()

创建C2DArc类对象

public C2DArc(C2DArc Other)

创建C2DArc类对象,Other表示另一个C2DArc类对象

public C2DArc ( C2DPoint PtFrom, C2DPoint PtTo, double dRadius, boolean bCentreOnRight, boolean bArcOnRight)

创建C2DArc类对象,使用参数起点、终点、半径。bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

public C2DArc(C2DPoint PtFrom, C2DVector Vector, double dRadius, boolean bCentreOnRight, boolean bArcOnRight)

创建C2DArc类对象,使用参数起点、终点向量、半径。bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

public C2DArc(C2DLine ArcLine, double dRadius, boolean, boolean bCentreOnRight, boolean bArcOnRight)

创建C2DArc类对象,ArcLine定义圆弧的起点和终点的直线,dRadius表示圆弧所在圆的半径,bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

C2DArc的设定方法有:

方法

含义

public void Set(C2DArc Other)

设置当前C2DArc对象,Other表示另一个C2DArc对象

public void Set ( C2DPoint PtFrom, C2DPoint PtTo, double dRadius, boolean bCentreOnRight, boolean bArcOnRight)

设置当前C2DArc对象,使用参数起点、终点、半径。bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

public void Set(C2DPoint PtFrom, C2DVector Vector, double dRadius, boolean bCentreOnRight, boolean bArcOnRight)

设置当前C2DArc对象,使用参数起点、终点矢量、半径。bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

public void Set(C2DLine ArcLine, double dRadius, boolean, boolean bCentreOnRight, boolean bArcOnRight)

设置当前C2DArc对象,ArcLine定义圆弧的起点和终点的直线,dRadius表示圆弧所在圆的半径。bCentreOnRight表示圆弧所在圆心是否在直线右侧,bArcOnRight表示圆弧是否在直线右侧

public void Set(C2DLine ArcLine,, C2DPoint ptOnArc)

设置当前C2DArc对象,ArcLine表示定义圆弧起点和终点的直线,ptOnArc表示圆弧边缘上的点

除了父类C2DLineBase的方法,C2DArc类的常用方法有:

方法

含义

public boolean IsValid()

判断半径是否足够长以连接弧的终点

public C2DPoint GetCircleCentre()

获取圆弧对应的圆心

public double GetSegmentAngle()

获取最小的角,单位弧度

public C2DPoint GetPointFrom()

获取圆弧的起点

public C2DPoint GetPointTo()

获取圆弧的终点

public boolean CrossesRay( C2DLine Ray, ArrayList <C2DPoint> IntersectionPts)

判断当前C2DArc对象与指定线是否相交,交点存入IntersectionPts列表中

public C2DPoint GetMidPoint()

获取圆弧的中点

public C2DPoint GetPointOn ( double dFactorFromStart)

获取圆弧上的点,dFactorFromStart用于具体确定圆弧上的某一点

public void Reflect(C2DPoint Point)

将圆弧关于指定点进行对称操作

public void Reflect(C2DLine Line)

将圆弧关于指定线进行对称操作

public void GetBoundingRect(C2DRect Rect)

获取圆弧的矩形边框,Rect为输出的矩形边框

7. 圆形类C2DCircle:

C2DCircle类为C2DBase类的子类,用于圆形对象。属性有:

属性

含义

public double Radius

圆的半径

C2DCircle的构造器:

构造器

含义

public C2DCircle()

创建C2DCircle类对象

public C2DCircle(C2DCircle Other)

创建C2DCircle类对象,Other表示另一个C2DCircle类对象

public C2DCircle ( C2DPoint Point,  double NewRadius)

创建C2DCircle类对象,Point表示圆心,NewRadius表示圆的半径

C2DCircle的设定方法有:

方法

含义

public void Set(C2DCircle Other)

设置当前C2DCircle对象,Other表示另一个C2DCircle对象

public void Set ( C2DPoint Point,  double NewRadius)

设置当前C2DCircle对象,Point表示圆心,NewRadius表示圆的半径

除了父类C2DBase的方法,C2DCircle类的常用方法有:

方法

含义

public boolean Contains(C2DPoint pt)

判断指定点是否包含在圆内

public boolean Crosses( C2DCircle Other, ArrayList <C2DPoint> IntersectionPts)

判断圆是否与指定圆相交,交点存入IntersectionPts列表中

public boolean Crosses( C2DLine Line, ArrayList <C2DPoint> IntersectionPts)

判断圆是否与指定线相交,交点存入IntersectionPts列表中

public boolean CrossesRay( C2DLine Ray, ArrayList <C2DPoint> IntersectionPts)

判断圆是否与指定射线相交,交点存入IntersectionPts列表中

public double Distance( C2DCircle Other, C2DPoint ptOnThis, C2DPoint ptOnOther)

计算圆与另一个圆之间的最短距离,ptOnThis表示当前圆上的点,ptOnOther表示另一个圆上的点

public double Distance( C2DLine Line, C2DPoint ptOnThis, C2DPoint ptOnOther)

计算圆与指定线之间的最短距离,ptOnThis表示当前圆上的点,ptOnOther表示指定线上的点

public double Distance( C2DPoint Point, C2DPoint ptOnThis)

计算圆到指定点的最短距离,ptOnThis表示当前圆上的点

public double GetArea()

获取圆的面积

public C2DPoint GetCentre()

获取圆的圆心

public double GetPerimeter()

获取圆的周长

public boolean IsWithinDistance ( C2DPoint pt, double dRange)

判断指定点到圆心的距离是否小于圆的半径与dRange之和

public boolean SetCircumscribed ( C2DPoint pt1,  C2DPoint pt2,  C2DPoint pt3)

设置外接圆,如果pt1、pt2、pt3三点可以组成三角形返回true,并设置三角形外接圆

public boolean SetCircumscribed ( C2DTriangle Triangle)

设置三角形的外接圆,判断三角形三个点是否共线,共线返回false。返回true时设置三角形外接圆

public void SetInscribed ( C2DPoint pt1,  C2DPoint pt2,  C2DPoint pt3)

设置内切圆,如果pt1、pt2、pt3三点可以组成三角形返回true,并设置三角形内切圆

public void SetInscribed ( C2DTriangle Triangle)

设置三角形的内切圆

8. 三角形类C2DTriangle:

三角形类C2DTriangle是C2DBase类的子类。属性有:

属性

含义

public C2DPoint p1

三角形的一个点

public C2DPoint p2

三角形的一个点

public C2DPoint p3

三角形的一个点

C2DTriangle的构造器:

构造器

含义

public C2DTriangle(C2DPoint pt1, C2DPoint pt2, C2DPoint pt3)

创建C2DTriangle类对象

C2DTriangle的设定方法有:

方法

含义

public void Set(C2DPoint pt1, C2DPoint pt2, C2DPoint pt3)

设置三角形的三个点

除了父类C2DBase的方法,C2DTriangle类的常用方法有:

方法

含义

public double GetArea()

获取三角形的面积

public boolean Collinear()

判断三角形的三个点是否共线,共线返回true

public boolean Contains(C2DPoint pt)

判断指定点是否包含在三角形中

public double Distance(C2DPoint pt, C2DPoint ptOnThis)

计算三角形到指定点的最短距离,ptOnThis表示当获得最短距离时三角形上的点

public double Distance(C2DTriangle Other, C2DPoint ptOnThis, C2DPoint ptOnOther)

计算与另一个三角形之间的最短距离,ptOnThis为当前三角形上的点,ptOnOther为另一三角形上的点

public boolean IsClockwise ()

判断三角形的三个点是否顺时针顺序

public C2DPoint GetCircumCentre()

获取三角形的外心

public C2DPoint GetFermatPoint()

获取三角形的费尔马点,即到三角形的三个顶点的距离之和最短的点

public C2DPoint GetInCentre()

获取三角形的内心

public double GetPerimeter()

获取三角形的周长

public C2DPoint getp1()

获取三角形的第一个点

public C2DPoint getp2()

获取三角形的第二个点

public C2DPoint getp3()

获取三角形的第三个点

9. 无孔多边形:

1)无孔多边形基础类C2DPolyBase:
C2DPolyBase为无孔多边形类的父类,包含基本方法、基本属性及自身构造器。属性为:

属性

含义

protected C2DLineBaseSet Lines

表示基础线条

protected C2DRect BoundingRect

表示包围矩形对象

protected ArrayList<C2DRect> LineRects

表示包围矩形中的各个小矩形对象列表

C2DPolyBase的构造器:

构造器

含义

public C2DPolyBase()

创建C2DPolyBase类对象

public C2DPolyBase(C2DPolyBase Other)

创建C2DPolyBase对象,Other为另一个C2DPolyBase

无孔多边形基础类C2DPolyBase的常用方法:

方法

含义

public void Set(C2DPolyBase Other)

设置当前对象为指定对象

public void Clear()

清空所有物体

public void RotateToRight(double dAng, C2DPoint Origin)

绕指定定点旋转指定的角度

public void Move(C2DVector vector)

以指定方向矢量移动

public void Grow(double dFactor, C2DPoint Origin)

以指定中心点使物体大小变为原来的dFactor倍

public double GetPerimeter()

获取物体的周长

public boolean HasCrossingLines()

判断是否有交叉线

public void GetBoundingRect(C2DRect Rect)

获取物体的包围矩形

public C2DRect GetBoundingRect()

获取物体的包围矩形

public ArrayList<C2DRect> getLineRects ()

获取包围矩形中的各个小矩形对象列表

public boolean IsClosed()

判断物体是否封闭

public void RandomPerturb()

使物体按很小的随机向量移动

public C2DLineBaseSet getLines()

获取基础线条

public void Reflect(C2DPoint Point)

物体关于点对称

public void Reflect(C2DLine Line)

物体关于线对象

public double Distance(C2DPoint pt)

获取指定点到物体的最短距离

public double Distance( C2DLineBase Line)

获取到指定线到物体的最短距离

public double Distance ( C2DPolyBase Other, C2DPoint ptOnThis, C2DPoint ptOnOther)

获取当前物体到指定物体的最短距离,ptOnThis为当前物体上的最近点,ptOnOther为另一物体上的点

public boolean IsWithinDistance(C2DPoint pt, double dRange)

判断指定点到物体的距离是否在指定的范围内

public boolean Contains(C2DPoint pt)

判断物体是否包含指定点

public boolean Contains(C2DLineBase Line)

判断物体是否包含指定线

public boolean Contains(C2DPolyBase other)

判断物体是否包含指定物体

public boolean Contains(C2DRect Rect)

判断物体是否包含指定矩形

public void GetOverlaps(C2DPolyBase Other, ArrayList <C2DHoledPolyBase> Polygons, CGrid grid)

获取物体与指定物体的重叠部分,Polygon为存储重叠部分的列表,grid为CGrid对象

public void GetNonOverlaps(C2DPolyBase Other, ArrayList <C2DHoledPolyBase> Polygons, CGrid grid)

获取物体与指定物体的未重叠部分,Polygon为存储未重叠部分的列表,grid为CGrid对象

public void GetUnion(C2DPolyBase Other, ArrayList <C2DHoledPolyBase> Polygons, CGrid grid)

获取物体与指定物体的合并的部分,Polygon为存储合并部分的列表,grid为CGrid对象

public boolean Overlaps(C2DPolyBase Other)

判断物体与指定物体是否重叠

public boolean Crosses(C2DLineBase Line)

判断直线是否穿过物体

public boolean Crosses(C2DPolyBase Other)

判断物体是否穿过物体

2)无孔多边形类C2DPolygon:
无孔多边形类C2DPolygon是应用广泛的类,其为C2DPolyBase的子类。属性有:

属性

含义

protected C2DPolygon subArea1

表示当前多边形的凸子区域1

protected C2DPolygon subArea2

表示当前多边形的凸子区域2

C2DPolygon的构造器:

构造器

含义

public C2DPolygon()

创建C2DPolygon类对象

public C2DPolygon(C2DPolygon Other)

创建C2DPolygon对象,Other为另一个C2DPolygon

public C2DPolygon(C2DPolyBase Other)

创建C2DPolygon对象,Other为C2DPolyBase对象

public C2DPolygon (ArrayList <C2DPoint> Points, boolean bRecorderIfNeeded)

创建C2DPolygon对象,C2DPoint存储多边形点列表, bRecorderIfNeeded表示是否重排Points中各个点的顺序

C2DPolygon的常用方法有:

方法

含义

public void Set(C2DPolygon Other)

设置当前对象为指定对象

public boolean Create (ArrayList <C2DPoint> Points, boolean bRecorderIfNeeded)

判断是否能创建多边形,C2DPoint存储多边形点列表, bRecorderIfNeeded表示是否重排Points中各个点的顺序

public boolean CreateRegular (C2DPoint Centre, double dDistanceToPoints, int nNumberSides)

判断是否能创建规则多边形,Centre为多边形中心点,dDistanceToPoints为多边形上相邻两点间的距离,nNumberSides为多边形的边数

public boolean CreateConvexHull ( C2DPolygon Other)

判断是否能创建多边形凸包,Other为要创建凸包的多边形对象

public boolean CreateConvexSubAreas()

当前多边形为凸多边形时返回true;否则创建当前凹多边形的凸子区域并返回false

public void ClearConvexSubAreas()

除去当前凹多边形的凸子区域

public boolean IsConvex()

判断当前多边形是否为多边形

public void RotateToRight(double dAng)

以多边形中心点逆时针旋转指定角度

public void Grow(double dFactor)

使物体大小变为原来的dFactor倍

public boolean HasRepeatedPoints()

判断是否有重复点

public boolean IsClockwise()

判断当前多边形的点序列是否按顺时针方向卷绕

public void GetConvexSubAreas ( ArrayList <C2DPolygon> SubAreas)

获取当前多边形的凸子区域,SubAreas为存放凸子区域的列表

public void Avoid(C2DPolygon Other)

避免多边形与指定多边形重叠

public C2DPoint GetCentroid()

获取当前多边形的重心

public double GetArea()

获取当前多边形的面积

public void GetPointsCopy ( ArrayList <C2DPoint> PointCopy)

将当前多边形的各个顶点数据复制到指定的点集列表中,PointCopy为指定点列表,存放顶点数据

public int GetLeftMostPoint()

获取多边形最左边的顶点索引值

public void Smooth()

使多边形平滑

public void GetBoundingCircle(C2DCircle Circle)

获取包围圆

public boolean CanPointsBeJoined(int nStart, int nEnd)

判断在连接多边形时是否产生了交叉线,nStart为起始点索引值,nEnd为最后一个点的索引值

public boolean Reorder ()

判断是否能减少顶点数来使周长缩短

public C2DPolygon getSubArea1()

获取当前多边形的凸子区域1

public C2DPolygon getSubArea2()

获取当前多边形的凸子区域2

10. 有孔多边形:

1)有孔多边形基础类C2DHoledPolyBase:
C2DHoledPolyBase为有孔多边形父类,包含构造器、基本属性和基本方法。属性有:

属性

含义

protected C2DPolyBase Rim

表示多边形基础类对象

protected ArrayList <C2DPolyBase> Holes

表示多边形基础类列表

有孔多边形基础类C2DHoledPolyBase的构造器:

构造器

含义

public C2DHoledPolyBase()

创建C2DHoledPolyBase类对象

public C2DHoledPolyBase ( C2DHoledPolyBase Other)

创建C2DHoledPolyBase对象,Other为另一个C2DHoledPolyBase对象

public C2DHoledPolyBase ( C2DPolyBase Other)

创建C2DHoledPolyBase对象,Other为C2DPolyBase对象

有孔多边形基础类C2DHoledPolyBase的常用方法:

方法

含义

public void Set(C2DHoledPolyBase Other)

设置当前对象为指定对象

public int GetLineCount()

获取该类中所有多边形基础类对象的线条数量

public void Clear()

清空所有多边形基础类对象

public void RotateToRight(double dAng, C2DPoint Origin)

绕指定定点逆时针旋转指定的角度

public void Move(C2DVector vector)

以指定方向矢量移动

public void Grow(double dFactor, C2DPoint Origin)

以指定点使物体大小变为原来的dFactor倍

public double GetPerimeter()

获取该类中所有多边形基础类对象的周长

public boolean HasCrossingLines()

判断是否有交叉线

public void GetBoundingRect(C2DRect Rect)

获取物体的包围矩形

public void RemoveHole(int i)

列表中移除与指定索引值相对应的多边形对象

public void AddHole(C2DPolyBase Poly)

将指定的C2DPolyBase对象添加到Holes列表中

public void SetHole(int i, C2DPolyBase Poly)

在Holes列表的指定索引处插入或替换多边形对象,i指定索引值

public C2DPolyBase GetHole(int i)

获取Holes列表中索引为i的多边形对象

public int getHoleCount()

获取Holes列表的长度

public void setRim(C2DPolyBase rim)

设置多边形基础类对象,rim为C2DPolyBase对象

public C2DPolyBase getRim()

获取多边形基础类对象

public void Reflect(C2DPoint Point)

物体关于点对称

public void Reflect(C2DLine Line)

物体关于线对象

public double Distance(C2DPoint pt)

获取指定点到物体的最短距离

public double Distance( C2DLineBase Line)

获取到指定线到物体的最短距离

public double Distance ( C2DPolyBase Poly, C2DPoint ptOnThis, C2DPoint ptOnOther)

获取当前物体到指定物体的最短距离,ptOnThis为当前物体上的最近点,ptOnOther为另一物体上的点

public boolean IsWithinDistance(C2DPoint pt, double dDist)

判断指定点到物体的距离是否在指定的范围内

public boolean Contains(C2DPoint pt)

判断物体是否包含指定点

public boolean Contains(C2DLineBase Line)

判断物体是否包含指定线

public boolean Contains(C2DPolyBase Polygon)

判断物体是否包含指定物体

public void GetOverlaps ( C2DHoledPolyBase Other, ArrayList <C2DHoledPolyBase> HoledPolys, CGrid grid)

获取物体与指定物体的重叠部分,HoledPolys为存储重叠部分的列表,grid为CGrid对象

public void GetNonOverlaps ( C2DHoledPolyBase Other, ArrayList <C2DHoledPolyBase> HoledPolys, CGrid grid)

获取物体与指定物体的未重叠部分,HoledPolys为存储未重叠部分的列表,grid为CGrid对象

public void GetUnion(C2DHoledPolyBase Other, ArrayList <C2DHoledPolyBase> HoledPolys, CGrid grid)

获取物体与指定物体的合并的部分,HoledPolys为存储合并部分的列表,grid为CGrid对象

public boolean Overlaps(C2DPolyBase Other)

判断物体与指定物体是否重叠

public boolean Crosses(C2DLineBase Line)

判断直线是否穿过物体

public boolean Crosses(C2DPolyBase Other)

判断物体是否穿过物体

2)有孔多边形类C2DHoledPolygon:
C2DHoledPolygon是使用较多的类,是有孔多边形基础类C2DHoledPolyBase的子类,构造器:

构造器

含义

public C2DHoledPolygon()

创建C2DHoledPolygon类对象

public C2DHoledPolygon ( C2DHoledPolygon Other)

创建C2DHoledPolygon对象,Other为另一个C2DHoledPolygon对象

public C2DHoledPolygon ( C2DHoledPolyBase Other)

创建C2DHoledPolygon对象,Other为C2DHoledPolyBase对象

public C2DHoledPolygon ( C2DPolyBase Other)

创建C2DHoledPolygon对象,Other为C2DPolyBase对象

public C2DHoledPolygon ( C2DPolyBase Other)

创建C2DHoledPolygon对象,Other为C2DPolygon对象

C2DHoledPolygon常用方法包括:

方法

含义

public void Set(C2DHoledPolygon Other)

设置当前对象为指定对象

public void RotateToRight(double dAng)

绕中心点逆时针旋转指定的角度

public void Grow(double dFactor)

以中心点使物体大小变为原来的dFactor倍

public C2DPoint GetCentroid()

获取有孔多边形的重心

public double GetArea()

获取有孔多边形的面积

public void SetHole(int i, C2DPolygon Poly)

在Holes列表的指定索引处插入或替换多边形对象,i指定索引值

public void AddHole(C2DPolygon Poly)

将指定的多边形对象添加到Holes列表中

 

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659