本文整理汇总了C#中Polyline.RemoveStartPoint方法的典型用法代码示例。如果您正苦于以下问题:C# Polyline.RemoveStartPoint方法的具体用法?C# Polyline.RemoveStartPoint怎么用?C# Polyline.RemoveStartPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Polyline
的用法示例。
在下文中一共展示了Polyline.RemoveStartPoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateLoosePolylineOnBisectors
//private Polyline CutCorners(Polyline loosePolyline, Polyline tightPolyline) {
// Polyline ret = new Polyline();
// ret.Closed = true;
// PolylinePoint pp = loosePolyline.StartPoint;
// PolylinePoint tpp=tightPolyline.StartPoint;
// do {
// PolylinePoint furthestVisible = GetFurthestVisible(pp, ref tpp);
// ret.AddPoint(furthestVisible.Point);
// pp = furthestVisible;
// }
// while (pp != loosePolyline.StartPoint);
// System.Diagnostics.Debug.Assert(pp == loosePolyline.StartPoint);
// //distangle ret.StartPoint and ret.LastPoint
// return ret;
//}
//static PolylinePoint GetFurthestVisible(PolylinePoint pp, ref PolylinePoint tpp) {
// Point pivot = pp.Point;
// Point blockingPoint = tpp.NextOnPolyline.Point;
// while (Point.GetTriangleOrientation(pivot, blockingPoint, pp.NextOnPolyline.Point) == TriangleOrientation.Counterclockwise) {
// pp = pp.NextOnPolyline;
// tpp = tpp.NextOnPolyline;
// }
// return pp;
//}
static Polyline CreateLoosePolylineOnBisectors(Polyline tightPolyline, double p) {
var ret = new Polyline();
ret.AddPoint(GetStickingVertexOnBisector(tightPolyline.StartPoint, p));
var blockingPoint = new Point(); //to silence the compiler
var candidate = new Point();
bool justAdded = true;
for (PolylinePoint pp = tightPolyline.StartPoint.Next; pp != null; pp = pp.Next) {
Point currentSticking = GetStickingVertexOnBisector(pp, p);
if (justAdded) {
blockingPoint = pp.Point;
candidate = currentSticking;
justAdded = false;
} else {
if (ret.Count > 1) {
// SugiyamaLayoutSettings.Show(tightPolyline, ret, new LineSegment(ret.StartPoint.Point, currentSticking));
}
//SugiyamaLayoutSettings.Show(new LineSegment(ret.EndPoint.Point, blockingPoint), tightPolyline, new LineSegment(ret.EndPoint.Point, currentSticking));
if (Point.GetTriangleOrientation(ret.EndPoint.Point, blockingPoint, currentSticking) !=
TriangleOrientation.Counterclockwise) {
ret.AddPoint(candidate);
// SugiyamaLayoutSettings.Show(ret, tightPolyline);
justAdded = true;
pp = pp.Prev;
} else {
candidate = currentSticking;
if (Point.GetTriangleOrientation(ret.EndPoint.Point, blockingPoint, pp.Point) ==
TriangleOrientation.Counterclockwise)
blockingPoint = pp.Point;
}
}
}
//process the last point
if (!justAdded) {
if (Point.GetTriangleOrientation(ret.EndPoint.Point, blockingPoint, ret.StartPoint.Point) ==
TriangleOrientation.Counterclockwise) {
//the first point is visible, but now can we cut it
if (Point.GetTriangleOrientation(ret.EndPoint.Point, blockingPoint, ret.StartPoint.Next.Point) ==
TriangleOrientation.Counterclockwise)
ret.RemoveStartPoint();
} else {
ret.AddPoint(candidate);
}
} else {
//trying to cut away the first point
if (
Point.GetTriangleOrientation(ret.EndPoint.Point, tightPolyline.StartPoint.Point,
ret.StartPoint.Next.Point) == TriangleOrientation.Counterclockwise)
ret.RemoveStartPoint();
else { }
}
ret.Closed = true;
// SugiyamaLayoutSettings.Show(tightPolyline, ret);
return ret;
}
示例2: RemoveCloseAndCollinearVerticesInPlace
internal static Polyline RemoveCloseAndCollinearVerticesInPlace(Polyline polyline) {
var epsilon = ApproximateComparer.IntersectionEpsilon * 10;
for (PolylinePoint pp = polyline.StartPoint.Next; pp != null; pp = pp.Next) {
if (ApproximateComparer.Close(pp.Prev.Point, pp.Point, epsilon)) {
if (pp.Next == null) {
polyline.RemoveEndPoint();
} else {
pp.Prev.Next = pp.Next;
pp.Next.Prev = pp.Prev;
}
}
}
if (ApproximateComparer.Close(polyline.Start, polyline.End, epsilon)) {
polyline.RemoveStartPoint();
}
InteractiveEdgeRouter.RemoveCollinearVertices(polyline);
if ((polyline.EndPoint.Prev != null) &&
(Point.GetTriangleOrientation(polyline.EndPoint.Prev.Point, polyline.End, polyline.Start) == TriangleOrientation.Collinear)) {
polyline.RemoveEndPoint();
}
if ((polyline.StartPoint.Next != null) &&
(Point.GetTriangleOrientation(polyline.End, polyline.Start, polyline.StartPoint.Next.Point) == TriangleOrientation.Collinear)) {
polyline.RemoveStartPoint();
}
return polyline;
}