本文整理汇总了C#中Polyline.ReduceSegments方法的典型用法代码示例。如果您正苦于以下问题:C# Polyline.ReduceSegments方法的具体用法?C# Polyline.ReduceSegments怎么用?C# Polyline.ReduceSegments使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Polyline
的用法示例。
在下文中一共展示了Polyline.ReduceSegments方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: simplifyPolylineSDMin
private Polyline simplifyPolylineSDMin(Polyline polyline, double compressionLevel)
{
polyline = (Polyline)polyline.Clone();
polyline.ReduceSegments(PlanimetryAlgorithms.Tolerance);
//are counting vertex weights
List<SDMinVertex> weightedVertices = getWeightedVertices(polyline);
// find the points of intersection
KDTree crossPointIndex = getCrossPointsIndex(polyline);
// building codes
KDTree vertexIndex = buildVertexIndex(weightedVertices, polyline);
List<SDMinVertex> deletedVertices = new List<SDMinVertex>();
int pointCount = polyline.CoordinateCount;
int n = 0;
while (n < weightedVertices.Count &&
(double)(pointCount - deletedVertices.Count) / (double)pointCount > compressionLevel)
{
SDMinVertex currentVertex = weightedVertices[n];
if (currentVertex.Deleted ||
currentVertex.IsCrossSegmentVertex ||
currentVertex.Previous == null ||
currentVertex.Next == null)
{
n++;
continue;
}
if (checkWeightedVertex(polyline, vertexIndex, currentVertex, crossPointIndex))
{
//the top can be removed
currentVertex.Previous.Next = currentVertex.Next;
currentVertex.Next.Previous = currentVertex.Previous;
deletedVertices.Add(currentVertex);
vertexIndex.Remove(currentVertex);
currentVertex.Deleted = true;
n = 0;
}
else
n++;
}
removeVertices(polyline, deletedVertices);
return polyline;
}