OrbPro2 a Cesium distribution

BreakupEvent

new Cesium.BreakupEvent()

A debris fragment population produced by the NASA Standard Satellite Breakup Model (SSBM), EVOLVE 4.0 revision. Instances are never constructed directly — use BreakupEvent.explosion or BreakupEvent.collision, which invoke the model inside the wasm-engine and copy the resulting population out of the module heap.

Every quantity on this class is derived by the model from the published equations: the fragment count comes from the power-law size distribution, area-to-mass ratios from the bimodal log-normal distributions (with distinct spacecraft and rocket-body branches), areas and masses from the A/M relation, and the ejection velocity from the log-normal ΔV distribution conditioned on A/M. Nothing here is tuned for appearance, and no consumer may substitute an invented fragment count, A/M, or ΔV.

Frames and units. The model is frame-agnostic — it adds an isotropic ΔV to whatever parent state it is given. Fragment states are therefore expressed in the same frame as the parent state supplied to the factory, and that frame must be inertial for the resulting velocities to be physical. All lengths are metres, masses kilograms, velocities metres per second, areas square metres, and area-to-mass ratios square metres per kilogram.

See:

Members

static readonly Cesium.BreakupEvent.EventType : object

See:

static readonly Cesium.BreakupEvent.ObjectClass : object

See:

readonly area : Float64Array

Per-fragment cross-sectional area, in square metres.

readonly areaToMassRatio : Float64Array

Per-fragment area-to-mass ratio, in square metres per kilogram.

readonly characteristicLength : Float64Array

Per-fragment characteristic length Lc, in metres.

readonly count : number

Number of fragments in the population.

readonly deltaVelocity : Float64Array

Packed per-fragment ejection ΔV vectors [dvx0, dvy0, dvz0, dvx1, ...], in metres per second.
The instant the breakup occurred, when supplied to the factory.

readonly eventType : string

Which fragmentation mechanism produced this population.

readonly inputMass : number

The mass budget the model was asked to fragment, in kilograms.

readonly isCatastrophic : boolean

Whether the event was catastrophic. Explosions always are; a collision is catastrophic when the projectile's specific kinetic energy on the target exceeds the model's 40 J/g threshold, which selects a different size distribution and fragments the combined mass rather than only the excavated mass.

readonly mass : Float64Array

Per-fragment mass, in kilograms.

readonly minimumCharacteristicLength : number

The lower characteristic-length cutoff applied to the size distribution, in metres.

readonly objectClass : number

The parent object class whose area-to-mass branch was sampled.

readonly outputMass : number

The mass actually carried by the generated population, in kilograms.

readonly position : Float64Array

Packed per-fragment position vectors, in metres, in BreakupEvent#referenceFrame.
The frame the parent state was expressed in, and therefore the frame every fragment state is expressed in.

readonly seed : number|undefined

The seed that made this population reproducible, or undefined when the model was allowed to draw its own entropy.

readonly velocity : Float64Array

Packed per-fragment velocity vectors (parent velocity plus ejection ΔV), in metres per second, in BreakupEvent#referenceFrame.

Methods

static Cesium.BreakupEvent.collision(options)BreakupEvent

Generate the fragment population for a collision between a target and a projectile, using the NASA Standard Satellite Breakup Model. The model classifies the impact itself: when the projectile's specific kinetic energy on the target exceeds 40 J/g the collision is catastrophic and the combined mass fragments; otherwise only the mass the projectile excavates fragments, and the cratered target remainder is carried as a fragment. Inspect BreakupEvent#isCatastrophic on the result — never assume which regime a given encounter falls in.
Name Type Description
options object Object with the following properties:
Name Type Default Description
target object The struck body: characteristicLength (m), mass (kg), position (m, inertial), velocity (m/s, inertial), and optional objectClass.
projectile object The impacting body, same shape as options.target.
epoch JulianDate optional The instant of the collision, recorded on the result and required by DebrisCloud.
minimumCharacteristicLength number 0.05 optional Lower Lc cutoff on the size distribution, in metres.
seed number optional Seed making the population reproducible.
enforceMassConservation boolean false optional Top the population up until its mass meets the input budget, and prepend the cratered target remainder for a non-catastrophic impact.
referenceFrame ReferenceFrame ReferenceFrame.INERTIAL optional The frame both parent states are expressed in.
Returns:
The generated fragment population.
Throws:
  • DeveloperError : The wasm-engine must be initialized on the SDK artifact path.
