pfdAlignVerticesToASD, pfdProjectVerticesOnASD(3pf)NAME
pfdAlignVerticesToASD, pfdProjectVerticesOnASD - Align an array of
vertices to pfASD geometry.
FUNCTION SPECIFICATION
#include <Performer/pfdu.h>
void pfdAlignVerticesToASD( pfASD *asd, pfVec3 *_v, int _nofVertices,
float *_base, float *_down, float *_azimuth,
unsigned long _opcode, pfVec3 *_v_aligned);
void pfdProjectVerticesOnASD(pfASD *asd, pfVec3 *_v, int _nofVertices,
float *_projection, float *_down, pfVec3 *_v_projected);
DESCRIPTION
pfdAlignVerticesToASD takes an array of vertices _v and returns an array
of vertices _v_aligned. The two array pointers may points to the same
array.
pfdAlignVerticesToASD starts by projecting _base on the pfASD finest
level of detail, in direction _down. The projection point (p) and the
surface normal (n) at the point are used to align the input points.
pfdAlignVerticesToASD supports a number of operations on the input
vertics. _opcode specifies a bitwise OR of the desired operation. It may
contain the bits:
PR_ALIGN_TRANSLATE
- Translate all the points by p.
PR_ALIGN_NORMAL
- Rotate all input points to bring the Z axis to n, and the X
axis to the projection of _azimuth on the plane of n. This is
useful for aligning objects that follow the surface (e.g. cars
on terrain).
PR_ALIGN_AZIMUTH
- Rotate all input points to bring the Z axis to (- _down), and
the X axis to the projection of _azimuth on the plane of (-
_down). This is useful for aligning objects with a fixed UP
orientation (e.g. buildings on terrain).
PR_ALIGN_AXIS_BILLBOARD
- Rotate all input points to bring the Z axis to (- _down), and
the Y axis to the projection of _azimuth on the plane of (-
_down). This is useful for aligning pfBillboard objects with a
fixed UP orientation (e.g. trees on terrain).
pfdAlignVerticesToASD should be used to align objects to a pfASD finest
level of detail before projecting their shadow in the pfASD surface.
Page 1
pfdAlignVerticesToASD, pfdProjectVerticesOnASD(3pf)pfdProjectVerticesOnASD projects a list of vertices on the finest level
of detail of asd. Its input and output lists of vertices, _v and
_v_projected, may point to the same array. pfdProjectVerticesOnASD uses
the direction vector _down to determine whether a vertex falls under the
surface. Such vertices are clamped to the surface, and their projection
is set to the clampped point. _projection is the direction for projecting
all the input vertices.
The combination of pfdAlignVerticesToASD and pfdProjectVerticesOnASD is
useful for casting the shadow of geometry on pfASD surfaces. The results
of inviking these routines in a row on some geomtry is an outline of a
shadow. This outline may then be used as pfASD query triangles (see
pfASD man page)..
The libpfdu source code, object code and documentation are provided as
unsupported software. Routines are subject to change in future releases.
SEE ALSO
pfASD, pfTerrain, pfdExtractGraphTriangles
Page 2