internal static Polyline2DE smethod_0( IVertex2DCollection vertices, GraphicsConfig config, bool closed) { int count = vertices.Count; if (count == 0) { return(new Polyline2DE(0)); } IVertex2D vertex = vertices.GetIVertex2D(0); Polyline2DE polyline = new Polyline2DE(count, closed); for (int index = 1; index < count; ++index) { IVertex2D ivertex2D = vertices.GetIVertex2D(index); Class639.Class640.smethod_1(config, polyline, vertex, ivertex2D); vertex = ivertex2D; } if (closed) { Class639.Class640.smethod_1(config, polyline, vertex, vertices.GetIVertex2D(0)); } else { polyline.Add(new Point2DE(vertex.Position)); } return(polyline); }
private static void smethod_3( GraphicsConfig config, Polyline2DE polyline, IVertex2D vertex, IVertex2D nextVertex) { Vector2D vector2D1 = nextVertex.Position - vertex.Position; double length = vector2D1.GetLength(); double num1 = 4.0 * System.Math.Atan(vertex.Bulge); double num2 = length / (2.0 * System.Math.Abs(System.Math.Sin(num1 * 0.5))); Vector2D vector2D2 = vector2D1; vector2D2.Normalize(); double num3 = (double)System.Math.Sign(vertex.Bulge); Vector2D vector2D3 = new Vector2D(-vector2D2.Y, vector2D2.X) * num3; Point2D point2D = (Point2D)(((Vector2D)nextVertex.Position + (Vector2D)vertex.Position) * 0.5) + vector2D3 * System.Math.Cos(num1 * 0.5) * num2; Vector2D vector2D4 = vertex.Position - point2D; double num4 = System.Math.Atan2(vector2D4.Y, vector2D4.X); Vector2D vector2D5 = nextVertex.Position - point2D; double num5 = System.Math.Atan2(vector2D5.Y, vector2D5.X); double num6 = num4; double num7 = num3 * (2.0 * System.Math.PI) / (double)config.NoOfArcLineSegments; while (num5 < num4) { num5 += 2.0 * System.Math.PI; } int num8 = (int)System.Math.Ceiling(vertex.Bulge >= 0.0 ? System.Math.Abs(num5 - num4) / num7 : System.Math.Abs((2.0 * System.Math.PI - (num5 - num4)) / num7)); double num9 = System.Math.Cos(num6); double num10 = System.Math.Sin(num6); Point2D position1 = point2D + new Vector2D(num9 * num2, num10 * num2); polyline.Add(new Point2DE(position1)); double num11 = num6 + num7; for (int index = 1; index < num8; ++index) { double num12 = System.Math.Cos(num11); double num13 = System.Math.Sin(num11); Point2D position2 = point2D + new Vector2D(num12 * num2, num13 * num2); polyline.Add(new Point2DE(position2) { IsInterpolatedPoint = true }); num11 += num7; } }
private static void smethod_1( GraphicsConfig config, Polyline2DE polyline, IVertex2D vertex, IVertex2D nextVertex) { if (!(vertex.Position != nextVertex.Position)) { return; } if (vertex.Bulge == 0.0) { Class639.Class640.smethod_2(polyline, vertex, nextVertex); } else { Class639.Class640.smethod_3(config, polyline, vertex, nextVertex); } }
private static void smethod_2(Polyline2DE polyline, IVertex2D vertex, IVertex2D nextVertex) { polyline.Add(new Point2DE(vertex.Position)); }