You are on page 1of 2

///FUNCIN DE ROTACIN

void Rotar (float &x, float &y, float &z, float angulo, int rotx, int roty, int
rotz) {
//Se declara a pi y a rad para hacer la conversin de grados a radianes
float const pi = 3.1516;
float rad;
rad = angulo * (pi / 180 );
//Variables de ndice, i para las filas y j para las columnas, k se usa para recor
rer a la matriz resultante
int i, j,k;
//Matrices de rotacin en su respectivo eje
//float Rx[3][3] = {1.0,0.0,0.0,0.0,cos(angulo),-sin(angulo),0.0,sin(angulo),cos
(angulo)};
//float Ry[3][3] = {cos(angulo),0.0,sin(angulo),0.0,1.0,0.0,-sin(angulo),0.0,cos
(angulo)};
//float Rz[3][3] = {cos(angulo),-sin(angulo),0.0,sin(angulo),cos(angulo),0.0,0.0
,0.0,1.0};
float Rx[3][3] = {cos(rad), -sin(rad),0,sin(rad),cos(rad),0,0,0,1};
float Ry[3][3] = {1,0,0,0,cos(rad),-sin(rad),0,sin(rad),cos(rad)};
float Rz[3][3] = {cos(rad),0,sin(rad),0,1,0,-sin(rad),0,cos(rad)};
//Se almacenan los valores x, y, z en un vector para que puedan ser operados:
float Mi_Vector [3][1] = { x, y ,z };
//Vectores que van almacenar los valores transformados
float mx[3][1];
float my[3][1];
float mz[3][1];
//Si la rotacin es en x
if ( rotx == 1){
for( i = 0; i < 3; i++ ){
for( j = 0; j < 1; j++){
mx[i][j] = 0;
for( k = 0; k < 3 ;k++){
mx[i][j]=Rx[i][k]*Mi_Vector[k][j] + mx[i][j];
}
}
}
//Reemplazamos los valores de x, y, z por sus correspodientes transformadas
x = mx[0][0];
y = mx[1][0];
z = mx[2][0];
}
//Si la rotacin es en y
if ( roty == 1){
for( i = 0; i < 3; i++ ){
for( j = 0; j < 1; j++){
my[i][j] = 0;
for( k = 0; k < 3 ;k++){
my[i][j]=Ry[i][k]*Mi_Vector[k][j] + my[i][j];
}
}
}

//Reemplazamos los valores de x, y, z por sus correspodientes transformadas


x = my[0][0];
y = my[1][0];
z = my[2][0];
}
//Si la rotacin es en z
if ( rotz == 1){ //Si la rotacin es en z
for( i = 0; i < 3; i++ ){
for( j = 0; j < 1; j++){
mz[i][j] = 0;
for( k = 0; k < 3 ;k++){
mz[i][j]=Rz[i][k]*Mi_Vector[k][j] + mz[i][j];
}
}
}
//Reemplazamos los valores de x, y, z por sus correspodientes transformadas
x = mz[0][0];
y = mz[1][0];
z = mz[2][0];
}
}

You might also like