<!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">
Sorry but now that I think about it I am not sure if vtk will be able
to do the interpolations if you probe like I suggested below. Maybe it
would be better if you create your initial unstructured dataset using
x,y data in a plane, or theta,phi on a clipped spherical shell with
constant radius and then add an extra scalar field for elevation. you
will need cells to use the contour filter. If your data is a plane you
can use vtkDelaunay2D to create the cells or manually create them, if
its is on the clipped spherical shell you can use the probing technique
suggested below. Because you added an extra scalar for elevation you
can use vtkWarpScalar on the resulting dataset to recover the elevation.<br>
<br>
burlen<br>
<br>
<br>
<br>
You do need to create some geometry for your dataset if you want use
the vtkContourFilter to create iso surfaces. which means you have to
add cells to your dataset not just points. the cells tell vtk how the
points connect to one another. Two option that you have are to do this
manually by adding cells, or you could use a probe filter. If your
points all have a different elevation then they all lie between two
clipped spherical shells the inner shell with the radius of the lowest
elevation and the outer a shell with the radius of the highest
elevation. You could create a dataset with
vtkStructuredGrid(topologically regular but geometrically irregular)
and probe your unstructured data with it. The result is that vtk will
interpolate to nodes of the new structured grid, which has cells
defined implicitly. Then you can use all of vtks filters on the result.
hope it helps<br>
<pre class="moz-signature" cols="72">-- 
Burlen Loring
Information Technologist III
Space Science Center
Institute for the Study of Earth, Oceans, and Space
University of New Hampshire
39 College Road, Durham, NH 03824
Phone: 603-862-1140</pre>
<br>
<br>
Daniel Thorpe wrote:
<blockquote cite="midED2AA52F-3E9A-4A0C-B300-7C7E9EF0B74C@mac.com"
 type="cite">Hi, I'm pretty new to VTK, and my book hasn't arrived yet,
however I'm under a bit of pressure to get this task finished, so any
help is really appreciated....
  <div><br class="khtml-block-placeholder">
  </div>
  <div>I have some weather data such as air temperature for a number of
points across a country (so it's an unstructured grid), this data is
retrieved from a database by my application (which is an OS X Cocoa
app, using Obj-C/++). For each point I have a northing, easting and
elevation, so x,y,z. I'm trying to plot some sort of isosurface, I've
written some code which I think puts my data into a
vtkUnstructuredGrid, which is pasted below.</div>
  <div><br class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;"><font class="Apple-style-span" face="Monaco"
 size="2"><span class="Apple-style-span" style="font-size: 10px;">-
(vtkDataSet *)samplesAsVTKDataSet {</span></font></div>
  <div style="margin: 0px; min-height: 14px;"><span
 class="Apple-tab-span" style="white-space: pre;"> </span><br
 class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">vtkPoints</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span><span
 class="Apple-tab-span" style="white-space: pre;"> </span><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">*newPts</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span><span
 class="Apple-tab-span" style="white-space: pre;"> </span><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">= vtkPoints::New();</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">vtkDoubleArray</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">*newScalars =
vtkDoubleArray::New();</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">PointValue</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span><span
 class="Apple-tab-span" style="white-space: pre;"> </span><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">*point; // this is a
class representing a value associated with a coordinate</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 color="#760f50" face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">double</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;"> xyz[</span></font><font
 class="Apple-style-span" color="#0000ff" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">2</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">];</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 color="#760f50" face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">int</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;"> i, length =
[samples count];&nbsp;</span></font></div>
  <div
 style="margin: 0px; font-family: Monaco; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"><br>
  </div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 color="#760f50" face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">for</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">(i=</span></font><font
 class="Apple-style-span" color="#0000ff" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">0</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">; i&lt;length; i++) {</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">point = [samples objectAtIndex:i];</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">xyz[</span></font><font
 class="Apple-style-span" color="#0000ff" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">0</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">] = [[point north]
doubleValue];</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">xyz[</span></font><font
 class="Apple-style-span" color="#0000ff" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">1</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">] = [[point east]
doubleValue];</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">xyz[</span></font><font
 class="Apple-style-span" color="#0000ff" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">2</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">] = [[point elev]
doubleValue];</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">newPts-&gt;InsertPoint(i,xyz);</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">newScalars-&gt;InsertValue(i, [[point value]
doubleValue]);</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">}</span></font></div>
  <div style="margin: 0px; min-height: 14px;"><span
 class="Apple-tab-span" style="white-space: pre;"> </span><br
 class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">vtkUnstructuredGrid</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;">*dataSet =
vtkUnstructuredGrid::New();</span></font><span class="Apple-tab-span"
 style="white-space: pre;"> </span></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">dataSet-&gt;SetPoints(newPts);</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">dataSet-&gt;GetPointData()-&gt;SetScalars(newScalars);</span></font></div>
  <div
 style="margin: 0px; font-family: Monaco; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; min-height: 14px;"><br>
  </div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">newPts-&gt;Delete();</span></font></div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">newScalars-&gt;Delete();</span></font><span
 class="Apple-tab-span" style="white-space: pre;"> </span></div>
  <div style="margin: 0px; min-height: 14px;"><span
 class="Apple-tab-span" style="white-space: pre;"> </span><br
 class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;"><span class="Apple-tab-span"
 style="white-space: pre;"> </span><font class="Apple-style-span"
 color="#760f50" face="Monaco" size="2"><span class="Apple-style-span"
 style="font-size: 10px;">return</span></font><font
 class="Apple-style-span" face="Monaco" size="2"><span
 class="Apple-style-span" style="font-size: 10px;"> dataSet;</span></font></div>
  <div style="margin: 0px;"><font class="Apple-style-span" face="Monaco"
 size="2"><span class="Apple-style-span" style="font-size: 10px;">}</span></font></div>
  <div style="margin: 0px;"><br class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;">Now, I'm a little stuck, I think I need to
create a vtkDataSetMapper, or maybe some sort of Filter - as I'm
guessing somewhere in the pipeline I've got to define how vtk should
interpolate between the points?</div>
  <div style="margin: 0px;"><br class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;">Anyway, if someone can point in the right
direction that would be great.</div>
  <div style="margin: 0px;"><br class="khtml-block-placeholder">
  </div>
  <div style="margin: 0px;">Cheers</div>
  <div style="margin: 0px;">Dan</div>
  <pre wrap=""><hr size="4" width="90%">
_______________________________________________
This is the private VTK discussion list. 
Please keep messages on-topic. Check the FAQ at: <a
 class="moz-txt-link-freetext" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a>
Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext"
 href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a>
  </pre>
</blockquote>
<br>
</body>
</html>