Hi,
I would like to define a function, but I get errors... What's wrong with this?
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <ctime>
#include <cmath>
#define N 5
using namespace std;
const float M_2PIf = 6.283185307179586476925286766559f;
const float M_PIf = 3.141592653589793238462643383279f;
const float epsilon = M_PIf/(1e-06f);
/* -----------------RANDOM_GENERATOR------------------------------- */
float rand(float min, float max)
{
return min + (max - min) * rand() / (float)RAND_MAX;
}
//*********************************
struct vector { // random vector before the rotation
float x,y,z;
};
struct rotvector { // random vector after the rotation
float x,y,z;
};
//*********************************
// >>>>>>>>> ROTATION <<<<<<<<<<<
float RotMatrixX[3][3] = {
{1.0f, 0.0f, 0.0f},
{0.0f, cosf(epsilon), -sinf(epsilon)},
{0.0f, sinf(epsilon), cosf(epsilon)}
};
float RotMatrixY[3][3] = {
{cosf(epsilon), 0.0f, sinf(epsilon)},
{0.0f, 1.0f, 0.0f},
{-sinf(epsilon), 0.0f, cosf(epsilon)}
};
float RotMatrixZ[3][3] = {
{cosf(epsilon), -sinf(epsilon), 0.0f},
{sinf(epsilon), cosf(epsilon), 0.0f},
{0.0f, 0.0f, 1.0f}
};
vector vec[N];
rotvector rvec[N];
// ROTATE AROUND 'X'
float RotateX(float RvX, float RotmatrixX[][3], vector vec[], rotvector rvec[]){
for (int i = 0; i < 3; i++){
for (int k = 0; k < 3; k++){
RvX += RotMatrixX[i][k] * vec[k];
rvec[i] = RvX;
}
}
return RvX;
}
// main() function
int main(void)
{
srand ( time(NULL) ); // initialize random seed
for (int i = 0; i < N; i++)
{
float phi = rand(0.0f, M_2PIf);
float costheta = rand(-1.0f, 1.0f);
float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);
float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);
float z = 1.0f * costheta;
// store the initial vector
vec[i].x = x;
vec[i].y = y;
vec[i].z = z;
// store the rotated vector
rvec[i].x = x;
rvec[i].y = y;
rvec[i].z = z;
// call rand to get a value 0, 1, or 2 and use a switch statement
int n = rand() % 3;
switch(n)
{
case 0:
cout << "Case 0" << endl;
break;
case 1:
cout << "Case 1" << endl;
break;
case 2:
cout << "Case 2" << endl;
break;
}
}
system("pause");
// end main() function
return 0;
}
ERRORS:
simple.cpp: In function `float RotateX(float, float (*)[3], vector*, rotvector*)':
simple.cpp:60: error: no match for 'operator*' in 'RotMatrixX[i][k] * *((+(((unsigned int)k) * 12u)) + vec)'
simple.cpp:61: error: no match for 'operator=' in '*((+(((unsigned int)i) * 12u)) + rvec) = RvX'