45 lines
940 B
C#
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;
|
|
}
|
|
} |