<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Paul, <br>
<br>
Sorry to have given such an off target answer! Your idea about
checking the dot product as you progress makes sense. That's how
VTK's a hyper stream tracer handles the issue. I wonder if you can
make use of it? Bringing VTK classes into PV isn't too hard but
parallelizing them can be challenging.<br>
<br>
Burlen<br>
<br>
On 08/24/2013 12:27 PM, Burlen Loring wrote:<br>
</div>
<blockquote cite="mid:52190928.6080600@lbl.gov" type="cite">
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<div class="moz-cite-prefix">in the case of the glyphing algorithm
it's the surface normals of the transformed glyph that have the
relation to the sign determinant of the transform matrix. this
transformation matrix is constructed from the eigenvectors
directly. at any rate, good luck.<br>
<br>
On 08/23/2013 06:35 PM, pwhiteho wrote:<br>
</div>
<blockquote
cite="mid:072E56E27FBC094398260E491A664E8F53FF36C9@DM2PRD0112MB671.prod.exchangelabs.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<style id="owaParaStyle" type="text/css"><!--P {margin-top:0;margin-bottom:0;}--></style>
<div style="direction: ltr;font-family: Tahoma;color:
#000000;font-size: 10pt;">Burlen, you had me hoping, but alas
... there is no direct correlation between the determinant (
a.k.a. the 3rd tensor invariant ) and the orientation of the
computed eigenvectors. You did get me thinking there may be
other possibilities. I'm sure I can use the dot product in a
marching cube scheme to enforce a consistent orientation
progression and generate a "vector" field ParaView will handle
well. It'll just have to be robust enough to handle a true
change near some sharp topological feature.<br>
<br>
Thanks,<br>
Paul<br>
<br>
<div style="font-family: Times New Roman; color: #000000;
font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF964985"><font
color="#000000" face="Tahoma" size="2"><b>From:</b>
Burlen Loring [<a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:bloring@lbl.gov">bloring@lbl.gov</a>]<br>
<b>Sent:</b> Friday, August 23, 2013 4:31 PM<br>
<b>To:</b> Andy Bauer; pwhiteho<br>
<b>Cc:</b> <a moz-do-not-send="true"
class="moz-txt-link-abbreviated"
href="mailto:paraview@paraview.org">paraview@paraview.org</a><br>
<b>Subject:</b> Re: [Paraview] Stream Tracer in
eigenvector field<br>
</font><br>
</div>
<div>
<div class="moz-cite-prefix">Eigenvectors are unique up to
a constant<span style="color:rgb(0,0,0);
font-family:Verdana,Geneva,Helvetica,Arial,sans-serif;
font-size:13px; font-style:normal;
font-variant:normal; font-weight:normal;
letter-spacing:normal; line-height:normal;
orphans:auto; text-align:start; text-indent:0px;
text-transform:none; white-space:normal; widows:auto;
word-spacing:0px; background-color:rgb(255,255,255);
display:inline!important; float:none"></span> so if
you took any eigenvector and multiplied it by -1 it'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 moz-do-not-send="true"
href="http://vtk.org/Bug/view.php?id=12179"
target="_blank">http://vtk.org/Bug/view.php?id=12179</a><br>
<a moz-do-not-send="true"
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'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.<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 "proper" 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"> <<a
moz-do-not-send="true"
href="mailto:pwhiteho@masonlive.gmu.edu"
target="_blank">pwhiteho@masonlive.gmu.edu</a>></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 "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 ).<br>
<br>
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.<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 moz-do-not-send="true"
href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a
moz-do-not-send="true"
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 moz-do-not-send="true"
href="http://paraview.org/Wiki/ParaView"
target="_blank">
http://paraview.org/Wiki/ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a moz-do-not-send="true"
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 class="mimeAttachmentHeader" target="_blank"></fieldset>
<br>
<pre>_______________________________________________
Powered by <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="http://www.kitware.com" target="_blank">www.kitware.com</a>
Visit other Kitware open-source projects at <a moz-do-not-send="true" class="moz-txt-link-freetext" 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 moz-do-not-send="true" class="moz-txt-link-freetext" href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a>
Follow this link to subscribe/unsubscribe:
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a>
</pre>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>