# Understanding Matrix Transformations

This topic is 4823 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi, i have been working with matrices for a while now, and i think i am beginning to understand them a lot better, but i have a problem with understanding the individual parts to a matrix. The specific parts i am refering to are, basically, what does each row/column of a matrix represent. From debugging i have found out that _41, _42, _43 are the position coordinates in world space (unless im wrong). The reason why i am asking this is so that i can transform a normal vector(just a line or a shape) from world to model space and back again. Specifically, the mathematics behind this (ie. what parts of my existing vector do you multiply/add with what parts of a matrix). A simple formula used for transforming a D3DXVECTOR3 using a 4x4 Matrix would be much appreciated. Thanks for any replies.

##### Share on other sites
try this one out: Matrix FAQ

//Fredrik

##### Share on other sites
I don't know how to explain but here is the formula:

x = vector.x*matrix[0][0] + vector.y*matrix[0][1] + vector.z*matrix[0][2] + matrix[0][3];
y = vector.x*matrix[1][0] + vector.y*matrix[1][1] + vector.z*matrix[1][2] + matrix[1][3];
z = vector.x*matrix[2][0] + vector.y*matrix[2][1] + vector.z*matrix[2][2] + matrix[2][3];

##### Share on other sites
There's a page on MSDN that talks about transforms. You might find a nice explanation there.

##### Share on other sites
Hi there FireSoul,
How are you doing buddy?

The Problem
Understanding matrices and transformations.

The Solution
Object Space : This is where your vertices are defined for your object
World Space : This locates your object in world space... the world that you work with. We go here from object space using a world transformation matrix
View Space : Locates your camera in space and relocates your objects around your camera, we go here from world space using a view transformation matrix.
Clip Space : This space basically clips your view frustum into a cube. Which gives the impression of perspective/depth etc.. We go here from view space using a projection transformation matrix.

Matrices are nice since we can jam alot of information in them.
Translation matrix (Movement)
1 0 0 0
0 1 0 0
0 0 1 0
x y z 1
and so forth...
I would suggest reading this part of the DirectX SDK

It explains the transformations very well and how some of the math works.

Also, With regard to your second question.
You want to transform a normal vector from world to model space. This is done using an inverse world transformation matrix. You could use the D3DXMatrixInverse Function and transform the vector by the resulting matrix using D3DXVec3Transform. Also if you want to transform a vector from model space to world space you could just transform the vector by the world transformation matrix.

I hope this helps a bit buddy. Take care. If you have any more questions. Please do not hestitate to ask.

##### Share on other sites
the Directx matrix:

| Xx Yx Zx 0 |
| Xy Yy Zy 0 |
| Xz Yz Zz 0 |
| pX pY pZ 1 |

pX,pY,pZ is position in world space.
Xx,Xy,Yx,Zy..... is how jour object will look in world space, if u put Xx=1, Yy=1,Zz=1 and others 0, u will get the same object as jour object in local space, try to manipulate these to get cool effects.

1. 1
Rutin
67
2. 2
3. 3
4. 4
5. 5

• 21
• 10
• 33
• 20
• 9
• ### Forum Statistics

• Total Topics
633417
• Total Posts
3011781
• ### Who's Online (See full list)

There are no registered users currently online

×
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "url": "https://www.gamedev.net/forums/topic/344008-understanding-matrix-transformations/", "fetch_time": 1542781188000000000, "content_mime_type": "text/html", "warc_filename": "crawl-data/CC-MAIN-2018-47/segments/1542039747215.81/warc/CC-MAIN-20181121052254-20181121074254-00313.warc.gz", "warc_record_offset": 872388870, "warc_record_length": 29333, "token_count": 936, "char_count": 3607, "score": 3.625, "int_score": 4, "crawl": "CC-MAIN-2018-47", "snapshot_type": "longest", "language": "en", "language_score": 0.827495813369751, "file_path": "/sailhome/yjruan/project/latent-lm/data/processed/finemath-4plus/finemath-4plus/train-00037-of-00064.parquet"}