#define VECTOR_PRECISION 0.001
#define AIM_ANGLE_TOLERANCE 0.5
#define HEADSHOT_PRIORITY 1.8

struct Vector3 {
    float x, y, z;
};

class AimMath {
public:
    static float CalculateFOV(Vector3 target, Vector3 origin) {
        return atan2(target.y - origin.y, target.x - origin.x) * 180 / M_PI;
    }

    static bool IsInTriggerRange(float angle, float threshold) {
        return (angle > threshold - 45 && angle < threshold + 45);
    }

    static Vector3 PredictPosition(Vector3 velocity, float time) {
        return {velocity.x * time, velocity.y * time, velocity.z * time};
    }

};