PolyfaceVisitor Interface

A PolyfaceVisitor manages data while walking through facets.

  • The polyface visitor holds data for one facet at a time.
  • The caller can request the position in the addressed facets as a "readIndex."
  • The readIndex value (as a number) is not promised to be sequential. (I.e. it might be a simple facet count or might be


Implemented by


Name Description
clearArrays(): void clear the contents of all arrays.  
clientAuxIndex(i: number): number Return the aux data index of vertex i within the currently loaded facet  
clientColorIndex(i: number): number Return the color index of vertex i within the currently loaded facet  
clientNormalIndex(i: number): number Return the normal index of vertex i within the currently loaded facet  
clientParamIndex(i: number): number Return the param index of vertex i within the currently loaded facet  
clientPointIndex(i: number): number Return the point index of vertex i within the currently loaded facet  
clientPolyface(): Polyface return the client polyface  
currentReadIndex(): number Return the readIndex of the currently loaded facet  
moveToNextFacet(): boolean Load data for the next facet.  
moveToReadIndex(index: number): boolean Load data for the facet with given index.  
pushDataFrom(other: PolyfaceVisitor, index: number): void transfer data from a specified index of the other visitor as new data in this visitor.  
pushInterpolatedDataFrom(other: PolyfaceVisitor, index0: number, fraction: number, index1: number): void transfer interpolated data from the other visitor.  
reset(): void Reset to initial state for reading all facets sequentially with moveToNextFacet  
setNumWrap(numWrap: number): void Set the number of vertices to replicate in visitor arrays.  

Inherited methods

Name Inherited from Description
constructor(needNormals: boolean = false, needParams: boolean = false, needColors: boolean = false, twoSided: boolean = false): PolyfaceVisitor PolyfaceData Constructor for facets.
clone(): PolyfaceData PolyfaceData Return a depp clone.
compress(): void PolyfaceData * Search for duplication of coordinates within points, normals, and params.
copyNormalTo(i: number, dest: Vector3d): void PolyfaceData Copy the contents (not pointer) of normal[i] into dest.
copyParamTo(i: number, dest: Point2d): void PolyfaceData Copy the contents (not pointer) of param[i] into dest.
copyPointTo(i: number, dest: Point3d): void PolyfaceData Copy the contents (not pointer) of point[i] into dest.
gatherIndexedData(other: PolyfaceData, index0: number, index1: number, numWrap: number): void PolyfaceData * Copy data from other to this.
getColor(i: number): number PolyfaceData return indexed color
getEdgeVisible(i: number): boolean PolyfaceData return indexed visibility
getNormal(i: number): Vector3d | undefined PolyfaceData return indexed normal.
getParam(i: number): Point2d | undefined PolyfaceData return indexed param.
getPoint(i: number): Point3d | undefined PolyfaceData return indexed point.
isAlmostEqual(other: PolyfaceData): boolean PolyfaceData Test for equal indices and nearly equal coordinates
isAlmostEqualParamIndexUV(index: number, u: number, v: number): boolean PolyfaceData test if normal at a specified index matches uv
range(result?: Range3d, transform?: Transform): Range3d PolyfaceData Return the range of the point array (optionally transformed)
resizeAllDataArrays(length: number): void PolyfaceData Resize all data arrays to specified length
reverseIndices(facetStartIndex?: number[]): void PolyfaceData reverse indices facet-by-facet, with the given facetStartIndex array delimiting faces.
reverseNormals(): void PolyfaceData Scale all the normals by -1
trimAllIndexArrays(length: number): void PolyfaceData Trim all index arrays to stated length.
tryTransformInPlace(transform: Transform): boolean PolyfaceData Apply transform to point and normal arrays.
isValidFacetStartIndexArray(facetStartIndex: number[]): boolean Static PolyfaceData Test if facetStartIndex is (minimally!) valid:
length must be nonzero (recall that for "no facets" the facetStartIndexArray still must contain a 0)
Each entry must be strictly smaller than the one that follows.
reverseIndices<T>(facetStartIndex: number[], indices: T[] | undefined, preserveStart: boolean): boolean Static PolyfaceData Reverse data in facet indexing arrays.

Inherited properties

Name Type Inherited from Description
auxData PolyfaceAuxData | undefined PolyfaceData Auxiliary data
color number[] | undefined PolyfaceData Color values.
colorIndex number[] | undefined PolyfaceData Indices of colors at facet vertices.
edgeVisible boolean[] PolyfaceData booleans indicating visibility of corresponding edges
face FacetFaceData[] PolyfaceData Face data will remain empty until a face is specified.
normal GrowableXYZArray | undefined PolyfaceData Coordinates of normal vectors, packed as numbers in a contiguous array
normalIndex number[] | undefined PolyfaceData indices of normals at facet vertices.
param undefined | GrowableXYArray PolyfaceData Coordinates of uv parameters, packed as numbers in a contiguous array.
paramIndex number[] | undefined PolyfaceData Indics of params at facet vertices.
point GrowableXYZArray PolyfaceData Coordinate data for points in the facets, packed as numbers in a contiguous array.
pointIndex number[] PolyfaceData Indices of points at facet vertices.
colorCount Accessor ReadOnly number PolyfaceData Get the color count
faceCount Accessor ReadOnly number PolyfaceData Get the number of faces.
Note that a "face" is not a facet.
A "face" is a subset of facets grouped for application purposes.
indexCount Accessor ReadOnly number PolyfaceData Get the index count. Note that there is one count, and all index arrays (point, normal, param, color) must match
normalCount Accessor ReadOnly number PolyfaceData Get the normal count
paramCount Accessor ReadOnly number PolyfaceData Get the param count
pointCount Accessor ReadOnly number PolyfaceData Get the point count
requireNormals Accessor ReadOnly boolean PolyfaceData Ask if normals are required in this mesh.
twoSided Accessor boolean PolyfaceData boolean tag indicating if the facets are viewable from the back

Defined in

Last Updated: 01 November, 2019