Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkTriangle Class Reference

#include <vtkTriangle.h>

Inheritance diagram for vtkTriangle:

vtkCell vtkObject vtkObjectBase List of all members.

Detailed Description

a cell that represents a triangle

vtkTriangle is a concrete implementation of vtkCell to represent a triangle located in 3-space.

Examples:
vtkTriangle (Examples)
Tests:
vtkTriangle (Tests)

Definition at line 38 of file vtkTriangle.h.

Public Types

typedef vtkCell Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
vtkCell * GetEdge (int edgeId)
int GetParametricCenter (double pcoords[3])
double GetParametricDistance (double pcoords[3])
int GetCellType ()
int GetCellDimension ()
int GetNumberOfEdges ()
int GetNumberOfFaces ()
vtkCell * GetFace (int)
int CellBoundary (int subId, double pcoords[3], vtkIdList *pts)
void Contour (double value, vtkDataArray *cellScalars, vtkPointLocator *locator, vtkCellArray *verts, vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd)
int EvaluatePosition (double x[3], double *closestPoint, int &subId, double pcoords[3], double &dist2, double *weights)
void EvaluateLocation (int &subId, double pcoords[3], double x[3], double *weights)
int Triangulate (int index, vtkIdList *ptIds, vtkPoints *pts)
void Derivatives (int subId, double pcoords[3], double *values, int dim, double *derivs)
virtual double * GetParametricCoords ()
void Clip (double value, vtkDataArray *cellScalars, vtkPointLocator *locator, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, int insideOut)
int IntersectWithLine (double p1[3], double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId)

Static Public Member Functions

static vtkTriangle * New ()
static int IsTypeOf (const char *type)
static vtkTriangle * SafeDownCast (vtkObject *o)
static double TriangleArea (double p1[3], double p2[3], double p3[3])
static void ComputeNormal (double v1[3], double v2[3], double v3[3], double n[3])
static void TriangleCenter (double p1[3], double p2[3], double p3[3], double center[3])
static double Circumcircle (double p1[2], double p2[2], double p3[2], double center[2])
static int BarycentricCoords (double x[2], double x1[2], double x2[2], double x3[2], double bcoords[3])
static int ProjectTo2D (double x1[3], double x2[3], double x3[3], double v1[2], double v2[2], double v3[2])
static void ComputeNormal (vtkPoints *p, int numPts, vtkIdType *pts, double n[3])
static void ComputeNormalDirection (double v1[3], double v2[3], double v3[3], double n[3])
static int PointInTriangle (double x[3], double x1[3], double x2[3], double x3[3], double tol2)
static void ComputeQuadric (double x1[3], double x2[3], double x3[3], double quadric[4][4])
static void ComputeQuadric (double x1[3], double x2[3], double x3[3], vtkQuadric *quadric)

Protected Member Functions

 vtkTriangle ()
 ~vtkTriangle ()

Protected Attributes

vtkLine * Line


Member Typedef Documentation

typedef vtkCell vtkTriangle::Superclass
 

Reimplemented from vtkCell.

Definition at line 42 of file vtkTriangle.h.


Constructor & Destructor Documentation

vtkTriangle::vtkTriangle (   )  [protected]
 

vtkTriangle::~vtkTriangle (   )  [protected]
 


Member Function Documentation

static vtkTriangle* vtkTriangle::New (   )  [static]
 

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkTriangle::GetClassName (   )  [virtual]
 

Reimplemented from vtkCell.

static int vtkTriangle::IsTypeOf (  const char *  type  )  [static]
 

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkCell.

virtual int vtkTriangle::IsA (  const char *  type  )  [virtual]
 

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkCell.

static vtkTriangle* vtkTriangle::SafeDownCast (  vtkObject *  o  )  [static]
 

Reimplemented from vtkCell.

vtkCell* vtkTriangle::GetEdge (  int  edgeId  )  [virtual]
 

Get the edge specified by edgeId (range 0 to 2) and return that edge's coordinates.

Implements vtkCell.

