@@ -435,16 +435,19 @@ tdl.quaternions.quaternionToRotation = function(q) {
435
435
var d = qWqW + qXqX + qYqY + qZqZ ;
436
436
437
437
return [
438
- [ ( qWqW + qXqX - qYqY - qZqZ ) / d ,
438
+ ( qWqW + qXqX - qYqY - qZqZ ) / d ,
439
439
2 * ( qWqZ + qXqY ) / d ,
440
- 2 * ( qXqZ - qWqY ) / d , 0 ] ,
441
- [ 2 * ( qXqY - qWqZ ) / d ,
440
+ 2 * ( qXqZ - qWqY ) / d , 0 ,
441
+
442
+ 2 * ( qXqY - qWqZ ) / d ,
442
443
( qWqW - qXqX + qYqY - qZqZ ) / d ,
443
- 2 * ( qWqX + qYqZ ) / d , 0 ] ,
444
- [ 2 * ( qWqY + qXqZ ) / d ,
444
+ 2 * ( qWqX + qYqZ ) / d , 0 ,
445
+
446
+ 2 * ( qWqY + qXqZ ) / d ,
445
447
2 * ( qYqZ - qWqX ) / d ,
446
- ( qWqW - qXqX - qYqY + qZqZ ) / d , 0 ] ,
447
- [ 0 , 0 , 0 , 1 ] ] ;
448
+ ( qWqW - qXqX - qYqY + qZqZ ) / d , 0 ,
449
+
450
+ 0 , 0 , 0 , 1 ] ;
448
451
} ;
449
452
450
453
/**
@@ -461,11 +464,11 @@ tdl.quaternions.rotationToQuaternion = function(m) {
461
464
462
465
// Choose u, v, and w such that u is the index of the biggest diagonal entry
463
466
// of m, and u v w is an even permutation of 0 1 and 2.
464
- if ( m [ 0 ] [ 0 ] > m [ 1 ] [ 1 ] && m [ 0 ] [ 0 ] > m [ 2 ] [ 2 ] ) {
467
+ if ( m [ 0 * 4 + 0 ] > m [ 1 * 4 + 1 ] && m [ 0 * 4 + 0 ] > m [ 2 * 4 + 2 ] ) {
465
468
u = 0 ;
466
469
v = 1 ;
467
470
w = 2 ;
468
- } else if ( m [ 1 ] [ 1 ] > m [ 0 ] [ 0 ] && m [ 1 ] [ 1 ] > m [ 2 ] [ 2 ] ) {
471
+ } else if ( m [ 1 * 4 + 1 ] > m [ 0 * 4 + 0 ] && m [ 1 * 4 + 1 ] > m [ 2 * 4 + 2 ] ) {
469
472
u = 1 ;
470
473
v = 2 ;
471
474
w = 0 ;
@@ -475,12 +478,12 @@ tdl.quaternions.rotationToQuaternion = function(m) {
475
478
w = 1 ;
476
479
}
477
480
478
- var r = Math . sqrt ( 1 + m [ u ] [ u ] - m [ v ] [ v ] - m [ w ] [ w ] ) ;
481
+ var r = Math . sqrt ( 1 + m [ u * 4 + u ] - m [ v * 4 + v ] - m [ w * 4 + w ] ) ;
479
482
var q = [ ] ;
480
483
q [ u ] = 0.5 * r ;
481
- q [ v ] = 0.5 * ( m [ v ] [ u ] + m [ u ] [ v ] ) / r ;
482
- q [ w ] = 0.5 * ( m [ u ] [ w ] + m [ w ] [ u ] ) / r ;
483
- q [ 3 ] = 0.5 * ( m [ v ] [ w ] - m [ w ] [ v ] ) / r ;
484
+ q [ v ] = 0.5 * ( m [ v * 4 + u ] + m [ u * 4 + v ] ) / r ;
485
+ q [ w ] = 0.5 * ( m [ u * 4 + w ] + m [ w * 4 + u ] ) / r ;
486
+ q [ 3 ] = 0.5 * ( m [ v * 4 + w ] - m [ w * 4 + v ] ) / r ;
484
487
485
488
return q ;
486
489
} ;
0 commit comments