/// <summary> /// Devuelve el ángulo (en grados) entre v1 y v2. /// <para>Ambos vectores se normalizan y quedan modificados.</para> /// <para>Si uno de los vectores o los dos valen cero, devuelve 90º.</para> /// <para>El ángulo devuelto varia entre 0 y 180 grados</para> /// </summary> /// <param name="v1"></param> /// <param name="v2"></param> /// <returns></returns> public static double Angle(Vector3F v1, Vector3F v2) { v1.Normalize(); v2.Normalize(); var rdot = v1.Dot(v2); var result = Math.Acos(rdot); return(MathHelp.DegreesFromRadians((float)result)); }
/// <summary> /// Establece los ejes unitarios de esta matriz según la rotación dada por los grados alto ejes indicados. /// </summary> /// <param name="grados"></param> /// <param name="ejeX"></param> /// <param name="ejeY"></param> /// <param name="ejeZ"></param> public virtual void Rotation(float grados, float ejeX, float ejeY, float ejeZ) { GetTranslation(ref _tempV3); _tempQRot.SetIdentity(); _tempQRot.Rotation(MathHelp.RadiansFromDegrees(grados), ejeX, ejeY, ejeZ); //tempQRot.GetMatriz4(ref auxMat4); //this.CopiaDesde(auxMat4); FromQuaternion(_tempQRot); Translation3F = _tempV3; }
public static Quaternion4F FromDegreesAxis(float degrees, Vector3F axis) { return(FromRadiansAxis(MathHelp.RadiansFromDegrees(degrees), axis.X, axis.Y, axis.Z)); }
public static Quaternion4F FromDegreesAxis(float degrees, float x, float y, float z) { return(FromRadiansAxis(MathHelp.RadiansFromDegrees(degrees), x, y, z)); }