DSDSServer2024/build/build.20240805/static/js/Cesium-1.53/Specs/Scene/ConeEmitterSpec.js

50 lines
1.5 KiB
JavaScript

defineSuite([
'Scene/ConeEmitter',
'Core/Cartesian3',
'Core/Math',
'Scene/Particle'
], function(
ConeEmitter,
Cartesian3,
CesiumMath,
Particle) {
'use strict';
it('default constructor', function() {
var emitter = new ConeEmitter();
expect(emitter.angle).toEqual(CesiumMath.toRadians(30.0));
});
it('constructor', function() {
var emitter = new ConeEmitter(CesiumMath.PI_OVER_SIX);
expect(emitter.angle).toEqual(CesiumMath.PI_OVER_SIX);
});
it('angle setter', function() {
var emitter = new ConeEmitter();
emitter.angle = CesiumMath.PI_OVER_SIX;
expect(emitter.angle).toEqual(CesiumMath.PI_OVER_SIX);
});
it('angle setter throws with invalid value', function() {
var emitter = new ConeEmitter();
expect(function() {
emitter.angle = undefined;
}).toThrowDeveloperError();
});
it('emits', function() {
var emitter = new ConeEmitter(CesiumMath.PI_OVER_SIX);
var particle = new Particle();
for (var i = 0; i < 1000; ++i) {
emitter.emit(particle);
expect(particle.position).toEqual(Cartesian3.ZERO);
expect(Cartesian3.magnitude(particle.velocity)).toEqualEpsilon(1.0, CesiumMath.EPSILON14);
// acos(dot(unit v, unit z)) <= angle
expect(Math.acos(particle.velocity.z)).toBeLessThanOrEqualTo(emitter.angle);
}
});
});