mirror of
				https://github.com/HandmadeMath/HandmadeMath.git
				synced 2025-10-26 12:26:59 +00:00 
			
		
		
		
	Setup Vec2, Vec3, Vec4 and their initialization functions
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| build/ | ||||
							
								
								
									
										212
									
								
								HandmadeMath.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								HandmadeMath.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,212 @@ | ||||
| /* | ||||
|   Author: Zak Strange | ||||
|    | ||||
| */ | ||||
|  | ||||
| #ifndef HANDMADE_MATH_H | ||||
| #define HANDMADE_MATH_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #ifdef HANDMADEMATH_STATIC | ||||
| #define HMMDEF static | ||||
| #else | ||||
| #define HMMDEF extern | ||||
| #endif | ||||
|  | ||||
| #if _MSC_VER && !__INTEL_COMPILER | ||||
| #define HINLINE __inline  | ||||
| #else | ||||
| #define HINLLINE inline | ||||
| #endif | ||||
|      | ||||
| typedef union vec2 | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         float x, y; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float u, v; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float left, right; | ||||
|     } | ||||
|  | ||||
|     float E[2]; | ||||
| } vec2; | ||||
|  | ||||
| typedef union vec3 | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         float x, y, z; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float u, v, w; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float r, g, b; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         vec2 xy; | ||||
|         float Ignored0_; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float Ignored1_; | ||||
|         vec2 yz; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         vec2 uv; | ||||
|         float Ignored2_; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float Ignored3_; | ||||
|         vec2 vw; | ||||
|     }; | ||||
|  | ||||
|     float E[3]; | ||||
| } vec3; | ||||
|  | ||||
| typedef union vec4 | ||||
| { | ||||
|     struct | ||||
|     { | ||||
|         union | ||||
|         { | ||||
|             vec3 xyz; | ||||
|             struct | ||||
|             { | ||||
|                 float x, y, z; | ||||
|             }; | ||||
|         }; | ||||
|          | ||||
|         float w;         | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         union | ||||
|         { | ||||
|             vec3 rgb; | ||||
|             struct | ||||
|             { | ||||
|                 float r, g, b; | ||||
|             }; | ||||
|         }; | ||||
|          | ||||
|         float a;         | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         vec2 xy; | ||||
|         float Ignored0_; | ||||
|         float Ignored1_; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float Ignored2_; | ||||
|         vec2 yz; | ||||
|         float Ignored3_; | ||||
|     }; | ||||
|     struct | ||||
|     { | ||||
|         float Ignored4_; | ||||
|         float Ignored5_; | ||||
|         vec2 zw; | ||||
|     }; | ||||
|      | ||||
|     float E[4]; | ||||
| } vec4; | ||||
|  | ||||
|      | ||||
| HMMDEF HINLINE vec2 V2i(int X, int Y); | ||||
| HMMDEF HINLINE vec2 V2(float X, float Y); | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* HANDMADE_MATH_H */ | ||||
|  | ||||
| #ifdef HANDMADE_MATH_IMPLEMENTATION | ||||
|  | ||||
| HINLINE vec2 V2i(int X, int Y) | ||||
| { | ||||
|     vec2 Result = {0}; | ||||
|  | ||||
|     Result.x = (float)X; | ||||
|     Result.y = (float)Y; | ||||
|  | ||||
|     return(Result); | ||||
| } | ||||
|      | ||||
| HINLINE vec2 V2(float X, float Y) | ||||
| { | ||||
|     vec2 Result = {0}; | ||||
|  | ||||
|     Result.x = X; | ||||
|     Result.y = Y; | ||||
|  | ||||
|     return(Result); | ||||
| } | ||||
|  | ||||
|  | ||||
| HINLINE vec3 V3i(int X, int Y, int Z) | ||||
| { | ||||
|     vec3 Result = {0}; | ||||
|  | ||||
|     Result.x = (float)X; | ||||
|     Result.y = (float)Y; | ||||
|     Result.z = (float)Z; | ||||
|      | ||||
|     return(Result); | ||||
| } | ||||
|      | ||||
| HINLINE vec3 V3(float X, float Y, float Z) | ||||
| { | ||||
|     vec3 Result = {0}; | ||||
|  | ||||
|     Result.x = X; | ||||
|     Result.y = Y; | ||||
|     Result.z = Z; | ||||
|  | ||||
|     return(Result); | ||||
| } | ||||
|  | ||||
| HINLINE vec4 V4i(int X, int Y, int Z, int W) | ||||
| { | ||||
|     vec4 Result = {0}; | ||||
|  | ||||
|     Result.x = (float)X; | ||||
|     Result.y = (float)Y; | ||||
|     Result.z = (float)Z; | ||||
|     Result.w = (float)W; | ||||
|      | ||||
|     return(Result); | ||||
| } | ||||
|      | ||||
| HINLINE vec4 V4(float X, float Y, float Z, float W) | ||||
| { | ||||
|     vec4 Result = {0}; | ||||
|  | ||||
|     Result.x = X; | ||||
|     Result.y = Y; | ||||
|     Result.z = Z; | ||||
|     Result.w = W; | ||||
|  | ||||
|     return(Result); | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
|  | ||||
							
								
								
									
										13
									
								
								build.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								build.bat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| @echo off | ||||
|  | ||||
| IF NOT EXIST build mkdir build | ||||
|  | ||||
| pushd build | ||||
|  | ||||
| REM C Build | ||||
| cl -nologo -Zi ../main.c | ||||
|  | ||||
| REM C++ Build | ||||
| REM cl -nologo -Zi ../main.cpp | ||||
|  | ||||
| popd | ||||
							
								
								
									
										8
									
								
								main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| #define HANDMADEMATH_DEFINE | ||||
| #include "HandmadeMath.h" | ||||
|  | ||||
| int | ||||
| main(int ArgC, char **ArgV) | ||||
| { | ||||
|      | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 =
					=