<div dir="ltr">Oh boy, the math does slip away too fast :)<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 23, 2013 at 4:31 PM, Burlen Loring <span dir="ltr">&lt;<a href="mailto:bloring@lbl.gov" target="_blank">bloring@lbl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Eigenvectors are unique up to a
      constant<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:start;font-style:normal;display:inline!important;font-weight:normal;float:none;line-height:normal;text-transform:none;font-size:13px;white-space:normal;font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;word-spacing:0px"></span>
      
      so if you took any eigenvector and multiplied it by -1 it&#39;s still
      an eigenvector. You could see it in the definition,<br>
      <br>
      M x=\lambda x<br>
      <br>
      eigenvector x appears in both sides of the eqn.<br>
      <br>
      I had a similar problem with tensor glyphs in ParaView. In that
      case I was able to solve by looking at the sign of the determinant
      of the transformation matrix (see bug report, patch and mail list
      posts below). I wonder if you could adapt/build on this solution
      there to solve your issue here?<br>
      <br>
      <a href="http://vtk.org/Bug/view.php?id=12179" target="_blank">http://vtk.org/Bug/view.php?id=12179</a><br>
      <a href="http://vtk.1045678.n5.nabble.com/tensor-glyph-inward-pointing-surface-normals-td4388361.html" target="_blank">http://vtk.1045678.n5.nabble.com/tensor-glyph-inward-pointing-surface-normals-td4388361.html</a><br>

      <br>
      Burlen<br>
      <br>
      <br>
      On 08/23/2013 01:10 PM, Andy Bauer wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>Hi Paul,<br>
              <br>
            </div>
            Apologies as my math is a bit rusty but isn&#39;t the sign of
            the eigenvector related to the sign of its corresponding
            eigenvalue? In that case if you make sure that all of the
            eigenvalues are positive then all of their corresponding
            eigenvectors should be aligned properly. If that&#39;s the case
            and you have access to the eigenvalues of the eigenvectors
            you could use the calculator or python calculator to
            properly orient the eigenvectors.<br>
            <br>
          </div>
          In any case, if you can come up with an algorithm that
          properly orients the eigenvectors you should be able to do
          that in the python calculator or calculator filters. If not,
          then things could get a bit hairy as far as computationally
          figuring out which is the &quot;proper&quot; direction your eigenvalues
          should have.<br>
          <br>
        </div>
        Regards,<br>
        Andy<br>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On Fri, Aug 23, 2013 at 3:38 PM,
          pwhiteho <span dir="ltr">&lt;<a href="mailto:pwhiteho@masonlive.gmu.edu" target="_blank">pwhiteho@masonlive.gmu.edu</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div>
              <div style="direction:ltr;font-size:10pt;font-family:Tahoma">The
                term &quot;eigenvector&quot;, used to describe the principal
                directions of a tensor, is a bit of a misnomer since
                it&#39;s not a &quot;vector&quot; as interpreted by the Stream Tracer
                filter - it&#39;s more accurately bi-directional like
                tension/compression and could be termed
                &quot;eigenaxis/eigenaxes&quot;. When interpreted as a vector,
                there is an inherent sign ambiguity in each eigenvector
                - the sign is indeterminate and one is free to choose +
                or -, and that is exactly what Mathematica does ( likely
                true for other routines also ).<br>
                <br>
                I&#39;ve been using Mathematica to prototype computations
                for the investigation of tensor topology which I then
                visualize in ParaView. Eigen-decomposition of a tensor
                field at each grid point returns an orthonormal set of
                eigenvectors, uncorrelated with any neighbors. Taken
                separately, each eigenvector field exhibits large
                regions of smoothly varying orientation, but there are
                systematic and random reversals of orientation that
                confound the Stream Tracer filter, sending streamlines
                wandering around the field. What is needed is a true
                tangent curve ( tensor line ) integrator that would
                avoid &quot;doubling back&quot; as the &quot;streamline&quot; propagates,
                similar to the scheme of Weinstein, et. al., ( IEEE
                VIS&#39;99 ) which computes the dot product of the incoming
                propagation vector with the eigenvector; and if near -1,
                negate the outgoing propagation vector. This can also be
                fancied-up to accommodate noisy initial tensor data as
                in Weinstein.<br>
                <br>
                I think I would be taking on too much at this point in
                learning to write my own filter so have been exploring
                ways to pre-process the eigenvector fields before
                visualizing in Paraview, but I ask:<br>
                1. Have I missed something in existing filters that
                would handle this?<br>
                2. Can the existing Stream Tracer be modified?<br>
                3. Does the eigenvector routine in ParaView yield the
                same sign ambiguity among uncorrelated computations?<br>
                <br>
                Thanks,<br>
                Paul W<br>
                <br>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
            <br>
            Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
            <br>
            Please keep messages on-topic and check the ParaView Wiki
            at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
            <br>
            Follow this link to subscribe/unsubscribe:<br>
            <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a>

Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a>

Follow this link to subscribe/unsubscribe:
<a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div>