[C#] Métodos para conversão de coordenadas XY para Graus e vice-versa

Mostro dois métodos para conversão de coordenadas XY para Graus e Graus para XY, muito útil para a criação de componentes gráficos.

Código Fonte

/// <summary>
/// Calculates a point that is at an angle from the origin (0 is to the right)
/// </summary>
private PointF DegreesToXY(float degrees, float radius, Point origin)
{
   PointF xy = new PointF();
   double radians = degrees * Math.PI / 180.0;

   xy.X = (float)Math.Cos(radians) * radius + origin.X;
   xy.Y = (float)Math.Sin(-radians) * radius + origin.Y;

   return xy;
}

/// <summary>
/// Calculates the angle a point is to the origin (0 is to the right)
/// </summary>
private float XYToDegrees(Point xy, Point origin)
{
   int deltaX = origin.X - xy.X;
   int deltaY = origin.Y - xy.Y;

   double radAngle = Math.Atan2(deltaY, deltaX);
   double degreeAngle = radAngle * 180.0 / Math.PI;

   return (float)(180.0 - degreeAngle);
}

Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[C#] Métodos para conversão de coordenadas XY para Graus e vice-versa
Tags:                                     

Deixe uma resposta

%d blogueiros gostam disto: