@@ -634,14 +634,24 @@ void ShowFieldGlyphs::renderTensors(
634634 for (const auto & node : facade->nodes ())
635635 {
636636 checkForInterruption ();
637- Vector v ;
638- fld->get_value (v , node.index ());
637+ Tensor t ;
638+ fld->get_value (t , node.index ());
639639 Point p = node.point ();
640+ double eigen1, eigen2, eigen3;
641+ t.get_eigenvalues (eigen1, eigen2, eigen3);
640642
641643 if (colorScheme != GeometryObject::COLOR_UNIFORM)
642644 {
643- ColorMapHandle map = colorMap.get ();
644- node_color = map->valueToColor (v);
645+ if (colorScheme == GeometryObject::COLOR_MAP)
646+ {
647+ ColorMapHandle map = colorMap.get ();
648+ node_color = map->valueToColor (t);
649+ }
650+ if (colorScheme == GeometryObject::COLOR_IN_SITU)
651+ {
652+ Vector colorVector = t.get_eigenvector1 ().normal ();
653+ node_color = ColorRGB (colorVector.x (), colorVector.y (), colorVector.z ());
654+ }
645655 }
646656 switch (state.mGlyphType )
647657 {
@@ -663,14 +673,24 @@ void ShowFieldGlyphs::renderTensors(
663673 for (const auto & cell : facade->cells ())
664674 {
665675 checkForInterruption ();
666- Vector v ;
667- fld->get_value (v , cell.index ());
676+ Tensor t ;
677+ fld->get_value (t , cell.index ());
668678 Point p = cell.center ();
679+ double eigen1, eigen2, eigen3;
680+ t.get_eigenvalues (eigen1, eigen2, eigen3);
669681
670682 if (colorScheme != GeometryObject::COLOR_UNIFORM)
671683 {
672- ColorMapHandle map = colorMap.get ();
673- node_color = map->valueToColor (v);
684+ if (colorScheme == GeometryObject::COLOR_MAP)
685+ {
686+ ColorMapHandle map = colorMap.get ();
687+ node_color = map->valueToColor (t);
688+ }
689+ if (colorScheme == GeometryObject::COLOR_IN_SITU)
690+ {
691+ Vector colorVector = t.get_eigenvector1 ().normal ();
692+ node_color = ColorRGB (colorVector.x (), colorVector.y (), colorVector.z ());
693+ }
674694 }
675695 switch (state.mGlyphType )
676696 {
0 commit comments