MomentData Class

A MomentData structure carries data used in calculation of moments of inertia.

• origin = local origin used as moments are summed.
• sums = array of summed moments.
• The [i,j] entry of the sums is a summed or integrated moment for product of axis i and j.
• axes 0,1,2 are x,y,z
• e.g. entry [0,1] is summed product xy
• axis 3 is "w", which is 1 in sums.
• e.g. entry 03 is summed x

Methods

Name Description
accumulateLineMomentsXYZ(pointA: Point3d, pointB: Point3d): void Accumulate wire moment integral from pointA to pointB
accumulatePointMomentsFromOrigin(points: Point3d[]): void Accumulate products-of-components for given points.
accumulateProducts(other: MomentData, scale: number): void Accumulate sums from other moments.
accumulateScaledOuterProduct(point: XYAndZ, scaleFactor: number): void add scaled outer product of (4d, unit weight) point to this.sums
accumulateTriangleMomentsXY(pointA: XAndY | undefined, pointB: XAndY, pointC: XAndY): void compute moments of a triangle from the origin to the given line.
accumulateTriangleToLineStringMomentsXY(sweepBase: XAndY | undefined, points: GrowableXYZArray): void compute moments of triangles from a base point to the given linestring.
accumulateXYProductsInCentroidalFrame(productXX: number, productXY: number, productYY: number, area: number, origin: XAndY, vectorU: XAndY, vectorV: XAndY): void * Assemble XX, YY, XY products into a full matrix form [xx,xy,0,0; xy,yy,0,0;0,0,0,0;0,0,0,1].
clearSums(origin?: Point3d): void Clear the MomentData sums to zero, and establish a new origin.
setOriginFromGrowableXYZArrayIfNeeded(points: GrowableXYZArray): void If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
setOriginIfNeeded(origin: Point3d): void If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
setOriginXYZIfNeeded(x: number, y: number, z: number): void If `this.needOrigin` flag is set, copy `origin` to `this.origin` and clear the flag.
shiftOriginAndSumsByXYZ(ax: number, ay: number, az: number): void revise the accumulated sums
* add ax,ay,ax to the origin coordinates.

shiftOriginAndSumsToCentroidOfSums(): boolean revise the accumulated sums to be "around the centroid"
shiftOriginAndSumsToNewOrigin(newOrigin: XYAndZ): void revise the accumulated sums so they are based at a specified origin.
signFactor(targetSign: number): number Return a scale factor to make these sums match the target orientation sign.
toJSON(): any Convert to a json data object with:
create(origin?: Point3d): Static Create moments with optional origin.
inertiaProductsToPrincipalAxes(origin: XYZ, inertiaProducts: Matrix4d): MomentData | undefined Static Compute principal axes from inertial products
momentTensorFromInertiaProducts(products: Matrix3d): Static Return the formal tensor of integrated values `[yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy]`
pointsToPrincipalAxes(points: Point3d[]): MomentData | undefined Static Return the principal moment data for an array of points.
sortColumnsForIncreasingMoments(axes: Matrix3d, moments: Vector3d): void Static Sort the columns of the matrix for increasing moments.

Properties

Name Type Description
localToWorldMap Transform the mapping between principal and world system.
needOrigin boolean flag to request deferred origin setup.
origin Point3d Origin used for sums.
quantitySum Accessor ReadOnly number Return the lower-right (3,3) entry in the sums.