public static PointPolar Div(PointPolar pt, double d)
 {
     if (d == 0.0d)
     {
         return(pt);
     }
     return(new PointPolar(pt.R / d, pt.Phi / d));
 }
        public static double Distance(PointPolar p1, PointPolar p2)
        {
            PointD decartPointD1 = new PointD();

            decartPointD1.X = p1.R * Math.Cos(p1.Phi);
            decartPointD1.Y = p1.R * Math.Sin(p1.Phi);
            PointD decartPointD2 = new PointD();

            decartPointD2.X = p2.R * Math.Cos(p2.Phi);
            decartPointD2.Y = p2.R * Math.Sin(p2.Phi);

            double dx = decartPointD2.X - decartPointD1.X;
            double dy = decartPointD2.Y - decartPointD1.Y;

            return(Math.Sqrt(dx * dx + dy * dy));
        }
        public static PointPolar Sum(IEnumerable <PointPolar> source)
        {
            PointPolar sum = new PointPolar(0.0d, 0.0d);

            if (source == null)
            {
                return(sum);
            }
            checked
            {
                foreach (PointPolar v in source)
                {
                    sum += new SizeD(v.R, v.Phi);
                }
            }
            return(sum);
        }
        /// <summary>
        /// Определяет, содержит или нет объект <see cref="T:System.Drawing.PointPolar"/> те же координаты, что и указанный объект <see cref="T:System.Object"/>.
        /// </summary>
        ///
        /// <returns>
        /// Метод возвращает значение true, если <paramref name="obj"/> является <see cref="T:System.Drawing.PointPolar"/> и имеет такие же координаты, как и <see cref="T:System.Drawing.Point"/>.
        /// </returns>
        /// <param name="obj">Политика <see cref="T:System.Object"/> для проверки.</param><filterpriority>1</filterpriority>
        public override bool Equals(object obj)
        {
            if (!(obj is PointPolar))
            {
                return(false);
            }
            PointPolar PointPolar = (PointPolar)obj;

            if (PointPolar.R == (double)this.R && PointPolar.Phi == (double)this.Phi)
            {
                return(PointPolar.GetType().Equals(this.GetType()));
            }
            else
            {
                return(false);
            }
        }
 public static PointPolar operator *(PointPolar pt, double d)
 {
     return(PointPolar.Mult(pt, d));
 }
 public static PointPolar operator /(PointPolar pt, double d)
 {
     return(PointPolar.Div(pt, d));
 }
 public static PointPolar Mult(PointPolar pt, double d)
 {
     return(new PointPolar(pt.R * d, pt.Phi * d));
 }
 public double Distance(PointPolar p2)
 {
     return(Distance(this, p2));
 }
 /// <summary>
 /// Смещает <see cref="T:System.Drawing.PointPolar"/> на отрицательную величину заданного размера.
 /// </summary>
 ///
 /// <returns>
 /// Смещенная точка <see cref="T:System.Drawing.PointPolar"/>.
 /// </returns>
 /// <param name="pt">Класс <see cref="T:System.Drawing.PointPolar"/> для преобразования.</param><param name="sz">Размер <see cref="T:System.Drawing.SizeD"/>, указывающий числа для вычитания из координат <paramref name="pt"/>.</param>
 public static PointPolar Subtract(PointPolar pt, SizeD sz)
 {
     return(new PointPolar(pt.R - sz.Width, pt.Phi - sz.Height));
 }
 /// <summary>
 /// Смещает указанную точку <see cref="T:System.Drawing.PointPolar"/> на заданное значение <see cref="T:System.Drawing.SizeD"/>.
 /// </summary>
 ///
 /// <returns>
 /// Смещенная точка <see cref="T:System.Drawing.PointPolar"/>.
 /// </returns>
 /// <param name="pt">Класс <see cref="T:System.Drawing.PointPolar"/> для преобразования.</param><param name="sz">Объект <see cref="T:System.Drawing.SizeD"/>, определяющий числа, которые нужно добавить к значениям координат <paramref name="pt"/>.</param>
 public static PointPolar Add(PointPolar pt, SizeD sz)
 {
     return(new PointPolar(pt.R + sz.Width, pt.Phi + sz.Height));
 }
 public static PointPolar operator -(PointPolar pt, SizeD sz)
 {
     return(PointPolar.Subtract(pt, sz));
 }
 public static PointPolar operator +(PointPolar pt, SizeD sz)
 {
     return(PointPolar.Add(pt, sz));
 }