Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


#Actualshazen

Posted 13 August 2013 - 08:30 AM

Get a hold of reflector so you can see how the Xna framework does it...


public static Matrix CreateFromAxisAngle(Vector3 axis, float angle)
{
    Matrix matrix;
    float x = axis.X;
    float y = axis.Y;
    float z = axis.Z;
    float num2 = (float) Math.Sin((double) angle);
    float num = (float) Math.Cos((double) angle);
    float num11 = x * x;
    float num10 = y * y;
    float num9 = z * z;
    float num8 = x * y;
    float num7 = x * z;
    float num6 = y * z;
    matrix.M11 = num11 + (num * (1f - num11));
    matrix.M12 = (num8 - (num * num8)) + (num2 * z);
    matrix.M13 = (num7 - (num * num7)) - (num2 * y);
    matrix.M14 = 0f;
    matrix.M21 = (num8 - (num * num8)) - (num2 * z);
    matrix.M22 = num10 + (num * (1f - num10));
    matrix.M23 = (num6 - (num * num6)) + (num2 * x);
    matrix.M24 = 0f;
    matrix.M31 = (num7 - (num * num7)) + (num2 * y);
    matrix.M32 = (num6 - (num * num6)) - (num2 * x);
    matrix.M33 = num9 + (num * (1f - num9));
    matrix.M34 = 0f;
    matrix.M41 = 0f;
    matrix.M42 = 0f;
    matrix.M43 = 0f;
    matrix.M44 = 1f;
    return matrix;
}

Don't forget this depends on the axis parameter being unit length.


#1shazen

Posted 13 August 2013 - 08:29 AM

Get a hold of reflector so you can see how the Xna framework does it...


public static Matrix CreateFromAxisAngle(Vector3 axis, float angle)
{
    Matrix matrix;
    float x = axis.X;
    float y = axis.Y;
    float z = axis.Z;
    float num2 = (float) Math.Sin((double) angle);
    float num = (float) Math.Cos((double) angle);
    float num11 = x * x;
    float num10 = y * y;
    float num9 = z * z;
    float num8 = x * y;
    float num7 = x * z;
    float num6 = y * z;
    matrix.M11 = num11 + (num * (1f - num11));
    matrix.M12 = (num8 - (num * num8)) + (num2 * z);
    matrix.M13 = (num7 - (num * num7)) - (num2 * y);
    matrix.M14 = 0f;
    matrix.M21 = (num8 - (num * num8)) - (num2 * z);
    matrix.M22 = num10 + (num * (1f - num10));
    matrix.M23 = (num6 - (num * num6)) + (num2 * x);
    matrix.M24 = 0f;
    matrix.M31 = (num7 - (num * num7)) + (num2 * y);
    matrix.M32 = (num6 - (num * num6)) - (num2 * x);
    matrix.M33 = num9 + (num * (1f - num9));
    matrix.M34 = 0f;
    matrix.M41 = 0f;
    matrix.M42 = 0f;
    matrix.M43 = 0f;
    matrix.M44 = 1f;
    return matrix;
}

PARTNERS