view dmvecmat.h @ 96:6bf5220fa47e

Urgh .. use memset to silence some bogus GCC warnings about using potentially uninitialized values, while that will not actually be possible. In any case, it is annoying.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 02 Oct 2012 18:52:28 +0300
parents 32250b436bca
children 07c4f1a7ddc6
line wrap: on
line source

/*
 * DMLib
 * -- Vector and matrix functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2011 Tecnic Software productions (TNSP)
 */
#ifndef DMVECMAT_H
#define DMVECMAT_H
#include "dmlib.h"

#ifdef __cplusplus
extern "C" {
#endif

#define DM_MATRIX_SIZE	(3)

typedef struct
{
    DMFloat x, y, z;
} DMVector;

typedef	struct
{
    DMFloat m[DM_MATRIX_SIZE][DM_MATRIX_SIZE];
} DMMatrix;

void    dm_vector_copy(DMVector *vd, DMVector *vs);

void    dm_vector_add(DMVector *vr, const DMVector *v2);
void    dm_vector_add_r(DMVector *vr, const DMVector *v1, const DMVector *v2);
void    dm_vector_sub(DMVector *vr, const DMVector *v2);
void    dm_vector_sub_r(DMVector *vr, const DMVector *v1, const DMVector *v2);

DMFloat dm_vector_length(const DMVector *vs);
void    dm_vector_normalize(DMVector *vs);
void    dm_vector_scale(DMVector * vec, const DMFloat k);
DMFloat dm_vector_dot(const DMVector *v1, const DMVector *v2);
void    dm_vector_cross(DMVector *vr, const DMVector *v1, const DMVector *v2);


void    dm_vector_mul_by_mat(DMVector *vd, const DMVector *vs, const DMMatrix *mat);
void    dm_vector_mul_by_mat_n(DMVector *list, const int nlist, const DMMatrix *mat);

void    dm_matrix_unit(DMMatrix *mat);
void    dm_matrix_transpose(DMMatrix *mat1, const DMMatrix *mat2);

void    dm_matrix_mul(DMMatrix *mat1, const DMMatrix *mat2);
void    dm_matrix_mul_n(DMMatrix *list, const int nlist, const DMMatrix *mat);

void    dm_matrix_rot(DMMatrix *mat,
        const DMFloat sx, const DMFloat sy, const DMFloat sz,
        const DMFloat cx, const DMFloat cy, const DMFloat cz);

void    dm_matrix_rot_a(DMMatrix *mat,
        const DMFloat ax, const DMFloat ay, const DMFloat az);


#ifdef __cplusplus
}
#endif
#endif // DMVECMAT_H