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