Exemple #1
0
            public Ellipse(EntityObject entity)
                : base(EdgeType.Ellipse)
            {
                if (entity == null)
                {
                    throw new ArgumentNullException(nameof(entity));
                }

                Entities.Ellipse ellipse = entity as Entities.Ellipse;
                if (ellipse == null)
                {
                    throw new ArgumentException("The entity is not an Ellipse", nameof(entity));
                }

                this.Center = new Vector2(ellipse.Center.X, ellipse.Center.Y);
                double sine   = 0.5 * ellipse.MajorAxis * Math.Sin(ellipse.Rotation * MathHelper.DegToRad);
                double cosine = 0.5 * ellipse.MajorAxis * Math.Cos(ellipse.Rotation * MathHelper.DegToRad);

                this.EndMajorAxis = new Vector2(cosine, sine);
                this.MinorRatio   = ellipse.MinorAxis / ellipse.MajorAxis;
                if (ellipse.IsFullEllipse)
                {
                    this.StartAngle = 0.0;
                    this.EndAngle   = 360.0;
                }
                else
                {
                    this.StartAngle = ellipse.StartAngle;
                    this.EndAngle   = ellipse.EndAngle;
                }
                this.IsCounterclockwise = true;
            }
            /// <summary>
            /// Initializes a new instance of the the <c>HatchBoundaryPath.Ellipse</c> class.
            /// </summary>
            /// <param name="entity"><see cref="EntityObject">Entity</see> that represents the edge.</param>
            public Ellipse(EntityObject entity)
                : base(EdgeType.Ellipse)
            {
                if (entity == null)
                {
                    throw new ArgumentNullException(nameof(entity));
                }

                Entities.Ellipse ellipse = entity as Entities.Ellipse;
                if (ellipse == null)
                {
                    throw new ArgumentException("The entity is not an Ellipse", nameof(entity));
                }

                Matrix3 trans = MathHelper.ArbitraryAxis(entity.Normal).Transpose();

                Vector3 point = trans * ellipse.Center;

                Center = new Vector2(point.X, point.Y);

                double sine   = 0.5 * ellipse.MajorAxis * Math.Sin(ellipse.Rotation * MathHelper.DegToRad);
                double cosine = 0.5 * ellipse.MajorAxis * Math.Cos(ellipse.Rotation * MathHelper.DegToRad);

                EndMajorAxis = new Vector2(cosine, sine);
                MinorRatio   = ellipse.MinorAxis / ellipse.MajorAxis;
                if (ellipse.IsFullEllipse)
                {
                    StartAngle = 0.0;
                    EndAngle   = 360.0;
                }
                else
                {
                    StartAngle = ellipse.StartAngle;
                    EndAngle   = ellipse.EndAngle;
                }
                IsCounterclockwise = true;
            }