Section: Visualization Toolkit Graphics Classes
The n planes can be defined in a number of ways including 1) manually specifying each plane; 2) choosing the six face planes of the input's bounding box; 3) choosing the eight vertex planes of the input's bounding box; 4) choosing the twelve edge planes of the input's bounding box; and/or 5) using a recursively subdivided octahedron. Note that when specifying planes, the plane normals should point outside of the convex region.
The output of this filter can be used in combination with vtkLODActor to represent a levels-of-detail in the LOD hierarchy. Another use of this class is to manually specify the planes, and then generate the polyhedron from the planes (without squeezing the planes towards the input). The method GenerateHull() is used to do this.
To create an instance of class vtkHull, simply invoke its constructor as follows
obj = vtkHull
obj
is an instance of the vtkHull class.
string = obj.GetClassName ()
int = obj.IsA (string name)
vtkHull = obj.NewInstance ()
vtkHull = obj.SafeDownCast (vtkObject o)
obj.RemoveAllPlanes (void )
- Remove all planes from the current set of planes.
int = obj.AddPlane (double A, double B, double C)
- Add a plane to the current set of planes. It will be added at the
end of the list, and an index that can later be used to set this
plane's normal will be returned. The values A, B, C are from the
plane equation Ax + By + Cz + D = 0. This vector does not have to
have unit length (but it must have a non-zero length!). If a value
0 > i >= -NumberOfPlanes is returned, then the plane is parallel
with a previously inserted plane, and |-i-1| is the index of the
plane that was previously inserted. If a value i < -NumberOfPlanes
is returned, then the plane normal is zero length.
int = obj.AddPlane (double plane[3])
- Add a plane to the current set of planes. It will be added at the
end of the list, and an index that can later be used to set this
plane's normal will be returned. The values A, B, C are from the
plane equation Ax + By + Cz + D = 0. This vector does not have to
have unit length (but it must have a non-zero length!). If a value
0 > i >= -NumberOfPlanes is returned, then the plane is parallel
with a previously inserted plane, and |-i-1| is the index of the
plane that was previously inserted. If a value i < -NumberOfPlanes
is returned, then the plane normal is zero length.
obj.SetPlane (int i, double A, double B, double C)
- Set the normal values for plane i. This is a plane that was already
added to the current set of planes with AddPlane(), and is now being
modified. The values A, B, C are from the plane equation
Ax + By + Cz + D = 0. This vector does not have to have unit length.
Note that D is set to zero, except in the case of the method taking
a vtkPlanes* argument, where it is set to the D value defined there.
obj.SetPlane (int i, double plane[3])
- Set the normal values for plane i. This is a plane that was already
added to the current set of planes with AddPlane(), and is now being
modified. The values A, B, C are from the plane equation
Ax + By + Cz + D = 0. This vector does not have to have unit length.
Note that D is set to zero, except in the case of the method taking
a vtkPlanes* argument, where it is set to the D value defined there.
int = obj.AddPlane (double A, double B, double C, double D)
- Variations of AddPlane()/SetPlane() that allow D to be set. These
methods are used when GenerateHull() is used.
int = obj.AddPlane (double plane[3], double D)
- Variations of AddPlane()/SetPlane() that allow D to be set. These
methods are used when GenerateHull() is used.
obj.SetPlane (int i, double A, double B, double C, double D)
- Variations of AddPlane()/SetPlane() that allow D to be set. These
methods are used when GenerateHull() is used.
obj.SetPlane (int i, double plane[3], double D)
- Variations of AddPlane()/SetPlane() that allow D to be set. These
methods are used when GenerateHull() is used.
obj.SetPlanes (vtkPlanes planes)
- Set all the planes at once using a vtkPlanes implicit function.
This also sets the D value, so it can be used with GenerateHull().
int = obj.GetNumberOfPlanes ()
- Get the number of planes in the current set of planes.
obj.AddCubeVertexPlanes ()
- Add the 8 planes that represent the vertices of a cube - the combination
of the three face planes connecting to a vertex - (1,1,1), (1,1,-1),
(1,-1,1), (1,-1,1), (-1,1,1), (-1,1,-1), (-1,-1,1), (-1,-1-1).
obj.AddCubeEdgePlanes ()
- Add the 12 planes that represent the edges of a cube - halfway between
the two connecting face planes - (1,1,0), (-1,-1,0), (-1,1,0), (1,-1,0),
(0,1,1), (0,-1,-1), (0,1,-1), (0,-1,1), (1,0,1), (-1,0,-1),
(1,0,-1), (-1,0,1)
obj.AddCubeFacePlanes ()
- Add the six planes that make up the faces of a cube - (1,0,0),
(-1, 0, 0), (0,1,0), (0,-1,0), (0,0,1), (0,0,-1)
obj.AddRecursiveSpherePlanes (int level)
- Add the planes that represent the normals of the vertices of a
polygonal sphere formed by recursively subdividing the triangles
in an octahedron. Each triangle is subdivided by connecting the
midpoints of the edges thus forming 4 smaller triangles. The
level indicates how many subdivisions to do with a level of 0
used to add the 6 planes from the original octahedron, level 1
will add 18 planes, and so on.
obj.GenerateHull (vtkPolyData pd, double bounds)
- A special method that is used to generate a polyhedron directly
from a set of n planes. The planes that are supplied by the user
are not squeezed towards the input data (in fact the user need
not specify an input). To use this method, you must provide an
instance of vtkPolyData into which the points and cells defining
the polyhedron are placed. You must also provide a bounding box
where you expect the resulting polyhedron to lie. This can be
a very generous fit, it's only used to create the initial polygons
that are eventually clipped.
obj.GenerateHull (vtkPolyData pd, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
- A special method that is used to generate a polyhedron directly
from a set of n planes. The planes that are supplied by the user
are not squeezed towards the input data (in fact the user need
not specify an input). To use this method, you must provide an
instance of vtkPolyData into which the points and cells defining
the polyhedron are placed. You must also provide a bounding box
where you expect the resulting polyhedron to lie. This can be
a very generous fit, it's only used to create the initial polygons
that are eventually clipped.