SmoothTransformBetweenFrusta Class

context for constructing smooth motion a startFrustum and endFrustum. The externally interesting calls are

  • Create a context to shift corner0 to corner1, with the(NPC coordinate) point(fractionU, fractionV, fractionW) moving along its connecting segment, all other points rotating smoothly from the start orientation to end orientation: const context = SmoothTransformBetweenFrusta (cornerA, cornerB)
  • Get any intermediate 8 corners(at fraction) with context.fractionToWorldCorners(fraction)
  • Frustum corners are ordered by "x varies fastest, then y, then z", hence (xyz) order on nondimensional space is
    • (left lower rear) (000)
    • (right lower rear) (100)
    • (left upper rear) (010)
    • (right upper rear) (100)
    • (left lower front) (001)
    • (right lower front) (101)
    • (left upper front) (011)
    • (right upper front) (101)
  • which uses names
    • (left,right) for horizontal (x)
    • (bottom, top) for vertical (y)
    • (rear, front) for back and front planes (z)

Methods

Name Description
fractionToWorldCorners(fraction: number, result?: Point3d[]): Point3d[] After initialization, call this for various intermediate fractions.  
interpolateLocalCorners(fraction: number, result?: Point3d[]): Point3d[] interpolate local corner coordinates at fractional move from m_localFrustum0 to m_localFrustum1  
create(cornerA: Point3d[], cornerB: Point3d[], preferSimpleRotation: boolean = true): undefined | SmoothTransformBetweenFrusta Static Set up rotation data for smooth transition from 8 point frusta cornerA and cornerB  

Properties

Name Type Description
localToWorldA Accessor ReadOnly Transform (property accessor) rigid frame at start of motion  
localToWorldB Accessor ReadOnly Transform (property accessor) rigid frame at end of motion  

Defined in

Last Updated: 12 June, 2024