@itwin/core-common
Version:
iTwin.js components common to frontend and backend
99 lines • 4.36 kB
TypeScript
/** @packageDocumentation
* @module Geometry
*/
import { Angle, Matrix3d, Point2d, Point3d, Range2d, Range3d, Range3dProps, Transform, YawPitchRollAngles } from "@itwin/core-geometry";
import { Placement2dProps, Placement3dProps } from "../ElementProps";
import { Frustum } from "../Frustum";
/** A Range3d that is aligned with the axes of spatial coordinates.
* @public
* @extensions
*/
export type AxisAlignedBox3d = Range3d;
/** The properties of a Range3d.
* @public
* @extensions
*/
export type AxisAlignedBox3dProps = Range3dProps;
/** A bounding box aligned to the orientation of a 3d Element
* @public
* @extensions
*/
export type ElementAlignedBox3d = Range3d;
/** A bounding box aligned to the orientation of a 2d Element
* @public
* @extensions
*/
export type ElementAlignedBox2d = Range2d;
/** A bounding box aligned to a local coordinate system
* @public
* @extensions
*/
export type LocalAlignedBox3d = Range3d;
/** Either a Placement2d or Placement3d
* @public
* @extensions
*/
export type Placement = Placement2d | Placement3d;
/** The placement of a GeometricElement3d. This includes the origin, orientation, and size (bounding box) of the element.
* All geometry of a GeometricElement are relative to its placement.
* @public
*/
export declare class Placement3d implements Placement3dProps {
origin: Point3d;
angles: YawPitchRollAngles;
bbox: ElementAlignedBox3d;
constructor(origin: Point3d, angles: YawPitchRollAngles, bbox: ElementAlignedBox3d);
/** Get the rotation from local coordinates of this placement to world coordinates. */
get rotation(): Matrix3d;
/** Get the transform from local coordinates of this placement to world coordinates. */
get transform(): Transform;
/** determine if this is 3d placement */
get is3d(): boolean;
/** Create a new Placement3d from a Placement3dProps. */
static fromJSON(json?: Placement3dProps): Placement3d;
/** Get the 8 corners, in world coordinates, of this placement. */
getWorldCorners(out?: Frustum): Frustum;
/** Set the contents of this Placement3d from another Placement3d */
setFrom(other: Placement3d): void;
/** Determine whether this Placement3d is valid. */
get isValid(): boolean;
/** Calculate the axis-aligned bounding box for this placement. */
calculateRange(): AxisAlignedBox3d;
/** Multiply the Transform of this Placement3d by the specified *other* Transform.
* * Specifically `this.angles` is set to the rotation specified by `other.matrix * this.transform.matrix`
* and `this.origin` is set to the origin of `other * this.transform`.
* * Since the placement transform is local-to-world, this means `other` is a world-to-world transform.
* @throws [[IModelError]] if the Transform is invalid for a GeometricElement3d.
*/
multiplyTransform(other: Transform): void;
}
/** The placement of a GeometricElement2d. This includes the origin, rotation, and size (bounding box) of the element.
* @public
*/
export declare class Placement2d implements Placement2dProps {
origin: Point2d;
angle: Angle;
bbox: ElementAlignedBox2d;
constructor(origin: Point2d, angle: Angle, bbox: ElementAlignedBox2d);
/** Get the rotation from local coordinates of this placement to world coordinates. */
get rotation(): Matrix3d;
/** Get the transform from local coordinates of this placement to world coordinates. */
get transform(): Transform;
/** Create a new Placement2d from a Placement2dProps. */
static fromJSON(json?: Placement2dProps): Placement2d;
/** determine if this is 3d placement */
get is3d(): boolean;
/** Get the 8 corners, in world coordinates, of this placement. */
getWorldCorners(out?: Frustum): Frustum;
/** Determine whether this Placement2d is valid. */
get isValid(): boolean;
/** Set the contents of this Placement2d from another Placement2d */
setFrom(other: Placement2d): void;
/** Calculate the axis-aligned bounding box for this placement. */
calculateRange(): AxisAlignedBox3d;
/** Multiply the Transform of this Placement2d by the specified *other* Transform.
* @throws [[IModelError]] if the Transform is invalid for a GeometricElement2d.
*/
multiplyTransform(other: Transform): void;
}
//# sourceMappingURL=Placement.d.ts.map