Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


need and implementation of matrix.createFromAxisAngle


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Gl_Terminator   Members   -  Reputation: 448

Like
0Likes
Like

Posted 13 August 2013 - 08:00 AM

This is the last piece of my 3DS model loader. please I need it in c#.

Sponsor:

#2 Paradigm Shifter   Crossbones+   -  Reputation: 5440

Like
1Likes
Like

Posted 13 August 2013 - 08:08 AM

Did you google "axis angle matrix" and look at the first hit (wikipedia)?

 

 

Rotation matrix from axis and angle

For some applications, it is helpful to be able to make a rotation with a given axis. Given a unit vector u = (uxuyuz), where ux2 + uy2 + uz2 = 1, the matrix for a rotation by an angle of θ about an axis in the direction of u is

fbaee547c3c65ad3d48112502363378a.png[2]

 

EDIT: For a 4x4 matrix the bottom right corner will be 1 and the other entries on the 4th row and column will be 0.


Edited by Paradigm Shifter, 13 August 2013 - 08:10 AM.

"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#3 shazen   Members   -  Reputation: 285

Like
1Likes
Like

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

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


Edited by shazen, 13 August 2013 - 08:30 AM.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS