I did some more research and it's not Quaternions I have to deal with.Those are for an animation thing I have on the side.I'm dealing with radians or degrees (Pretty easy to convert between the two). It's Trigonometry to move the vertices now.
typedef struct { float x; float y; float z;}Point;Point points; float rotationMatrix[4][4];float inputMatrix[4][1] = {0.0, 0.0, 0.0, 0.0};float outputMatrix[4][1] = {0.0, 0.0, 0.0, 0.0}; void showPoint(){ cout<<"("<<outputMatrix[0][0]<<","<<outputMatrix[1][0]<<","<<outputMatrix[2][0]<<")"<<endl;} void multiplyMatrix(){ for(int i = 0; i < 4; i++ ){ for(int j = 0; j < 1; j++){ outputMatrix[i][j] = 0; for(int k = 0; k < 4; k++){ outputMatrix[i][j] += rotationMatrix[i][k] * inputMatrix[k][j]; } } }}void setUpRotationMatrix(float angle, float u, float v, float w){ float L = (u*u + v * v + w * w); angle = angle * M_PI / 180.0; //converting to radian value. Note: This is not needed in 010 I need to convert radians to angle instead. // Simple way to convert radians to degree is divide radians by 0.01745329252 to find the degree. //Example: 3.1415926536 rad ÷ 0.01745329252 rad = 180° float u2 = u * u; float v2 = v * v; float w2 = w * w; rotationMatrix[0][0] = (u2 + (v2 + w2) * cos(angle)) / L; rotationMatrix[0][1] = (u * v * (1 - cos(angle)) - w * sqrt(L) * sin(angle)) / L; rotationMatrix[0][2] = (u * w * (1 - cos(angle)) + v * sqrt(L) * sin(angle)) / L; rotationMatrix[0][3] = 0.0; rotationMatrix[1][0] = (u * v * (1 - cos(angle)) + w * sqrt(L) * sin(angle)) / L; rotationMatrix[1][1] = (v2 + (u2 + w2) * cos(angle)) / L; rotationMatrix[1][2] = (v * w * (1 - cos(angle)) - u * sqrt(L) * sin(angle)) / L; rotationMatrix[1][3] = 0.0; rotationMatrix[2][0] = (u * w * (1 - cos(angle)) - v * sqrt(L) * sin(angle)) / L; rotationMatrix[2][1] = (v * w * (1 - cos(angle)) + u * sqrt(L) * sin(angle)) / L; rotationMatrix[2][2] = (w2 + (u2 + v2) * cos(angle)) / L; rotationMatrix[2][3] = 0.0; rotationMatrix[3][0] = 0.0; rotationMatrix[3][1] = 0.0; rotationMatrix[3][2] = 0.0; rotationMatrix[3][3] = 1.0;} int main(){ float angle; float u, v, w; cout<<"Enter the initial point you want to transform:"; cin>>points.x>>points.y>>points.z; inputMatrix[0][0] = points.x; inputMatrix[1][0] = points.y; inputMatrix[2][0] = points.z; inputMatrix[3][0] = 1.0; cout<<"Enter axis vector: "; cin>>u>>v>>w; cout<<"Enter the rotating angle in degree: "; cin>>angle; setUpRotationMatrix(angle, u, v, w); multiplyMatrix(); showPoint(); return 0;}