Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# vtkTriangle Class Reference

`#include <vtkTriangle.h>`

Inheritance diagram for vtkTriangle:

[legend]
Collaboration diagram for vtkTriangle:

[legend]
List of all members.

## Detailed Description

a cell that represents a triangle

Date:
  2003/01/06 20:36:14

Revision:
  1.79

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

Created by:
  - Schroeder, Will

CVS contributions (if > 5%):
  - Schroeder, Will (51%)
  - Lorensen, Bill (11%)
  - Miller, Jim (10%)
  - Geveci, Berk (7%)
  - Martin, Ken (6%)

CVS logs (CVSweb):
  - .`h` (`/Common/vtkTriangle.h)`
  - .`cxx` (`/Common/vtkTriangle.cxx)`

Examples:
  vtkTriangle (Examples)

Tests:
  vtkTriangle (Tests)

Definition at line 56 of file vtkTriangle.h.

## Public Types
typedef vtkCell | Superclass
## Public Methods
virtual const char * | GetClassName ()
virtual int | IsA (const char *type)
vtkCell * | GetEdge (int edgeId)
int | GetParametricCenter (float pcoords[3])
int | GetCellType ()
int | GetCellDimension ()
int | GetNumberOfEdges ()
int | GetNumberOfFaces ()
vtkCell * | GetFace (int)
int | CellBoundary (int subId, float pcoords[3], vtkIdList *pts)
void | Contour (float value, vtkDataArray *cellScalars, vtkPointLocator *locator, vtkCellArray *verts, vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd)
int | EvaluatePosition (float x[3], float *closestPoint, int &subId, float pcoords[3], float &dist2, float *weights)
void | EvaluateLocation (int &subId, float pcoords[3], float x[3], float *weights)
int | Triangulate (int index, vtkIdList *ptIds, vtkPoints *pts)
void | Derivatives (int subId, float pcoords[3], float *values, int dim, float *derivs)
void | Clip (float value, vtkDataArray *cellScalars, vtkPointLocator *locator, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, int insideOut)
int | IntersectWithLine (float p1[3], float p2[3], float tol, float &t, float x[3], float pcoords[3], int &subId)
## Static Public Methods
vtkTriangle * | New ()
int | IsTypeOf (const char *type)
vtkTriangle * | SafeDownCast (vtkObject *o)
float | TriangleArea (float p1[3], float p2[3], float p3[3])
void | ComputeNormal (float v1[3], float v2[3], float v3[3], float n[3])
void | TriangleCenter (float p1[3], float p2[3], float p3[3], float center[3])
double | Circumcircle (double p1[2], double p2[2], double p3[2], double center[2])
int | BarycentricCoords (double x[2], double x1[2], double x2[2], double x3[2], double bcoords[3])
int | ProjectTo2D (double x1[3], double x2[3], double x3[3], double v1[2], double v2[2], double v3[2])
void | ComputeNormal (vtkPoints *p, int numPts, vtkIdType *pts, float n[3])
void | ComputeNormalDirection (float v1[3], float v2[3], float v3[3], float n[3])
void | ComputeNormal (double v1[3], double v2[3], double v3[3], double n[3])
void | ComputeNormalDirection (double v1[3], double v2[3], double v3[3], double n[3])
int | PointInTriangle (float x[3], float x1[3], float x2[3], float x3[3], float tol2)
void | ComputeQuadric (float x1[3], float x2[3], float x3[3], float quadric[4][4])
void | ComputeQuadric (float x1[3], float x2[3], float x3[3], vtkQuadric *quadric)
## Protected Methods
| vtkTriangle ()
| ~vtkTriangle ()
## Protected Attributes
vtkLine * | Line

## Member Typedef Documentation

typedef vtkCell vtkTriangle::Superclass

| Reimplemented from vtkCell. Definition at line 60 of file vtkTriangle.h.

## Constructor & Destructor Documentation

vtkTriangle::vtkTriangle | ( |  | ) | `[protected]`

vtkTriangle::~vtkTriangle | ( |  | ) | `[protected]`

## Member Function Documentation

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.

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.

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 71 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 72 of file vtkTriangle.h.

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

| See the vtkCell API for descriptions of these methods. Implements vtkCell. Definition at line 73 of file vtkTriangle.h.

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

| See the vtkCell API for descriptions of these methods. Implements vtkCell. Definition at line 74 of file vtkTriangle.h.

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

| See the vtkCell API for descriptions of these methods. Implements vtkCell. Definition at line 75 of file vtkTriangle.h.

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

| See the vtkCell API for descriptions of these methods. Implements vtkCell.

void vtkTriangle::Contour | ( | float | 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 | ( | float | x[3],
|  | float * | closestPoint,
|  | int & | subId,
|  | float | pcoords[3],
|  | float & | dist2,
|  | float * | weights
| ) | `[virtual]`

| See the vtkCell API for descriptions of these methods. Implements vtkCell.

void vtkTriangle::EvaluateLocation | ( | int & | subId,
|  | float | pcoords[3],
|  | float | x[3],
|  | float * | 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,
|  | float | pcoords[3],
|  | float * | values,
|  | int | dim,
|  | float * | derivs
| ) | `[virtual]`

| See the vtkCell API for descriptions of these methods. Implements vtkCell.

void vtkTriangle::Clip | ( | float | 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 | ( | float | p1[3],
|  | float | p2[3],
|  | float | tol,
|  | float & | t,
|  | float | x[3],
|  | float | 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 | ( | float | pcoords[3] | ) | `[inline, virtual]`

| Return the center of the triangle in parametric coordinates. Reimplemented from vtkCell. Definition at line 218 of file vtkTriangle.h.

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

| Compute the center of the triangle. Definition at line 282 of file vtkTriangle.h.

float vtkTriangle::TriangleArea | ( | float | p1[3],
|  | float | p2[3],
|  | float | p3[3]
| ) | `[inline, static]`

| Compute the area of a triangle in 3D. Definition at line 290 of file vtkTriangle.h. References vtkMath::Distance2BetweenPoints().

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

| Compute the circumcenter (center[3]) and radius (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.)

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.

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.

void vtkTriangle::ComputeNormal | ( | vtkPoints * | p,
|  | int | numPts,
|  | vtkIdType * | pts,
|  | float | 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 | ( | float | v1[3],
|  | float | v2[3],
|  | float | v3[3],
|  | float | n[3]
| ) | `[inline, static]`

| Compute the triangle normal from three points. Definition at line 238 of file vtkTriangle.h. References ComputeNormalDirection().

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

| Compute the (unnormalized) triangle normal direction from three points. Definition at line 224 of file vtkTriangle.h. Referenced by ComputeNormal().

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

| Compute the triangle normal from three points (double-precision version). Definition at line 267 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 (double precision version). Definition at line 253 of file vtkTriangle.h.

int vtkTriangle::PointInTriangle | ( | float | x[3],
|  | float | x1[3],
|  | float | x2[3],
|  | float | x3[3],
|  | float | 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.

void vtkTriangle::ComputeQuadric | ( | float | x1[3],
|  | float | x2[3],
|  | float | x3[3],
|  | float | 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")

void vtkTriangle::ComputeQuadric | ( | float | x1[3],
|  | float | x2[3],
|  | float | 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 211 of file vtkTriangle.h.

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

- Common/vtkTriangle.h