Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views


Sign in to follow this  


Yeah, cool! I decided to try to write a 4x3 matrix class from memory alone. I have been using the D3DXMATRIX class in all of my code, and a little while I ago I pulled out a single class to do some work on it. Anyways I needed to include D3D stuff to work on something that only used (I think) the vector class. So that brough me to writing (cough::copy::cough) my vector class from my math book. Well now I wanted to see what I learned, or should I say retained. So I decided to write it all before I looked at my book, or the code sample files.

Well, if you are still reading this entry, here you have it. Fresh out of my brain, and it even compiles!

#ifndef MATRIX_4_X_3_H
#define MATRIX_4_X_3_H

#include "vectormath.h"

class Matrix4x3
float m11,m12,m13;
float m21,m22,m23;
float m31,m32,m33;
float tx,ty,tz;

Matrix4x3 operator *(const Matrix4x3 &a) const
Matrix4x3 d;
d.m11 = (m11 * a.m11) + (m12 * a.m21) + (m13 * a.m31);
d.m12 = (m11 * a.m12) + (m12 * a.m22) + (m13 * a.m32);
d.m13 = (m11 * a.m13) + (m12 * a.m23) + (m13 * a.m33);

d.m21 = (m21 * a.m11) + (m22 * a.m21) + (m23 * a.m31);
d.m22 = (m21 * a.m12) + (m22 * a.m22) + (m23 * a.m32);
d.m23 = (m21 * a.m13) + (m22 * a.m23) + (m23 * a.m33);

d.m31 = (m31 * a.m11) + (m32 * a.m21) + (m33 * a.m31);
d.m32 = (m31 * a.m12) + (m32 * a.m22) + (m33 * a.m32);
d.m33 = (m31 * a.m13) + (m32 * a.m23) + (m33 * a.m33);

return d;

Matrix4x3() {}
~Matrix4x3() {}
void Identity()
m11 = m22 = m33 = 1.0f;
m12=m13=m21=m23=m31=m32=m33 = 0.0f;
tx=ty=tz = 0.0f;
void RotateX(float thetaX)
m22 = cos(thetaX);
m23 = sin(thetaX);
m32 = -sin(thetaX);
m33 = cos(thetaX);
void RotateY(float thetaY)
m11 = cos(thetaY);
m13 = -sin(thetaY);
m31 = sin(thetaY);
m33 = cos(thetaY);
void RotateZ(float thetaZ)
m11 = cos(thetaZ);
m12 = sin(thetaZ);
m21 = -sin(thetaZ);
m22 = cos(thetaZ);
void Translate(Vector3 vec)
tx = vec.x;
ty = vec.y;
tz = vec.z;
void Copy(const Matrix4x3 &a)
m11 = a.m11; m12 = a.m12; m13 = a.m13;
m21 = a.m21; m22 = a.m22; m23 = a.m23;
m31 = a.m31; m32 = a.m32; m33 = a.m33;

#endif // MATRIX_4_X_3_H

Sign in to follow this  


Recommended Comments

I think it would look better to overload the '=' operator instead of the copy function. Just a suggestion.

Share this comment

Link to comment
I probally will in the future, just right now that was all done off of my memory. Oh and its somewhat bigger now too. It is in the new source that is uploaded too.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!