コード例 #1
0
ファイル: Class639.cs プロジェクト: 15831944/WW
            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);
            }
コード例 #2
0
ファイル: Class639.cs プロジェクト: 15831944/WW
            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;
                }
            }
コード例 #3
0
ファイル: Class639.cs プロジェクト: 15831944/WW
 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);
     }
 }
コード例 #4
0
ファイル: Class639.cs プロジェクト: 15831944/WW
 private static void smethod_2(Polyline2DE polyline, IVertex2D vertex, IVertex2D nextVertex)
 {
     polyline.Add(new Point2DE(vertex.Position));
 }