12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * 3D Engine
- * vector.h:
- * Based on pikuma.com 3D software renderer in C
- * Copyright (c) 2021 986-Studio. All rights reserved.
- *
- * Created by Manoël Trapier on 02/03/2021.
- */
- #ifndef THREEDENGINE_SOURCE_INCLUDE_VECTOR_H
- #define THREEDENGINE_SOURCE_INCLUDE_VECTOR_H
- /***********************************************************************************************************************
- * Data types
- **********************************************************************************************************************/
- typedef struct vec2_t
- {
- double x, y;
- } vec2_t;
- typedef struct vec3_t
- {
- double x, y, z;
- } vec3_t;
- typedef struct vec4_t
- {
- double x, y, z, w;
- } vec4_t;
- /***********************************************************************************************************************
- * Prototypes
- **********************************************************************************************************************/
- /* ---------------------------------------------- 2D Vectors operations --------------------------------------------- */
- double vec2Getlength(vec2_t v);
- vec2_t vec2AddVectors(vec2_t a, vec2_t b);
- vec2_t vec2SubVectors(vec2_t a, vec2_t b);
- vec2_t vec2ScalarMult(vec2_t a, double s);
- vec2_t vec2ScalarDiv(vec2_t a, double s);
- double vec2Dot(vec2_t a, vec2_t b);
- void vec2Normalize(vec2_t *a);
- /* ---------------------------------------------- 3D Vectors operations --------------------------------------------- */
- double vec3Getlength(vec3_t v);
- vec3_t vec3AddVectors(vec3_t a, vec3_t b);
- vec3_t vec3SubVectors(vec3_t a, vec3_t b);
- vec3_t vec3ScalarMult(vec3_t a, double s);
- vec3_t vec3ScalarDiv(vec3_t a, double s);
- vec3_t vec3Cross(vec3_t a, vec3_t b);
- double vec3Dot(vec3_t a, vec3_t b);
- void vec3Normalize(vec3_t *a);
- vec3_t vec3FromVec4(vec4_t v);
- vec3_t vec3RotateX(vec3_t original, double angle);
- vec3_t vec3RotateY(vec3_t original, double angle);
- vec3_t vec3RotateZ(vec3_t original, double angle);
- /* ---------------------------------------------- 4D Vectors operations --------------------------------------------- */
- vec4_t vec4FromVec3(vec3_t v);
- #endif /* THREEDENGINE_SOURCE_VECTOR_H */
|