MomentData Class
A MomentData structure exists in several levels:
- First level: as a carrier of sums of inertial products that determine moments.- 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
 
 
- axes 0,1,2 are x,y,z
 
- The [i,j] entry of the sums is a summed or integrated moment for product of axis i and j.
- In this level,- the absoluteQuantitymember is undefined.
- the localToWorldMapandradiiOfGyrationare created by have undefined contents.
 
- the 
 
- Second level: after a call to inertiaProductsToPrincipalAxes, the localToWorldMap,absoluteQuantityandradiiOfGyrationare filled in.
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. | |
| accumulateProductsFromOrigin(origin: Point3d, products: Matrix4d, scale: number): void | Accumulate sums from Matrix4d and origin. | |
| accumulateScaledOuterProduct(point: Readonly<WritableXYAndZ>, scaleFactor: number): void | add scaled outer product of (4d, unit weight) point to this.sums | |
| accumulateTriangleMomentsXY(pointA: undefined | Readonly<WritableXAndY>, pointB: Readonly<WritableXAndY>, pointC: Readonly<WritableXAndY>): void | compute moments of a triangle from the origin to the given line. | |
| accumulateTriangleToLineStringMomentsXY(sweepBase: undefined | Readonly<WritableXAndY>, 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: Readonly<WritableXAndY>, vectorU: Readonly<WritableXAndY>, vectorV: Readonly<WritableXAndY>): 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.needOriginflag is set, copyorigintothis.originand clear the flag. | |
| setOriginIfNeeded(origin: Point3d): void | If this.needOriginflag is set, copyorigintothis.originand clear the flag. | |
| setOriginXYZIfNeeded(x: number, y: number, z: number): void | If this.needOriginflag is set, copyorigintothis.originand clear the flag. | |
| shiftOriginAndSumsByXYZ(ax: number, ay: number, az: number): void | revise the accumulated sums | |
| shiftOriginAndSumsToCentroidOfSums(): boolean | revise the accumulated sums to be "around the centroid" | |
| shiftOriginAndSumsToNewOrigin(newOrigin: Readonly<WritableXYAndZ>): 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: | |
| areEquivalentPrincipalAxes(dataA: undefined | MomentData, dataB: undefined | MomentData): boolean Static | Test for match among selected members as they exist after inertiaProductsToPrincipalAxes | |
| create(origin?: Point3d, needOrigin: boolean = false): MomentData Static | Create moments with optional origin. | |
| inertiaProductsToPrincipalAxes(origin: XYZ, inertiaProducts: Matrix4d): undefined | MomentData Static | Compute principal axes from inertial products | |
| momentTensorFromInertiaProducts(products: Matrix3d): Matrix3d Static | Return the formal tensor of integrated values [yy+zz,xy,xz][yx,xx+zz,yz][zx,xy,xx+yy] | |
| pointsToPrincipalAxes(points: Point3d[]): undefined | MomentData 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 | |
|---|---|---|---|
| absoluteQuantity | undefined | number | principal quantity (e.g. | |
| 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. | |
| radiusOfGyration | Vector3d | radii of gyration (square roots of principal second moments) | |
| sums | Matrix4d | Moment sums. | 
Defined in
- geometry4d/MomentData.ts Line 38
Last Updated: 30 November, 2023