@@ -52,7 +52,7 @@ var timeArray;
5252var nElem , Elems , Props ; // Elements and ElementProperties
5353var nNodes , Nodes ; // Nodes
5454var Connectivity ; // Connectivity mapping
55- var keyMode , iMode , Modes , Displ ; // Modes data
55+ var keyMode , iMode , Modes ; // Modes data
5656var keyTS , iTS , TimeSeries ; // Time series data
5757var iPlot = 0 ; // Switch between kind of plots iPlot=0: None, iPlot=1: Modes, iPlot=2: TimeSeries
5858var groundLevel ;
@@ -719,8 +719,9 @@ function plotSceneAtTime() {
719719 0 , 0 , 1 , 0 ,
720720 - 1 , 0 , 0 , 0 ,
721721 0 , 0 , 0 , 1 ) ;
722- var Mat4 = TimeSeries [ keyTS ] [ iTS ] . mat4
723- // console.log('Mat4',Mat4);
722+ var Mat4 = TimeSeries [ keyTS ] [ iTS ] . mat4
723+ var Displ = TimeSeries [ keyTS ] [ iTS ] . Displ
724+ var TSHasmat4 = Mat4 != null
724725// console.log('time',time);
725726// console.log('time_index',time_index);
726727 if ( TimeSeries [ keyTS ] [ iTS ] . absolute ) {
@@ -744,42 +745,54 @@ function plotSceneAtTime() {
744745 if ( TimeSeries [ keyTS ] [ iTS ] . element ) {
745746 alert ( 'NotImplementedError Time series per element' ) ;
746747 } else {
747- for ( var iElem = 0 ; iElem < nElem ; iElem ++ ) {
748- var i1 = Connectivity [ iElem ] [ 0 ]
749- var i2 = Connectivity [ iElem ] [ 1 ]
750- var elements1 = new Float32Array ( Mat4 [ time_index ] [ i1 ] ) ;
751- var elements2 = new Float32Array ( Mat4 [ time_index ] [ i2 ] ) ;
752- var m1 = new THREE . Matrix4 ( ) ;
753- var m2 = new THREE . Matrix4 ( ) ;
754- m1 . elements = elements1 ;
755- m2 . elements = elements2 ;
756- // logMatrix('m1', m1);
757- // var mm1 =m1.multiply(M1); // go from global system to THREE system
758- // var mm2 =m2.multiply(M1); // go from global system to THREE system
759- // logMatrix('m1', mm1);
760- // console.log('m1',mm1);
761- // console.log('m2',mm2);
762- var DP1 = new THREE . Vector3 ( ) . setFromMatrixPosition ( m1 ) ; // In "global" coordinates not THREE
763- var DP2 = new THREE . Vector3 ( ) . setFromMatrixPosition ( m2 ) ;
764- // console.log('DP1',DP1)
765- // console.log('DP2',DP2)
766- //var P1 = new THREE.Vector3(-Nodes[i1][1], Nodes[i1][2], -Nodes[i1][0])
767- //var P2 = new THREE.Vector3(-Nodes[i2][1], Nodes[i2][2], -Nodes[i2][0])
768- // var P1 = new THREE.Vector3(-Nodes[i1][1]-DP1[1], Nodes[i1][2]+ DP1[2],-Nodes[i1][0] -DP1[0]);
769- // var P2 = new THREE.Vector3(-Nodes[i2][1]-DP2[1], Nodes[i2][2]+ DP2[2],-Nodes[i2][0] -DP2[0]);
770- // NOTE: Coord conversion OpenFAST to Three: x=-yOF, y=zOF, z=-xOF
771- var P1 = new THREE . Vector3 ( - Nodes [ i1 ] [ 1 ] - DP1 . y , Nodes [ i1 ] [ 2 ] + DP1 . z , - Nodes [ i1 ] [ 0 ] - DP1 . x ) ;
772- var P2 = new THREE . Vector3 ( - Nodes [ i2 ] [ 1 ] - DP2 . y , Nodes [ i2 ] [ 2 ] + DP2 . z , - Nodes [ i2 ] [ 0 ] - DP2 . x ) ;
773- var arr = PLT . segmentOrient ( P1 , P2 ) ;
774- Elems [ iElem ] . setRotationFromMatrix ( arr [ 0 ] )
775- Elems [ iElem ] . position . set ( arr [ 1 ] . x , arr [ 1 ] . y , arr [ 1 ] . z ) ;
776- // console.log('P1',P1);
777- // console.log('P2',P2);
778- }
748+ if ( TSHasmat4 ) {
749+ for ( var iElem = 0 ; iElem < nElem ; iElem ++ ) {
750+ var i1 = Connectivity [ iElem ] [ 0 ]
751+ var i2 = Connectivity [ iElem ] [ 1 ]
752+ var elements1 = new Float32Array ( Mat4 [ time_index ] [ i1 ] ) ;
753+ var elements2 = new Float32Array ( Mat4 [ time_index ] [ i2 ] ) ;
754+ var m1 = new THREE . Matrix4 ( ) ;
755+ var m2 = new THREE . Matrix4 ( ) ;
756+ m1 . elements = elements1 ;
757+ m2 . elements = elements2 ;
758+ // logMatrix('m1', m1);
759+ // var mm1 =m1.multiply(M1); // go from global system to THREE system
760+ // var mm2 =m2.multiply(M1); // go from global system to THREE system
761+ // logMatrix('m1', mm1);
762+ // console.log('m1',mm1);
763+ // console.log('m2',mm2);
764+ var DP1 = new THREE . Vector3 ( ) . setFromMatrixPosition ( m1 ) ; // In "global" coordinates not THREE
765+ var DP2 = new THREE . Vector3 ( ) . setFromMatrixPosition ( m2 ) ;
766+ // console.log('DP1',DP1)
767+ // console.log('DP2',DP2)
768+ //var P1 = new THREE.Vector3(-Nodes[i1][1], Nodes[i1][2], -Nodes[i1][0])
769+ //var P2 = new THREE.Vector3(-Nodes[i2][1], Nodes[i2][2], -Nodes[i2][0])
770+ // var P1 = new THREE.Vector3(-Nodes[i1][1]-DP1[1], Nodes[i1][2]+ DP1[2],-Nodes[i1][0] -DP1[0]);
771+ // var P2 = new THREE.Vector3(-Nodes[i2][1]-DP2[1], Nodes[i2][2]+ DP2[2],-Nodes[i2][0] -DP2[0]);
772+ // NOTE: Coord conversion OpenFAST to Three: x=-yOF, y=zOF, z=-xOF
773+ var P1 = new THREE . Vector3 ( - Nodes [ i1 ] [ 1 ] - DP1 . y , Nodes [ i1 ] [ 2 ] + DP1 . z , - Nodes [ i1 ] [ 0 ] - DP1 . x ) ;
774+ var P2 = new THREE . Vector3 ( - Nodes [ i2 ] [ 1 ] - DP2 . y , Nodes [ i2 ] [ 2 ] + DP2 . z , - Nodes [ i2 ] [ 0 ] - DP2 . x ) ;
775+ var arr = PLT . segmentOrient ( P1 , P2 ) ;
776+ Elems [ iElem ] . setRotationFromMatrix ( arr [ 0 ] )
777+ Elems [ iElem ] . position . set ( arr [ 1 ] . x , arr [ 1 ] . y , arr [ 1 ] . z ) ;
778+ // console.log('P1',P1);
779+ // console.log('P2',P2);
780+ }
781+ } else {
782+ // --- Using displacement
783+ for ( var iElem = 0 ; iElem < nElem ; iElem ++ ) {
784+ var i1 = Connectivity [ iElem ] [ 0 ]
785+ var i2 = Connectivity [ iElem ] [ 1 ]
786+ var P1 = new THREE . Vector3 ( - Nodes [ i1 ] [ 1 ] - Displ [ time_index ] [ i1 ] [ 1 ] , Nodes [ i1 ] [ 2 ] + Displ [ time_index ] [ i1 ] [ 2 ] , - Nodes [ i1 ] [ 0 ] - Displ [ time_index ] [ i1 ] [ 0 ] )
787+ var P2 = new THREE . Vector3 ( - Nodes [ i2 ] [ 1 ] - Displ [ time_index ] [ i2 ] [ 1 ] , Nodes [ i2 ] [ 2 ] + Displ [ time_index ] [ i2 ] [ 2 ] , - Nodes [ i2 ] [ 0 ] - Displ [ time_index ] [ i2 ] [ 0 ] )
788+ var arr = PLT . segmentOrient ( P1 , P2 ) ;
789+ Elems [ iElem ] . setRotationFromMatrix ( arr [ 0 ] )
790+ Elems [ iElem ] . position . set ( arr [ 1 ] . x , arr [ 1 ] . y , arr [ 1 ] . z ) ;
791+ }
792+ } //
779793 }
780- }
781- // Exception
782- }
794+ } // Plotting Relative Motion Time Series
795+ } // --- Switch on iPlot, Mode/TimeSeries
783796 controls . update ( ) ;
784797 render ( ) ;
785798
0 commit comments