# How to compose a matrix to perform isometric (dimetric) projection of a world coordinate?

I have a 2D unit vector containing a world coordinate (the player's direction), and I want to convert that to screen coordinates (classic isometric tiles).

I'm aware I can achieve this by rotating around the relevant axis but I want to see and understand how to do this using a purely matrix approach? Partly because I'm learning 'modern OpenGL' (v2+) and partly because I will want to use this same technique for other things so need a solid understanding and my math ability is a little lacking.

If needed my screen's coordinate system has it's origin at top left with +x & +y pointing right and down respectively. Also, my vertex positions are converted to the NDC range in my vertex shader if that's relevant.

Language is C++ with no supporting libraries.

• By 'purely matrix' I mean, I think I should be able to do this by: Mat4 p = { /*some magic numbers*/ }; Vector2 v = direction * p;. – Adam Naylor Jun 11 '17 at 16:13
• I'm pretty sure you can just use the standard projection * view * direction method – Bálint Jun 11 '17 at 16:21
• A standard isometric world-to-screen matrix (considering in pixels) would be like [[cos 330, cos 210], [sin 330, sin 210]] – Luis Masuelli Jun 11 '17 at 16:24
• – DMGregory Jun 12 '17 at 12:34
• @DMGregory thanks, I've done quite a bit of searching and reading across the stack exchange sites. – Adam Naylor Jun 12 '17 at 14:25