fork download
  1. static inline void setRotateFromVectors(float *A, const float *u, const float *v) {
  2. float lu2 = u[0]*u[0] + u[1]*u[1] + u[2]*u[2];
  3. float lv2 = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
  4. if(lu2*lv2<1.e-10) {
  5. setIdentity(A);
  6. return;
  7. }
  8. float scaler = 1.0f/sqrtf(lu2*lv2);
  9.  
  10. float c = (u[0]*v[0] + u[1]*v[1] + u[2]*v[2])*scaler;
  11.  
  12. float x = (v[1]*u[2] - v[2]*u[1])*scaler;
  13. float y = (v[2]*u[0] - v[0]*u[2])*scaler;
  14. float z = (v[0]*u[1] - v[1]*u[0])*scaler;
  15.  
  16. float s2 = x*x + y*y + z*z;
  17. if(s2<1.e-10) {
  18. setIdentity(A);
  19. return;
  20. }
  21. float cs2 = (1.0f-c)/s2;
  22. A[ 0] = c+x*x*cs2; A[ 4] = x*y*cs2+z; A[ 8] = x*z*cs2-y; A[12] = 0;
  23. A[ 1] = x*y*cs2-z; A[ 5] = c+y*y*cs2; A[ 9] = y*z*cs2+x; A[13] = 0;
  24. A[ 2] = x*z*cs2+y; A[ 6] = y*z*cs2-x; A[10] = c+z*z*cs2; A[14] = 0;
  25. A[ 3] = 0; A[ 7] = 0; A[11] = 0; A[15] = 1;
  26. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c: In function ‘setRotateFromVectors’:
prog.c:5:9: error: implicit declaration of function ‘setIdentity’ [-Werror=implicit-function-declaration]
         setIdentity(A);
         ^
prog.c:8:5: error: implicit declaration of function ‘sqrtf’ [-Werror=implicit-function-declaration]
     float scaler = 1.0f/sqrtf(lu2*lv2);
     ^
prog.c:8:25: error: incompatible implicit declaration of built-in function ‘sqrtf’ [-Werror]
     float scaler = 1.0f/sqrtf(lu2*lv2);
                         ^
cc1: all warnings being treated as errors
stdout
Standard output is empty