3
// Copyright (C) 1998-2006 Marti Maria
3
// Copyright (C) 1998-2007 Marti Maria
5
5
// Permission is hereby granted, free of charge, to any person obtaining
6
6
// a copy of this software and associated documentation files (the "Software"),
42
42
double cdecl VEC3distance(LPVEC3 a, LPVEC3 b);
45
void cdecl MAT3identity(LPMAT3 a);
46
void cdecl MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b);
47
int cdecl MAT3inverse(LPMAT3 a, LPMAT3 b);
48
BOOL cdecl MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b);
49
double cdecl MAT3det(LPMAT3 m);
50
void cdecl MAT3eval(LPVEC3 r, LPMAT3 a, LPVEC3 v);
51
void cdecl MAT3toFix(LPWMAT3 r, LPMAT3 v);
52
void cdecl MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v);
53
void cdecl MAT3perK(LPMAT3 r, LPMAT3 v, double d);
54
void cdecl MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d);
45
void cdecl MAT3identity(LPMAT3 a);
46
void cdecl MAT3per(LPMAT3 r, LPMAT3 a, LPMAT3 b);
47
int cdecl MAT3inverse(LPMAT3 a, LPMAT3 b);
48
LCMSBOOL cdecl MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b);
49
double cdecl MAT3det(LPMAT3 m);
50
void cdecl MAT3eval(LPVEC3 r, LPMAT3 a, LPVEC3 v);
51
void cdecl MAT3toFix(LPWMAT3 r, LPMAT3 v);
52
void cdecl MAT3evalW(LPWVEC3 r, LPWMAT3 a, LPWVEC3 v);
53
void cdecl MAT3perK(LPMAT3 r, LPMAT3 v, double d);
54
void cdecl MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d);
56
56
// --------------------- Implementation ----------------------------
316
316
// Check id two vectors are the same, allowing tolerance
319
BOOL RangeCheck(double l, double h, double v)
319
LCMSBOOL RangeCheck(double l, double h, double v)
321
321
return (v >= l && v <= h);
325
BOOL VEC3equal(LPWVEC3 a, LPWVEC3 b, double Tolerance)
325
LCMSBOOL VEC3equal(LPWVEC3 a, LPWVEC3 b, double Tolerance)
517
517
// Solve a system in the form Ax = b
519
BOOL MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b)
519
LCMSBOOL MAT3solve(LPVEC3 x, LPMAT3 a, LPVEC3 b)