-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
52 lines (39 loc) · 1.44 KB
/
Copy pathmain.cpp
File metadata and controls
52 lines (39 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "main.h"
// a sample exported function
bool DLL_EXPORT inverseMatrix3(float *mat, float *res)
{
float determinant=0, invDet;
int i;
for(i=0; i<3; i++)
determinant = determinant + mat[i]*(mat[1 * 3 + (i+1)%3]*mat[2*3 + (i+2)%3] - mat[1*3 +(i+2)%3]*mat[2*3 +(i+1)%3]);
if (determinant == 0.0)
return false;
invDet = 1 / determinant;
res[0] = (mat[4] * mat[8] - mat[5] * mat[7]) * invDet;
res[3] = (mat[5] * mat[6] - mat[3] * mat[8]) * invDet;
res[6] = (mat[3] * mat[7] - mat[4] * mat[6]) * invDet;
res[1] = (mat[2] * mat[7] - mat[1] * mat[8]) * invDet;
res[4] = (mat[0] * mat[8] - mat[2] * mat[6]) * invDet;
res[7] = (mat[1] * mat[6] - mat[0] * mat[7]) * invDet;
res[2] = (mat[1] * mat[5] - mat[2] * mat[4]) * invDet;
res[5] = (mat[2] * mat[3] - mat[0] * mat[5]) * invDet;
res[8] = (mat[0] * mat[4] - mat[1] * mat[3]) * invDet;
return true;
}
void DLL_EXPORT multiplyMatrix(float *mat, float *mat2, float *res, int matrixDimension)
{
int i,j,k;
float sum;
for (i = 0; i < matrixDimension; i++)
{
for (j = 0; j < matrixDimension; j++)
{
sum = 0;
for (k = 0; k < matrixDimension; k++)
{
sum = sum + mat[matrixDimension * i + k] * mat2[matrixDimension * k + j];
}
res[i * matrixDimension +j] = sum;
}
}
}