2023-12-08 15:20:12 -06:00

45 lines
940 B
C#

using System;
namespace MRBot.Navigation;
internal class Location
{
public double X { get; private set; }
public double Y { get; private set; }
public double Z { get; private set; }
public Location(double x, double y, double z)
{
X = x;
Y = y;
Z = z;
}
public void Set(double x, double y, double z)
{
X = x;
Y = y;
Z = z;
}
public float AngleTo(Location target)
{
double deltaX = X - target.X;
double deltaZ = Z - target.Z;
// Calculate the angle in radians using Math.Atan2
double angleRad = Math.Atan2(deltaX, deltaZ);
// Convert radians to degrees
float angleDegrees = (float)(angleRad * (180.0 / Math.PI));
// Ensure the angle is in the range [0, 360)
if (angleDegrees < 0)
{
angleDegrees += 360;
}
return angleDegrees;
}
}