Original Post
Hello, i was just wondering if anyone can find a way to optimize the function down below or if it's just correct for what i need. This function only have to do 90 deg. rotation. Here is is: //struct CThreeFltpoint = float x,y,z; CThreeFltpoint RotateCoord(CThreeFltpoint CoordVal, CThreeFltpoint CenterVal, int Dir) { //Convert center format CenterVal.X -= PreCalc.X_RowLengthPlus1Div2; CenterVal.Y -= PreCalc.Y_RowLengthPlus1Div2; CenterVal.Z -= PreCalc.Z_RowLengthPlus1Div2; //Convert coord format CoordVal.X -= PreCalc.X_RowLengthPlus1Div2; CoordVal.Y -= PreCalc.Y_RowLengthPlus1Div2; CoordVal.Z -= PreCalc.Z_RowLengthPlus1Div2; //Move the rotation pts TO 0,0,0 CoordVal.X -= CenterVal.X; CoordVal.Y -= CenterVal.Y; CoordVal.Z -= CenterVal.Z; //Rotate... switch(Dir) { double Tmp; case X_ClkWse: Tmp = CoordVal.Y; CoordVal.Y = 0.0f-CoordVal.Z; CoordVal.Z = Tmp; break; case X_CntClkWse: Tmp = CoordVal.Y; CoordVal.Y = CoordVal.Z; CoordVal.Z = 0.0f-Tmp; break; case Y_ClkWse: Tmp = CoordVal.X; CoordVal.X = CoordVal.Z; CoordVal.Z = 0.0f-Tmp; break; case Y_CntClkWse: Tmp = CoordVal.X; CoordVal.X = 0.0f-CoordVal.Z; CoordVal.Z = Tmp; break; case Z_ClkWse: Tmp = CoordVal.X; CoordVal.X = 0.0f-CoordVal.Y; CoordVal.Y = Tmp; break; case Z_CntClkWse: Tmp = CoordVal.X; CoordVal.X = CoordVal.Y; CoordVal.Y = 0.0f-Tmp; break; } //Move the rotation pts to origin(not to center) CoordVal.X += CenterVal.X; CoordVal.Y += CenterVal.Y; CoordVal.Z += CenterVal.Z; //Re-convert coord format CoordVal.X += PreCalc.X_RowLengthPlus1Div2; CoordVal.Y += PreCalc.Y_RowLengthPlus1Div2; CoordVal.Z += PreCalc.Z_RowLengthPlus1Div2; //Return values return CoordVal; }