Eigenvectors are unique up to a constantso if you took any eigenvector and multiplied it by -1 it's still an eigenvector. You could see it in the definition,

M x=\lambda x

eigenvector x appears in both sides of the eqn.

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?

http://vtk.org/Bug/view.php?id=12179
http://vtk.1045678.n5.nabble.com/tensor-glyph-inward-pointing-surface-normals-td4388361.html

Burlen


On 08/23/2013 01:10 PM, Andy Bauer wrote:
Hi Paul,

Apologies as my math is a bit rusty but isn'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'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.

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 "proper" direction your eigenvalues should have.

Regards,
Andy


On Fri, Aug 23, 2013 at 3:38 PM, pwhiteho <[email protected] <mailto:[email protected]>> wrote:

    The term "eigenvector", used to describe the principal directions
    of a tensor, is a bit of a misnomer since it's not a "vector" as
    interpreted by the Stream Tracer filter - it's more accurately
    bi-directional like tension/compression and could be termed
    "eigenaxis/eigenaxes". 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 ).

    I'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 "doubling back" as the "streamline" propagates,
    similar to the scheme of Weinstein, et. al., ( IEEE VIS'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.

    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:
    1. Have I missed something in existing filters that would handle this?
    2. Can the existing Stream Tracer be modified?
    3. Does the eigenvector routine in ParaView yield the same sign
    ambiguity among uncorrelated computations?

    Thanks,
    Paul W


    _______________________________________________
    Powered by www.kitware.com <http://www.kitware.com>

    Visit other Kitware open-source projects at
    http://www.kitware.com/opensource/opensource.html

    Please keep messages on-topic and check the ParaView Wiki at:
    http://paraview.org/Wiki/ParaView

    Follow this link to subscribe/unsubscribe:
    http://www.paraview.org/mailman/listinfo/paraview




_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to