view dmvecmat.h @ 49:033c660c25f5

Restructure module playing, removing 8bit sample mixing (output can still be 8bit, but samples are internally upconverted to 16bit after module loading.) Also prepare for floating point mixing support.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 01 Oct 2012 02:51:41 +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