diff options
Diffstat (limited to 'src/Quaternions.cpp')
-rw-r--r-- | src/Quaternions.cpp | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/src/Quaternions.cpp b/src/Quaternions.cpp index 6edbd3a..9ce344f 100644 --- a/src/Quaternions.cpp +++ b/src/Quaternions.cpp @@ -120,7 +120,7 @@ quaternion To_Quat(Matrix_t m) int i,j,k; if (Tr >= 1.0) { - fourD = 2.0*fast_sqrt(Tr); + fourD = 2.0 * sqrt(Tr); q[3] = fourD/4.0; q[0] = (m[2][1] - m[1][2]) / fourD; q[1] = (m[0][2] - m[2][0]) / fourD; @@ -142,7 +142,7 @@ quaternion To_Quat(Matrix_t m) } j = (i+1)%3; k = (j+1)%3; - fourD = 2.0*fast_sqrt(m[i][i] - m[j][j] - m[k][k] + 1.0); + fourD = 2.0 * sqrt(m[i][i] - m[j][j] - m[k][k] + 1.0); q[i] = fourD / 4.0; q[j] = (m[j][i] + m[i][j]) / fourD; q[k] = (m[k][i] + m[i][k]) / fourD; @@ -276,35 +276,13 @@ void CrossProduct(XYZ P, XYZ Q, XYZ *V){ } void Normalise(XYZ *vectory) { - float d = fast_sqrt(vectory->x*vectory->x+vectory->y*vectory->y+vectory->z*vectory->z); + float d = sqrt(vectory->x*vectory->x+vectory->y*vectory->y+vectory->z*vectory->z); if(d==0){return;} vectory->x /= d; vectory->y /= d; vectory->z /= d; } -float fast_sqrt (register float arg) -{ -#ifdef OS9 - // Can replace with slower return std::sqrt(arg); - register float result; - - if (arg == 0.0) return 0.0; - - asm { - frsqrte result,arg // Calculate Square root - } - - // Newton Rhapson iterations. - result = result + 0.5 * result * (1.0 - arg * result * result); - result = result + 0.5 * result * (1.0 - arg * result * result); - - return result * arg; -#else - return sqrt(arg); -#endif -} - float normaldotproduct(XYZ point1, XYZ point2){ GLfloat returnvalue; Normalise(&point1); @@ -612,11 +590,11 @@ float dotproduct(XYZ point1, XYZ point2){ } float findDistance(XYZ point1, XYZ point2){ - return(fast_sqrt((point1.x-point2.x)*(point1.x-point2.x)+(point1.y-point2.y)*(point1.y-point2.y)+(point1.z-point2.z)*(point1.z-point2.z))); + return sqrt((point1.x-point2.x)*(point1.x-point2.x)+(point1.y-point2.y)*(point1.y-point2.y)+(point1.z-point2.z)*(point1.z-point2.z)); } float findLength(XYZ point1){ - return(fast_sqrt((point1.x)*(point1.x)+(point1.y)*(point1.y)+(point1.z)*(point1.z))); + return sqrt((point1.x)*(point1.x)+(point1.y)*(point1.y)+(point1.z)*(point1.z)); } |