private bool CanRotate(double angle)
        {
            double cos = Math.Cos(angle);
            double sin = Math.Sin(angle);

            return(CanChangePosition(p => FiguresUtils.RotatePoint(p - Center, cos, sin) + Center));
        }
示例#2
0
 public Triangle(Point point1, Point point2, Point point3, bool contourOnly = false) : base(contourOnly, point1, point2, point3)
 {
     if (FiguresUtils.OnSameLines(point1, point2, point3))
     {
         throw new ArgumentException("Points can't be on the same straight line.");
     }
 }
示例#3
0
        public override List <Point> GetСontoursPoints()
        {
            IEnumerable <Point> result = new List <Point>();

            for (int i = 0, j = _definingPoints.Count - 1; i < _definingPoints.Count; j = i++)
            {
                result = result.Concat(FiguresUtils.CalculatePointsInLineWithoutEnd(_definingPoints[i], _definingPoints[j]));
            }

            return(result.ToList());
        }
示例#4
0
        public override double GetContoursLength()
        {
            double result = 0;

            for (int i = 0, j = _definingPoints.Count - 1; i < _definingPoints.Count; j = i++)
            {
                result += FiguresUtils.CalculateLineLength(_definingPoints[i], _definingPoints[j]);
            }

            return(result);
        }
示例#5
0
        public virtual void RotateAroundOf(Point rotationsCenter, double angle)
        {
            double cos = Math.Cos(angle);
            double sin = Math.Sin(angle);

            for (int i = 0; i < _definingPoints.Count; i++)
            {
                _definingPoints[i] = FiguresUtils.RotatePoint(_definingPoints[i] - rotationsCenter, cos, sin) + rotationsCenter;
            }

            OnUpdate();
        }