UNPKG

@kitware/vtk.js

Version:

Visualization Toolkit for the Web

333 lines (287 loc) 10.4 kB
import { mat4, quat } from 'gl-matrix'; import { Bounds, Vector3, Range } from './../../types'; import vtkProp, { IPropInitialValues } from './Prop'; import { vtkObject } from './../../interfaces'; export interface IProp3DInitialValues extends IPropInitialValues { origin?: number[]; position?: Vector3; orientation?: number[]; scale?: number[]; bounds?: Bounds; isIdentity?: boolean; } export interface vtkProp3D extends vtkProp { /** * Add the position of the Prop3D in world coordinates. * @param deltaXYZ */ addPosition(deltaXYZ: number[]): void; /** * Get the bounds of this actor as [xmin, xmax, ymin, ymax, zmin, zmax]. * They are the bounds of the underlying mapper, transformed using the actor's matrix. * @return {Bounds} The bounds for the actor. */ getBounds(): Bounds; /** * Same as getBounds() but the returned array is not copied, so it should not be written to. */ getBoundsByReference(): Bounds; /** * Check if there was a modification or transformation. * @default null * @return {Boolean} true if no modification/transformation have been set. */ getIsIdentity(): boolean; /** * The ordering in which these rotations must be done to generate the same * matrix is RotateZ, RotateX, and finally RotateY. See also `SetOrientation`. * @return {Number[]} the orientation of the Prop3D as s vector of X, Y and Z rotation. */ getOrientation(): number[]; /** * Get a reference of the orientation of the Prop3D as s vector of X, Y and Z * rotation. * @return {Number[]} the orientation of the Prop3D as s vector of X, Y and Z rotation. */ getOrientationByReference(): number[]; /** * Get the WXYZ orientation of the Prop3D. */ getOrientationWXYZ(): number[]; /** * Get the origin of the Prop3D. This is the point about which all rotations * take place. */ getOrigin(): number[]; /** * Get a reference of the origin of the Prop3D. This is the point about * which all rotations take place. */ getOriginByReference(): number[]; /** * Get the position of the Prop3D in world coordinates. */ getPosition(): number[]; /** * Get a refrence of the position of the Prop3D in world coordinates. */ getPositionByReference(): number[]; /** * Get the scale of the actor. */ getScale(): number[]; /** * Get a refrence of the scale of the actor. */ getScaleByReference(): number[]; /** * Get the WXYZ orientation of the Prop3D. */ getOrientationWXYZ(): number[]; /** * Get the orientation quaternion of the Prop3D. * out is optional and will be created if not supplied. * @param {quat | undefined} out */ getOrientationQuaternion(out?: quat): quat; /** * Get a reference to the Prop3D’s 4x4 composite matrix. * Get the matrix from the position, origin, scale and orientation This * matrix is cached, so multiple GetMatrix() calls will be efficient. */ getMatrix(): mat4; /** * Get the center of the bounding box in world coordinates. */ getCenter(): number[]; /** * Get the length of the diagonal of the bounding box. */ getLength(): number; /** * Get the Prop3D's x range in world coordinates. */ getXRange(): Range; /** * Get the Prop3D's y range in world coordinates. */ getYRange(): Range; /** * Get the Prop3D's z range in world coordinates. */ getZRange(): Range; /** * Get the transformation matrix set for your own use. */ getUserMatrix(): mat4; /** * Get the actor property for the specified mapper input port, which defaults to 0 * It controls this actors rendering properties. If one isn’t specified, * then one will be generated automatically. Multiple actors can share one * property object. * @param {number} mapperInputPort Defaults to 0 */ getProperty(mapperInputPort?: number): vtkObject; /** * Get the actor properties array * Each element of the array corresponds to a mapper input port */ getProperties(): vtkObject[]; /** * Rotate the Prop3D in degrees about the X axis using the right hand * rule. The axis is the Prop3D’s X axis, which can change as other * rotations are performed. To rotate about the world X axis use * RotateWXYZ (angle, 1, 0, 0). This rotation is applied before all * others in the current transformation matrix. * @param {Number} angle The angle value. */ rotateX(angle: number): void; /** * Rotate the Prop3D in degrees about the Y axis using the right hand * rule. The axis is the Prop3D’s Y axis, which can change as other * rotations are performed. To rotate about the world Y axis use * RotateWXYZ (angle, 0, 1, 0). This rotation is applied before all * others in the current transformation matrix. * @param {Number} angle The angle value. */ rotateY(angle: number): void; /** * Rotate the Prop3D in degrees about the Z axis using the right hand * rule. The axis is the Prop3D’s Z axis, which can change as other * rotations are performed. To rotate about the world Z axis use * RotateWXYZ (angle, 0, 0, 1). This rotation is applied before all * others in the current transformation matrix. * @param {Number} angle The angle value. */ rotateZ(angle: number): void; /** * Rotate the Prop3D in degrees about an arbitrary axis specified by * the last three arguments. The axis is specified in world * coordinates. To rotate an about its model axes, use RotateX, * RotateY, RotateZ. * @param {Number} degrees The angle value. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ rotateWXYZ(degrees: number, x: number, y: number, z: number): void; /** * Rotate the Prop3D by the provided orientation quaternion. * If the provided quaternion is identity (~epsilon), this function does nothing. * The quaternion should follow the gl-matrix convention: [x,y,z,w] * @param {quat} orientationQuaternion The quaternion to rotate the prop by. */ rotateQuaternion(orientationQuaternion: quat): void; /** * Orientation is specified as X, Y and Z rotations in that order, * but they are performed as RotateZ, RotateX, and finally RotateY. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setOrientation(x: number, y: number, z: number): boolean; /** * Set the origin of the Prop3D. This is the point about which all rotations take place. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setOrigin(x: number, y: number, z: number): boolean; /** * Set the origin of the Prop3D. This is the point about which all rotations * take place. * @param {Number[]} origin */ setOrigin(origin: number[]): boolean; /** * Set the origin of the Prop3D. This is the point about which all rotations * take place. * @param {Number[]} origin */ setOriginFrom(origin: number[]): boolean; /** * Set the origin of the Prop3D. * This is the point about which all rotations take place. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setPosition(x: number, y: number, z: number): boolean; /** * Set the origin of the Prop3D. * @param {Vector3} position */ setPositionFrom(position: Vector3): boolean; /** * Set the scale of the actor. * Scaling in performed independently on the X, Y and Z axis. A scale of zero is illegal and will be replaced with one. * @param {Number} x The x coordinate. * @param {Number} y The y coordinate. * @param {Number} z The z coordinate. */ setScale(x: number, y: number, z: number): boolean; /** * * @param {Number[]} scale */ setScaleFrom(scale: number[]): boolean; /** * In addition to the instance variables such as position and orientation, * you can add an additional transformation matrix for your own use. This * matrix is concatenated with the actor's internal matrix, which you * implicitly create through the use of setPosition(), setOrigin() and * setOrientation(). * @param {mat4} matrix */ setUserMatrix(matrix: mat4): void; /** * Generate the matrix based on internal model. */ computeMatrix(): void; /** * Set the actor property for the specified mapper input port, which defaults to 0 * @param {vtkObject} property * @param {number} mapperInputPort Is 0 when not given */ setProperty(mapperInputPort: number, property: vtkObject): boolean; setProperty(property: vtkObject): boolean; /** * Set the actor properties array * Each element of the array corresponds to a mapper input port * @param {vtkObject[]} properties */ setProperties(properties: vtkObject[]): boolean; } /** * Method use to decorate a given object (publicAPI+model) with vtkProp3D characteristics. * * @param publicAPI object on which methods will be bounds (public) * @param model object on which data structure will be bounds (protected) * @param {IProp3DInitialValues} [initialValues] (default: {}) */ export function extend( publicAPI: object, model: object, initialValues?: IProp3DInitialValues ): void; /** * Method use to create a new instance of vtkProp3D * @param {IProp3DInitialValues} [initialValues] for pre-setting some of its content */ export function newInstance(initialValues?: IProp3DInitialValues): vtkProp3D; /** * vtkProp3D is an abstract class used to represent an entity in a rendering * scene (i.e., vtkProp3D is a vtkProp with an associated transformation * matrix). It handles functions related to the position, orientation and * scaling. It combines these instance variables into one 4x4 transformation * matrix as follows: [x y z 1] = [x y z 1] Translate(-origin) Scale(scale) * Rot(y) Rot(x) Rot (z) Trans(origin) Trans(position). Both vtkActor and * vtkVolume are specializations of class vtkProp. The constructor defaults * to: origin(0,0,0) position=(0,0,0) orientation=(0,0,0), no user defined * matrix or transform, and no texture map. */ export declare const vtkProp3D: { newInstance: typeof newInstance; extend: typeof extend; }; export default vtkProp3D;