<<< Frustrum Functions | Chapters | PK_DELTA Functions >>> |
This appendix contains the specifications of the Graphical Output functions; these render graphical data generated by the PK line drawing functions:
The arguments have the following significance.
The type of the segment; one of the following values:
An array of tags associated with the segment. The tags given depend upon the segment type as follows:
If edges, silhouettes or hatchlines are output hierarchically then the tag information is given by GOOPSG and GOCLSG.
When rendering a list of entities Parasolid may encounter a body, face or edge which it is unable to render (e.g. a rubber face). In such a case, Parasolid outputs an error segment (SGTPER), giving the tag of the bad entity and a code indicating why it was unable to render it, and then continue to render the remaining entities.
If user tolerances can't be matched during faceting, or facets are created which self intersect or are severely creased, then geometric data is output as a segment type SGTPMF. In this case, the facets are always triangular.
This does not apply to geometry (i.e. SGTPGC, SGTPGS and SGTPGB). These are never replaced by error segments, unrenderable geometry segments are not output at all.
If edges/silhouettes/hatchlines are being output hierarchically then GOSGMT is called to output the whole geometry of the item (optional) and again to output the positions at which the visibility changes on the item (a visibility segment).
If regional data was requested in a hidden line drawing two further tags are given for SGTPED and SGTPSI segments, identifying the faces either side of the line in the image. Either or both face tags may be null.
If edge tags were requested in a faceted drawing, for each edge of the facet the tag of the model edge from which it was derived is given; or a null tag if it is not derived from a model edge. The number of edge tags given equals the number of vertices given in
geom
. The first edge tag ( tags[1] ) is the tag of the edge from which is derived the first facet edge (which ends at the first vertex given in
geom
). The second edge tag is for the facet edge which ends at the second vertex, and so on.
If facet strips have been requested in a faceted drawing the format for the edge tags is as follows:
An array of reals giving the geometry of the segment.
The values given depend upon the type of the geometry, as specified in the second element of
lntp
.
L3TPSL - straight line: ngeom = 9
L3TPCC - complete circle: ngeom = 7
The forward direction of the circle is clockwise when viewing the circle along the axis direction.
L3TPCI - circular arc: ngeom = 13
The forward direction of the circle is as given above.
L3TPCE - complete ellipse: ngeom = 11
The forward direction of the ellipse is clockwise when viewing the ellipse along the axis direction. The axis direction is the vector cross product of the major axis with the minor axis in that order.
L3TPEL - elliptical arc: ngeom = 17
The forward direction of the ellipse is as given above.
L3TPPC - non-rational B-curve in Bezier form:
geom
holds
ngeom
vectors of dimension 3.
These are the Bezier vertices of the curve.
L3TPRC - rational B-curve in Bezier form:
geom
holds
ngeom
vectors of dimension 4.
These are the Bezier vertices of the curve, where each Bezier vertex consists of a 3-space point and a weight.
L3TPNC - non-rational B-curve in NURBs form:
geom
holds
ngeom
reals. These consist of:
So
ngeom = 3 (lntp[9]) + lntp[10])
.
L3TPRN - rational B-curve in NURBs form:
geom
holds
ngeom
reals. These consist of:
So
ngeom = 4 (lntp[9]) + lntp[10])
.
geom
holds
ngeom
vectors defining the vertices of a facet.
L3TPFN - facet vertices + surface normals:
ngeom
/2 vectors defining the vertices of a facet
ngeom
/2 vectors defining the surface normals at the verticesL3TPFP - facet vertices + parameters
ngeom
/2 vectors defining the vertices of a facet
ngeom
/2 vectors defining the surface and curve parameters (u,v,t) of the vertexL3TPFI - facet vertices + normals + parameters
ngeom
/3 vectors defining the vertices of a facet
ngeom
/3 vectors defining the surface normals at the vertices
ngeom
/3 vectors defining the surface and curve parameters (u,v,t) of the vertexL3TPF1 - facet vertices + normals + parameters + 1st derivs
ngeom
/5 vectors defining the vertices of a facet
ngeom
/5 vectors defining the surface normals at the vertices
ngeom
/5 vectors defining the surface and curve parameters (u,v,t) of the vertex
ngeom
/5 vectors defining the dP/du surface derivatives at the vertices
ngeom
/5 vectors defining the dP/dv surface derivatives at the verticesL3TPF2 - facet vertices + normals + parameters + all derivs
ngeom
/8 vectors defining the vertices of a facet
ngeom
/8 vectors defining the surface normals at the vertices
ngeom
/8 vectors defining the surface and curve parameters (u,v,t) of the vertex
ngeom
/8 vectors defining the dP/du surface derivatives at the vertices
ngeom
/8 vectors defining the dP/dv surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/du2surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/dudv surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/dv2 surface derivatives at the verticesL3TPTS - facet strip vertices:
geom
holds
ngeom
vectors defining the vertices of a facet strip.
L3TPTN - facet strip vertices plus surface normals:
ngeom
/2 vertices defining the vertices of a facet strip
ngeom
/2 vectors defining the surface normals at the verticesL3TPTP - facet strip vertices plus parameters:
ngeom
/2 vectors defining the vertices of a facet strip
ngeom
/2 vectors defining the surface and curve parameters (u,v,t) of the vertexL3TPTI - facet strip vertices plus normals plus parameters:
ngeom
/3 vectors defining the vertices of a facet strip
ngeom
/3 vectors defining the surface normals
ngeom
/3 vectors defining the parameters of the vertexL3TPT1 - facet strip vertices + normals + parameters + 1st derivs
ngeom
/5 vectors defining the vertices of a facet
ngeom
/5 vectors defining the surface normals at the vertices
ngeom
/5 vectors defining the surface and curve parameters (u,v,t) of the vertex
ngeom
/5 vectors defining the dP/du surface derivatives at the vertices
ngeom
/5 vectors defining the dP/dv surface derivatives at the verticesL3TPT2 - facet strip vertices + normals + parameters + all derivs
ngeom
/8 vectors defining the vertices of a facet
ngeom
/8 vectors defining the surface normals at the vertices
ngeom
/8 vectors defining the surface and curve parameters (u,v,t) of the vertex
ngeom
/8 vectors defining the dP/du surface derivatives at the vertices
ngeom
/8 vectors defining the dP/dv surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/du2surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/dudv surface derivatives at the vertices
ngeom
/8 vectors defining the d2P/dv2 surface derivatives at the verticesIf a facet has multiple loops the outer loop is output first and the inner loops follow. The vertices of the outer loop are ordered anticlockwise when viewed down the surface normal. The vertices of inner loops are ordered clockwise. Facets are manifold; i.e. no vertex coincides with any other in the same facet, nor does it lie in any edge in the same facet.
For facet strips the vertices of the first facet in the strip are held in elements 0, 1 and 2 of
geom
and are ordered anticlockwise when viewed down the surface normal. The vertices of the second facet are held in elements 1, 2 and 3 and are ordered clockwise. The vertices of the n-th facet are held in elements n-1, n and n+1 and are ordered anticlockwise if n is odd and clockwise if n is even. If lntp[1] is L3TPTS then the number of facets in a strip is given by
ngeom
-2. If lntp[1] is L3TPTN then the number of facets is given by
ngeom
/2 - 2.
For visibility segments (SGTPVT/SGTPVP) geom contains the visibility transition points (i.e. vectors in model space at which the edge changes visibility). Segments of type SGTPVP contain parameters as well. If the edge has only one visibility then no geometry is output.
The geometry array in an unparametrised (SGTPVT) visibility segment holds a sequence of sets of three doubles (x, y, z,) corresponding to the vector position of the transition points in model space.
The geometry array in a parametrised (SGTPVP) visibility segment holds a sequence of sets of four doubles (x, y, z, t) corresponding to the vector position of the transition points and their parameter on the geometry segment.
For error segments (SGTPER)
ngeom
is zero.
An array of integers specifying the type of geometry of the segment and other codes as follows:
lntp[0] - Occurrence number of the entity from which the segment was derived.
lntp[1] - Reason why Parasolid is unable to render the entity:
If the segment type is SGTPVT or SGTPVP
See "Visibility Segment: SGTPVT" in Chapter 4, "Graphical Output", for more detail.
lntp[1] - Geometry type; one of the values:
If the geometry type is anything except L3TPFV, L3TPFN, L3TPTS or L3TPTN:
lntp[2] - Completeness; one of the values:
lntp[3] - Visibility; one of the values:
lntp[4] - Smoothness; one of the values
lntp[5] - Internal edge; one of the values
If segtyp is SGTPGC, SGTPGS or SGTPGB then lntp[2..5] are always
If regional data was requested in a call to hidden line drawing, lntp[6] and lntp[7] contain start and end point indices for SGTPED and SGTPSI segments. The indices uniquely identify the image points at each end of the segment.
If the geometry type is L3TPF*:
If the geometry type is L3TPT*:
If the geometry type is L3TPPC or L3TPRC:
If the geometry type is L3TPNC or L3TPRN:
If segtyp is SGTPMF there is one loop consisting of three vertices.
If segtyp type is SGTPSI then the last element in the lntp array is the silhouette label.
A code indicating whether the Frustrum wants to abort graphic output; one of the values
The arguments have the following significance.
The type of the segment; one of the following values:
An array of tags associated with the segment. The tags given depend upon the segment type as follows:
An array of reals giving the geometry of the segment. The geometry given depends upon the segment type as follows:
model space box of the body, given as two vectors: (xmin, ymin, zmin), (xmax, ymax, zmax) |
|
occurrence number of the entity from which the segment was derived |
|
A code indicating whether the Frustrum wants to abort graphic output; one of the values:
The arguments have the following significance:
The type of the segment; one of the following values:
An array of tags associated with the segment. The tags given depend upon the segment type as follows:
An array of reals giving the geometry of the segment. The geometry given depends upon the segment type as follows:
model space box of the body, given as two vectors: (xmin, ymin, zmin), (xmax, ymax, zmax) |
|
Occurrence number of the entity from which the segment was derived |
|
A code indicating whether the Frustrum wants to abort graphic output; one of the values:
<<< Frustrum Functions | Chapters | PK_DELTA Functions >>> |