int vtkTriangle::GetCellType (   )  [inline, virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

Definition at line 53 of file vtkTriangle.h.

References VTK_TRIANGLE.

int vtkTriangle::GetCellDimension (   )  [inline, virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

Definition at line 54 of file vtkTriangle.h.

int vtkTriangle::GetNumberOfEdges (   )  [inline, virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

Definition at line 55 of file vtkTriangle.h.

int vtkTriangle::GetNumberOfFaces (   )  [inline, virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

Definition at line 56 of file vtkTriangle.h.

vtkCell* vtkTriangle::GetFace (  int   )  [inline, virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

Definition at line 57 of file vtkTriangle.h.

int vtkTriangle::CellBoundary (  int  subId,
double  pcoords[3],
vtkIdList *  pts
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

void vtkTriangle::Contour (  double  value,
vtkDataArray *  cellScalars,
vtkPointLocator *  locator,
vtkCellArray *  verts,
vtkCellArray *  lines,
vtkCellArray *  polys,
vtkPointData *  inPd,
vtkPointData *  outPd,
vtkCellData *  inCd,
vtkIdType  cellId,
vtkCellData *  outCd
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

int vtkTriangle::EvaluatePosition (  double  x[3],
double *  closestPoint,
int &  subId,
double  pcoords[3],
double &  dist2,
double *  weights
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

void vtkTriangle::EvaluateLocation (  int &  subId,
double  pcoords[3],
double  x[3],
double *  weights
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

int vtkTriangle::Triangulate (  int  index,
vtkIdList *  ptIds,
vtkPoints *  pts
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

void vtkTriangle::Derivatives (  int  subId,
double  pcoords[3],
double *  values,
int  dim,
double *  derivs
)  [virtual]
 

See the vtkCell API for descriptions of these methods.

Implements vtkCell.

virtual double* vtkTriangle::GetParametricCoords (   )  [virtual]
 

See the vtkCell API for descriptions of these methods.

Reimplemented from vtkCell.

void vtkTriangle::Clip (  double  value,
vtkDataArray *  cellScalars,
vtkPointLocator *  locator,
vtkCellArray *  polys,
vtkPointData *  inPd,
vtkPointData *  outPd,
vtkCellData *  inCd,
vtkIdType  cellId,
vtkCellData *  outCd,
int  insideOut
)  [virtual]
 

Clip this triangle using scalar value provided. Like contouring, except that it cuts the triangle to produce other triangles.

Implements vtkCell.

int vtkTriangle::IntersectWithLine (  double  p1[3],
double  p2[3],
double  tol,
double &  t,
double  x[3],
double  pcoords[3],
int &  subId
)  [virtual]
 

Plane intersection plus in/out test on triangle. The in/out test is performed using tol as the tolerance.

Implements vtkCell.

int vtkTriangle::GetParametricCenter (  double  pcoords[3]  )  [inline, virtual]
 

Return the center of the triangle in parametric coordinates.

Reimplemented from vtkCell.

Definition at line 192 of file vtkTriangle.h.

double vtkTriangle::GetParametricDistance (  double  pcoords[3]  )  [virtual]
 

Return the distance of the parametric coordinate provided to the cell. If inside the cell, a distance of zero is returned.

Reimplemented from vtkCell.

void vtkTriangle::TriangleCenter (  double  p1[3],
double  p2[3],
double  p3[3],
double  center[3]
)  [inline, static]
 

Compute the center of the triangle.

Definition at line 227 of file vtkTriangle.h.

double vtkTriangle::TriangleArea (  double  p1[3],
double  p2[3],
double  p3[3]
)  [inline, static]
 

Compute the area of a triangle in 3D.

Definition at line 235 of file vtkTriangle.h.

References vtkMath::Distance2BetweenPoints().

static double vtkTriangle::Circumcircle (  double  p1[2],
double  p2[2],
double  p3[2],
double  center[2]
)  [static]
 

Compute the circumcenter (center[3]) and radius squared (method return value) of a triangle defined by the three points x1, x2, and x3. (Note that the coordinates are 2D. 3D points can be used but the z-component will be ignored.)

static int vtkTriangle::BarycentricCoords (  double  x[2],
double  x1[2],
double  x2[2],
double  x3[2],
double  bcoords[3]
)  [static]
 

Given a 2D point x[2], determine the barycentric coordinates of the point. Barycentric coordinates are a natural coordinate system for simplices that express a position as a linear combination of the vertices. For a triangle, there are three barycentric coordinates (because there are three vertices), and the sum of the coordinates must equal 1. If a point x is inside a simplex, then all three coordinates will be strictly positive. If two coordinates are zero (so the third =1), then the point x is on a vertex. If one coordinates are zero, the point x is on an edge. In this method, you must specify the vertex coordinates x1->x3. Returns 0 if triangle is degenerate.

static int vtkTriangle::ProjectTo2D (  double  x1[3],
double  x2[3],
double  x3[3],
double  v1[2],
double  v2[2],
double  v3[2]
)  [static]
 

Project triangle defined in 3D to 2D coordinates. Returns 0 if degenerate triangle; non-zero value otherwise. Input points are x1->x3; output 2D points are v1->v3.

static void vtkTriangle::ComputeNormal (  vtkPoints *  p,
int  numPts,
vtkIdType *  pts,
double  n[3]
)  [static]
 

Compute the triangle normal from a points list, and a list of point ids that index into the points list.

void vtkTriangle::ComputeNormal (  double  v1[3],
double  v2[3],
double  v3[3],
double  n[3]
)  [inline, static]
 

Compute the triangle normal from three points.

Definition at line 212 of file vtkTriangle.h.

References ComputeNormalDirection().

void vtkTriangle::ComputeNormalDirection (  double  v1[3],
double  v2[3],
double  v3[3],
double  n[3]
)  [inline, static]
 

Compute the (unnormalized) triangle normal direction from three points.

Definition at line 198 of file vtkTriangle.h.

Referenced by ComputeNormal().

static int vtkTriangle::PointInTriangle (  double  x[3],
double  x1[3],
double  x2[3],
double  x3[3],
double  tol2
)  [static]
 

Given a point x, determine whether it is inside (within the tolerance squared, tol2) the triangle defined by the three coordinate values p1, p2, p3. Method is via comparing dot products. (Note: in current implementation the tolerance only works in the neighborhood of the three vertices of the triangle.

static void vtkTriangle::ComputeQuadric (  double  x1[3],
double  x2[3],
double  x3[3],
double  quadric[4][4]
)  [static]
 

Calculate the error quadric for this triangle. Return the quadric as a 4x4 matrix or a vtkQuadric. (from Peter Lindstrom's Siggraph 2000 paper, "Out-of-Core Simplification of Large Polygonal Models")

static void vtkTriangle::ComputeQuadric (  double  x1[3],
double  x2[3],
double  x3[3],
vtkQuadric *  quadric
)  [static]
 

Calculate the error quadric for this triangle. Return the quadric as a 4x4 matrix or a vtkQuadric. (from Peter Lindstrom's Siggraph 2000 paper, "Out-of-Core Simplification of Large Polygonal Models")


Member Data Documentation

vtkLine* vtkTriangle::Line [protected]
 

Definition at line 185 of file vtkTriangle.h.


The documentation for this class was generated from the following file: