import { Point3d } from "./Point3dVector3d"; import { Transform } from "./Transform"; /** * 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) * @public */ export declare class SmoothTransformBetweenFrusta { private _localCornerA; private _localCornerB; private _localToWorldA; private _localToWorldB; /** (property accessor) rigid frame at start of motion */ get localToWorldA(): Transform; /** (property accessor) rigid frame at end of motion */ get localToWorldB(): Transform; private _rotationAxis; private _rotationAngle; /** * CAPTURE local corners, pickup and putdown frames, and rotation-around-vector data * @param localCornerA * @param localCornerB * @param localToWordA * @param localToWordB * @param rotationAxis * @param rotationAngle */ private constructor(); /** * Set up rotation data for smooth transition from 8 point frusta cornerA and cornerB * @param cornerA * @param cornerB */ static create(cornerA: Point3d[], cornerB: Point3d[], preferSimpleRotation?: boolean): SmoothTransformBetweenFrusta | undefined; /** interpolate local corner coordinates at fractional move from m_localFrustum0 to m_localFrustum1 */ interpolateLocalCorners(fraction: number, result?: Point3d[]): Point3d[]; /** * After initialization, call this for various intermediate fractions. * The returned corner points are in world coordinates "between" start and end positions. */ fractionToWorldCorners(fraction: number, result?: Point3d[]): Point3d[]; } //# sourceMappingURL=FrustumAnimation.d.ts.map