示例#1
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((CentrePoint.GetHashCode() * 397) ^ Radius.GetHashCode());
     }
 }
示例#2
0
        public override void Transform(Matrix4x4 transformationMatrixIn)
        {
            CentrePoint.Transform(transformationMatrixIn);
            StartPoint.Transform(transformationMatrixIn);

            Radius = GeometricArithmeticModule.ABSMeasure(StartPoint, CentrePoint);
            Update();
        }
示例#3
0
 public override EntityObject GetAsDXFEntity()
 {
     return(new Arc(
                CentrePoint.GetAsDXFVector(),
                Radius,
                StartAngle / Math.PI * 180,
                EndAngle / Math.PI * 180
                ));
 }
示例#4
0
 public override netDxf.Entities.EntityObject GetAsDXFEntity(string layer)
 {
     return(new netDxf.Entities.Circle(
                CentrePoint.GetAsDXFVector(), Radius
                )
     {
         Layer = new netDxf.Tables.Layer(layer)
     });
 }
示例#5
0
 public override EntityObject GetAsDXFEntity(string layer)
 {
     return(new Arc(
                CentrePoint.GetAsDXFVector(),
                Radius,
                StartAngle / Math.PI * 180,
                EndAngle / Math.PI * 180
                )
     {
         Layer = new netDxf.Tables.Layer(layer)
     });
 }
示例#6
0
        public override void WriteXml(XmlWriter writer)
        {
            writer.WriteStartElement(GetType().ToString());
            WriteXmlBaseImpl(writer);

            writer.WriteElementString(nameof(Width), Width.ToString());
            writer.WriteElementString(nameof(Height), Height.ToString());

            CentrePoint.WriteXml(writer);

            writer.WriteEndElement();
        }
示例#7
0
        public override void Transform(Matrix4x4 transformationMatrixIn)
        {
            // transform centre point
            CentrePoint.Transform(transformationMatrixIn);
            StartPoint.Transform(transformationMatrixIn);

            // use updated centre point to calculate major and minor axes
            var res = GeometricArithmeticModule.CalculateMajorMinorAxis(CentrePoint, StartPoint, StartAngle);

            // update details
            MajorAxis = res.MajorAxis;
            MinorAxis = res.MinorAxis;

            Update();
        }
示例#8
0
        public override void WriteXml(XmlWriter writer)
        {
            writer.WriteStartElement(GetType().ToString());
            base.WriteXml(writer);

            writer.WriteAttributeString(nameof(IsClosed), IsClosed.ToString());
            CentrePoint.WriteXml(writer);

            writer.WriteStartElement(nameof(Points));
            foreach (var point in Points)
            {
                point.WriteXml(writer);
            }
            writer.WriteEndElement();
            writer.WriteEndElement();
        }
示例#9
0
        public bool IsPointOnCircle(Point startPoint)
        {
            double distance = CentrePoint.DistanceTo(startPoint);

            return(Math.Abs(Radius - distance) <= SelkieConstants.EpsilonDistance);
        }
示例#10
0
 public override netDxf.Entities.EntityObject GetAsDXFEntity()
 {
     return(new netDxf.Entities.Circle(
                CentrePoint.GetAsDXFVector(), Radius
                ));
 }
示例#11
0
 public void ShuntPosition()
 {
     CentrePoint = CentrePoint.ShuntedBy(-Speed, 0);
 }