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)); }
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."); } }
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()); }
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); }
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(); }