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; } }