Example:
const event = Cesium.BreakupEvent.collision({
  target: {
    characteristicLength: 4.0, mass: 900.0,
    position: targetPositionInertial, velocity: targetVelocityInertial,
  },
  projectile: {
    characteristicLength: 0.4, mass: 6.0,
    position: targetPositionInertial, velocity: impactorVelocityInertial,
  },
  epoch: impactTime,
  seed: 20260729,
});

static Cesium.BreakupEvent.explosion(options)BreakupEvent

Generate the fragment population for an anomalous or deliberate explosion of a single parent body, using the NASA Standard Satellite Breakup Model.
Name Type Description
options object Object with the following properties:
Name Type Default Description
characteristicLength number The parent's characteristic length Lc, in metres.
mass number The parent's mass, in kilograms.
position Cartesian3 The parent's position, in metres, in an inertial frame.
velocity Cartesian3 The parent's velocity, in metres per second, in the same inertial frame.
objectClass number BreakupEvent.ObjectClass.SPACECRAFT optional Which area-to-mass branch of the model to sample.
epoch JulianDate optional The instant of the breakup, recorded on the result and required by DebrisCloud.
minimumCharacteristicLength number 0.05 optional Lower Lc cutoff on the size distribution, in metres. Smaller cutoffs produce dramatically larger populations.
seed number optional Seed making the population reproducible. Omit to let the model draw its own entropy.
enforceMassConservation boolean false optional Top the population up until its mass meets the input budget. Excess mass is always trimmed regardless of this flag.
referenceFrame ReferenceFrame ReferenceFrame.INERTIAL optional The frame the parent state is expressed in, recorded on the result.
Returns:
The generated fragment population.
Throws:
  • DeveloperError : The wasm-engine must be initialized on the SDK artifact path.
Example:
const event = Cesium.BreakupEvent.explosion({
  characteristicLength: 3.0,
  mass: 1500.0,
  objectClass: Cesium.BreakupEvent.ObjectClass.ROCKET_BODY,
  position: parentPositionInertial,
  velocity: parentVelocityInertial,
  epoch: breakupTime,
  minimumCharacteristicLength: 0.2,
  seed: 20260729,
});
console.log(`${event.count} fragments, ${event.outputMass} kg`);

static Cesium.BreakupEvent.isSupported()boolean

Whether the loaded wasm-engine artifact exposes the breakup model. The model is only present on the SDK artifact path.
Returns:
true when BreakupEvent.explosion and BreakupEvent.collision can be invoked.

getFragment(index, result)object

Read one fragment out of the population.
Name Type Description
index number Fragment index, in [0, count).
result object optional Object to store the result in.
Returns:
The fragment: index, characteristicLength (m), areaToMassRatio (m²/kg), area (m²), mass (kg), position and velocity (m, m/s, in BreakupEvent#referenceFrame) and deltaVelocity (m/s).

indicesByDescendingMass(maximumCount)Array.<number>

Indices of the population ordered by descending fragment mass, optionally truncated.

Note that truncating this list keeps only the heaviest fragments, which is a biased view of a debris cloud: fragment mass and area-to-mass ratio are inversely related, so the heavy tail all shares a similar low A/M and the high-A/M fragments that dominate the cloud's later evolution are exactly the ones dropped. Prefer BreakupEvent#stratifiedIndicesByMass when choosing a subset to display.

Name Type Description
maximumCount number optional Keep at most this many indices.
Returns:
Fragment indices, largest mass first.

stratifiedIndicesByMass(maximumCount)Array.<number>

A subset of the population that spans its full mass range: the fragments are ordered by descending mass and then sampled at even intervals, so the subset covers the heavy low-A/M tail and the light high-A/M tail alike.

This is the honest way to display a bounded number of fragments. It is a display choice only — the population itself is never resampled or thinned, and BreakupEvent#count remains the number the model generated.

Name Type Description
maximumCount number optional Keep at most this many indices. Omit to get the whole population, largest mass first.
Returns:
Fragment indices, largest mass first.
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.