new function to test

This commit is contained in:
luc 2018-04-19 03:35:29 +02:00
parent b184e675ec
commit 33b36d26e5
3 changed files with 72 additions and 0 deletions

View File

@ -35,6 +35,7 @@
#define SWEET_PI 3.141592653589793238462643
#define SWEET_2PI 6.283185307179586476925286
#define SWEET_GOLDEN_RATIO 1.618033988749894848204586
#define SWEET_EPSILON 0.00000001
/** RadianToDegree */
/** @param Radian as float or double */
@ -51,6 +52,9 @@
#define sweet_math_approx_equals(a, b, epsilon) \
(a <= (b+epsilon) && a >= (b-epsilon))
#define sweet_math_approx_zero(a, epsilon) \
(a <= (epsilon) && a >= (epsilon))
/** Invsqrt */
/** @param x argument of square root as float */
/** @return 1 over square root as float */

View File

@ -149,6 +149,66 @@ sweet_matrix_identity4 (void)
return m;
}
mat2
sweet_matrix_ortho_transform2 (vec2 u, vec2 v)
{
mat2 m;
m.v[0] = u.x;
m.v[3] = v.x;
m.v[2] = u.y;
m.v[3] = v.y;
return m;
}
mat3
sweet_matrix_ortho_transform3 (vec3 u, vec3 v, vec3 w)
{
mat3 m;
m.v[0] = u.x;
m.v[1] = v.x;
m.v[2] = w.x;
m.v[3] = u.y;
m.v[4] = v.y;
m.v[5] = w.y;
m.v[6] = u.z;
m.v[7] = v.z;
m.v[8] = w.z;
return m;
}
mat4
sweet_matrix_ortho_transform4 (vec4 u, vec4 v, vec4 w, vec4 t)
{
mat4 m;
m.v[0] = u.x;
m.v[1] = v.y;
m.v[2] = w.z;
m.v[3] = t.w;
m.v[4] = u.x;
m.v[5] = v.y;
m.v[6] = w.z;
m.v[7] = t.w;
m.v[8] = u.x;
m.v[9] = v.y;
m.v[10] = w.z;
m.v[11] = t.w;
m.v[12] = u.x;
m.v[13] = v.y;
m.v[14] = w.z;
m.v[15] = t.w;
return m;
}
mat4
sweet_matrix_perspective (double fovy, double aspect, double z_near, double z_far)
{

View File

@ -35,6 +35,14 @@ mat2 sweet_matrix_identity2 (void);
mat3 sweet_matrix_identity3 (void);
mat4 sweet_matrix_identity4 (void);
/** Basis */
/** Vectors must be orthogonal */
/** @param u, v, w, t as vector of the new basis */
/** @return transform matrix to the new basis */
mat2 sweet_matrix_ortho_basis2 (vec2 u, vec2 v);
mat3 sweet_matrix_ortho_basis3 (vec3 u, vec3 v, vec3 w);
mat4 sweet_matrix_ortho_basis4 (vec4 u, vec4 v, vec4 w, vec4 t);
/** Frustum */
/** @param Right as flaot */
/** @param Left as float */