public CoordenadaEsferica(float x, float y, float z) { acimutal = CommonHelper.GetArgumento(x, z); if (y != 0) { polar = FastMath.Atan(FastMath.Pow((x * x + z * z), 0.5f) / y); } else { polar = FastMath.PI_HALF; } polar = CommonHelper.ClampPositiveRadians(polar, FastMath.PI); }
public static float GetArgumento(float a, float b) { if (a != 0) { int cuadrante = Cuadrante(a, b); float angulo = FastMath.Atan(b / a); if (cuadrante == 2 || cuadrante == 3) { angulo += CommonHelper.PI; } if (cuadrante == 4) { angulo += FastMath.TWO_PI; } return(angulo); } else { return((b >= 0) ? FastMath.PI_HALF : TRES_MEDIO_PI); } }