view dmvecmat.h @ 0:32250b436bca

Initial re-import.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 28 Sep 2012 01:54:23 +0300
parents
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