+ if (bbGetInputRotateToNormal().size()>=3)
+ {
+ double v1[3],v2[3],v3[3];
+ v1[0] = 0;
+ v1[1] = 0;
+ v1[2] = 1;
+ v2[0] = bbGetInputRotateToNormal()[0];
+ v2[1] = bbGetInputRotateToNormal()[1];
+ v2[2] = bbGetInputRotateToNormal()[2];
+
+ double mag= sqrt( v2[0]*v2[0] + v2[1]*v2[1]+ v2[2]*v2[2] ) ;
+ v2[0] = v2[0] / mag;
+ v2[1] = v2[1] / mag;
+ v2[2] = v2[2] / mag;
+ vtkMath *vtkmath = vtkMath::New();
+ double ang = acos ( vtkmath->Dot(v1,v2) );
+ ang = vtkmath->DegreesFromRadians( ang );
+ vtkmath->Cross( v1,v2,v3 );
+ vtkmath->Delete();
+ result->RotateWXYZ( ang , v3[0], v3[1], v3[2] );
+ } // if rotation size >=4
+
+ if (bbGetInputInverse()==false)
+ {
+ bbSetOutputOut(result);
+ } else {
+ vtkMatrix4x4 *matrix;
+ matrix=vtkMatrix4x4::New();
+ result->GetInverse(matrix);
+ resultInverse->SetMatrix( matrix );
+ bbSetOutputOut(resultInverse);
+ } // if Inverse