<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
Hi,<br>
<br>
You can visualize the vector field as arrows (or any other shape) using
vtkGlyph. I found it quite unclear when I first did it and I don't know
if I am doing it the best way, but here is an example of what works for
me.<br>
<br>
You need to provide a set of points and a set of vectors corresponding
to those points (in world coords). I store them in two std::vector ,
"directions" and "positions":<br>
<br>
<br>
//positions<br>
&nbsp;&nbsp;&nbsp; int num_pts = directions.size();<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPoints&gt; pts =
vtkSmartPointer&lt;vtkPoints&gt;::New();<br>
&nbsp;&nbsp;&nbsp; pts-&gt;SetNumberOfPoints(num_pts);<br>
<br>
&nbsp;&nbsp;&nbsp; //directions<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkDoubleArray&gt; vecArr =
vtkSmartPointer&lt;vtkDoubleArray&gt;::New();<br>
&nbsp;&nbsp;&nbsp; vecArr-&gt;SetNumberOfComponents(3);<br>
&nbsp;&nbsp;&nbsp; vecArr-&gt;SetNumberOfTuples(num_pts);<br>
<br>
&nbsp;&nbsp;&nbsp; for( int i=0; i &lt; num_pts; i++)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pts-&gt;InsertPoint(i, positions[i][0], positions[i][1],
positions[i][2]);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vecArr-&gt;InsertTuple3(i, directions[i][0]*sf,
directions[i][1]*sf, directions[i][2]*sf);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; // put vectors and positions into a grid which will be the glyph's
input<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkUnstructuredGrid&gt; uGrid =
vtkSmartPointer&lt;vtkUnstructuredGrid&gt;::New();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; uGrid-&gt;SetPoints(pts);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; uGrid-&gt;GetPointData()-&gt;SetVectors(vecArr);<br>
<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; // glyph construction<br>
&nbsp;&nbsp;&nbsp; // build arrow<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkArrowSource&gt; arrow =
vtkSmartPointer&lt;vtkArrowSource&gt;::New();<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp; //build arrow Field<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkGlyph3D&gt; glyph =
vtkSmartPointer&lt;vtkGlyph3D&gt;::New();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; glyph-&gt;SetInput(uGrid);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; glyph-&gt;SetSource(arrow-&gt;GetOutput());<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; glyph-&gt;SetScaleModeToScaleByVector();<br>
<br>
&nbsp;&nbsp; //display<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataMapper&gt; gMapper =
vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gMapper-&gt;SetInput( glyph-&gt;GetOutput());<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gMapper-&gt;ScalarVisibilityOn();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gMapper-&gt;SetScalarRange(uGrid-&gt;GetScalarRange());<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkActor&gt; gactor =
vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gactor-&gt;SetMapper(gMapper);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gactor-&gt;GetProperty()-&gt;SetColor(color);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ren-&gt;AddActor(gactor);<br>
<br>
<br>
Hope this helps,<br>
<br>
<br>
Alberto<br>
<br>
<br>
<br>
<br>
<br>
<br>
Kishore Mosaliganti wrote:
<blockquote
 cite="mid:cd51098d1002102106v7038f905tc74ed3b778f7787d@mail.gmail.com"
 type="cite">
  <pre wrap="">For 2, you can use Paraview to visualize the vector field.

Kishore

On Wed, Feb 10, 2010 at 8:35 AM, Arunachalam Kana
<a class="moz-txt-link-rfc2396E" href="mailto:Kana.Arunachalam@fh-wels.at">&lt;Kana.Arunachalam@fh-wels.at&gt;</a> wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Hi User,



My goal is to implement insight journal paper:

"Edge based tube detection for coronary artery centerline extraction"