本文整理汇总了C#中Circle.Relate方法的典型用法代码示例。如果您正苦于以下问题:C# Circle.Relate方法的具体用法?C# Circle.Relate怎么用?C# Circle.Relate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Circle
的用法示例。
在下文中一共展示了Circle.Relate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Relate
public SpatialRelation Relate(Circle circle, SpatialContext ctx)
{
SpatialRelation bboxR = bbox.Relate(circle);
if (bboxR == SpatialRelation.WITHIN || bboxR == SpatialRelation.DISJOINT)
return bboxR;
//Test each point to see how many of them are outside of the circle.
//TODO consider instead using geom.apply(CoordinateSequenceFilter) -- maybe faster since avoids Coordinate[] allocation
Coordinate[] coords = geom.Coordinates;
int outside = 0;
int i = 0;
foreach (Coordinate coord in coords)
{
i++;
SpatialRelation sect = circle.Relate(new PointImpl(coord.X, coord.Y, ctx));
if (sect == SpatialRelation.DISJOINT)
outside++;
if (i != outside && outside != 0)//short circuit: partially outside, partially inside
return SpatialRelation.INTERSECTS;
}
if (i == outside)
{
return (Relate(circle.GetCenter()) == SpatialRelation.DISJOINT)
? SpatialRelation.DISJOINT : SpatialRelation.CONTAINS;
}
Debug.Assert(outside == 0);
return SpatialRelation.WITHIN;
}
示例2: RandomPointWithin
private Point RandomPointWithin(Circle c)
{
double d = c.GetRadius() * random.NextDouble();
double angleDEG = 360 * random.NextDouble();
Point p = ctx.GetDistCalc().PointOnBearing(c.GetCenter(), d, angleDEG, ctx);
Assert.Equal(SpatialRelation.CONTAINS, c.Relate(p, ctx));
return p;
}