123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- * 3D Engine
- * vector.c:
- * 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.
- */
- #include <vector.h>
- #include <math.h>
- /* ---------------------------------------------- 2D Vectors operations --------------------------------------------- */
- double vec2Getlength(vec2_t v)
- {
- return sqrt(v.x * v.x + v.y * v.y);
- }
- vec2_t vec2AddVectors(vec2_t a, vec2_t b)
- {
- vec2_t ret = { a.x + b.x, a.y + b.y};
- return ret;
- }
- vec2_t vec2SubVectors(vec2_t a, vec2_t b)
- {
- vec2_t ret = { a.x - b.x, a.y - b.y};
- return ret;
- }
- /* ---------------------------------------------- 3D Vectors operations --------------------------------------------- */
- double vec3Getlength(vec3_t v)
- {
- return sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
- }
- vec3_t vec3AddVectors(vec3_t a, vec3_t b)
- {
- vec3_t ret = { a.x + b.x, a.y + b.y , a.z + b.z };
- return ret;
- }
- vec3_t vec3SubVectors(vec3_t a, vec3_t b)
- {
- vec3_t ret = { a.x - b.x, a.y - b.y , a.z - b.z };
- return ret;
- }
- vec3_t vec3RotateX(vec3_t original, double angle)
- {
- vec3_t ret = {
- .x = original.x,
- .y = original.y * cos(angle) - original.z * sin(angle),
- .z = original.y * sin(angle) + original.z * cos(angle)
- };
- return ret;
- }
- vec3_t vec3RotateY(vec3_t original, double angle)
- {
- vec3_t ret = {
- .x = original.x * cos(angle) - original.z * sin(angle),
- .y = original.y,
- .z = original.x * sin(angle) + original.z * cos(angle)
- };
- return ret;
- }
- vec3_t vec3RotateZ(vec3_t original, double angle)
- {
- vec3_t ret = {
- .x = original.x * cos(angle) - original.y * sin(angle),
- .y = original.x * sin(angle) + original.y * cos(angle),
- .z = original.z,
- };
- return ret;
- }
|