User:Tohline/vtk/Quadric

From VistrailsWiki
Jump to navigation Jump to search

Generating Spheroids, Ellipsoids, and Quadrics

Whitworth's (1981) Isothermal Free-Energy Surface
|   Tiled Menu   |   Tables of Content   |  Banner Video   |  Tohline Home Page   |

Getting Started

Here we explore the vtkQuadric method, which has been used to generate Figure 5-2 (§5.1, p. 77) of the VTK User's Guide, authored and published by Kitware, Inc., in an effort to learn how to draw two-dimensional spheroidal structures, three-dimensional ellipsoidal structures, and other analytically specifiable configurations.

1. Inside VisTrails, open, then execute "VisQuad.vt" without making any changes to the default pipeline or to any module parameters:

  • Follow this directory path: VisTrails/examples/vtk_examples/VisualizationAlgorighms/VisQuad.vt
  • The default workflow pipeline is shown in the top panel of the following figure. Upon execution, the default composite image that pops up in the VisTrails spreadsheet window is shown in the bottom panel.


Figure 1:     Default

Default Workflow

Default Figure 5-2 from User's Guide

Various Modules

vtkQuadric

In the workflow image displayed above, the vtkQuadric module has been highlighted, so the inset window to the right of the workflow pipeline displays the values of the 10 separate model coefficients that have been used to generate the default "Quadric" configuration. Presumably, these values correspond, respectively, to coefficients <math>~a0, a1, a2, a3 \ldots a9</math> as they appear in the quadric function definition as provided in the default module documentation and as reprinted here:


vtkQuadric Module Documentation

vtkQuadric - evaluate implicit quadric function

Superclass: vtkImplicitFunction

vtkQuadric evaluates the quadric function F(x,y,z) = a0*x^2 + a1*y^2 + a2*z^2 + a3*x*y + a4*y*z + a5*x*z + a6*x + a7*y + a8*z + a9. vtkQuadric is a concrete implementation of vtkImplicitFunction.

We conclude that the default image displayed above illustrates geometric properties of an underlying scalar field that has been generated from the function,

<math>~F_0(x,y,z)</math>

<math>~=</math>

<math>~\frac{x^2}{2} + y^2 + \frac{z^2}{5} + \frac{yz}{10} + \frac{y}{5}\, .</math>

vtkSampleFunction

As implemented in this example visualization, this module assigns default values and behavior to all methods except one:

  • SampleDimensions is specified by the three integers (30, 30, 30); this is presumably the number of (uniformly sized) grid cells in each of the three coordinate directions — respectively, (x, y, z) — that will be assigned values of the function, <math>~F_0(x, y, z)</math>.

While initially deciphering the behavior of this entire workflow, I wondered how the edges of the (black) bounding box were specified. Simultaneously, I wondered over what range of values of x, y, and z the grid resolution of (30, 30, 30) was being stretched. The answer to both of these questions is the same. The function is sampled over the range of coordinate values — and the (black) bounding box is drawn at the edges of this sampled region — as specified by the vtkSampleFunction method, ModelBounds.

  • By experimentation, I discovered that the default coordinate values assigned to Modelbounds are, for x, y, and z, respectively, (-1.0, 1.0), (-1.0, 1.0), and (-1.0, 1.0). By assigning, instead, values of (0.0, 1.0), (0.0, 1.0), and (0.0, 1.0), precisely one octant of the original configuration is displayed.

vtkContourFilter

As is explained at the top of p. 78 of the VTK User's Guide, five different contours — that is, five different surfaces differentiated from one another by color — have been drawn. The specific set of surfaces has been specified via the "GenerateValues" method inside the vtkContourFilter module. Clicking on (i.e., highlighting) the vtkContourFilter module in the VisTrails workflow reveals that three numbers have been specified:

  • Two floating-point numbers identify the "scalar range" — in the default case, the specified range is <math>0.0 \rightarrow 1.2</math>;
  • The single integer identifies the "number of contours to be generated in the range (end values inclusive).

We conclude that the five separately colored "surfaces" correspond to contours for which the function, <math>~F_0(x,y,z)</math>, is constant and has the following values:

Contour Color: red yellow green light blue dark blue
Associated Scalar Value: 0.0 0.3 0.6 0.9 1.2

Related Discussions