# ParticleSystem
查阅Cesium API

#### new mars3d.graphic.ParticleSystem(options)
graphic/custom/ParticleSystem.js 68

粒子效果 对象，该对象暂不支持鼠标交互和拾取

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 参数对象，包括以下：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`position` | LngLatPoint | Cesium.Cartesian3 | Cesium.PositionProperty | BaseGraphic.AjaxPosition | BaseGraphic.TimePosition | Array.<number> | string |  | 可选 坐标位置
`modelMatrix` | Cesium.Matrix4 | function |  | 可选 粒子系统模型矩阵, 将图元(所有几何实例)从模型转换为世界坐标的4x4变换矩阵,可以替代position。
`emitterModelMatrix` | Cesium.Matrix4 | function |  | 可选 发射器矩阵, 用于在粒子系统本地坐标系中转换粒子系统发射器
`updateCallback` | function |  | 可选 每一帧调用一个回调函数来更新一个粒子。
`style` | ParticleSystem.StyleOptions |  | 样式信息
`attr` | object | BaseGraphic.AjaxAttr |  | 可选 附件的属性信息，可以任意附加属性，导出geojson或json时会自动处理导出。
`id` | string | number | `createGuid()` | 可选 矢量数据id标识
`name` | string |  | 可选 矢量数据名称
`show` | boolean | `true` | 可选 矢量数据是否显示
`eventParent` | BaseClass | boolean |  | 可选 指定的事件冒泡对象，默认为所加入的图层对象，false时不冒泡事件
`flyTo` | boolean |  | 可选 加载完成数据后是否自动飞行定位到数据所在的区域。
`flyToOptions` | object |  | 可选 加载完成数据后是否自动飞行定位到数据所在的区域的对应 `BaseGraphic#flyTo`方法参数。

##### 参考:

- `支持的事件类型`

### 继承自

- BasePointPrimitive

### 属性值

#### 只读 center : Cesium.Cartesian3
graphic/primitive/BasePointPrimitive.js 201

中心点坐标 （笛卡尔坐标）

继承自:
  - BasePointPrimitive#center

#### 只读 centerPoint : LngLatPoint
graphic/primitive/BasePointPrimitive.js 210

中心点坐标

继承自:
  - BasePointPrimitive#centerPoint

#### debugAxis : boolean
graphic/primitive/BasePointPrimitive.js 350

是否显示3个方向轴，用于对比测试

继承自:
  - BasePointPrimitive#debugAxis

#### debugAxisLength : number
graphic/primitive/BasePointPrimitive.js 387

显示3个方向轴时的对应轴长度，用于对比测试

继承自:
  - BasePointPrimitive#debugAxisLength

#### gravity : number
graphic/custom/ParticleSystem.js 129

重力因子，会修改速度矢量以改变方向或速度（基于物理的效果）

#### 只读 hasAjaxPostion : boolean
graphic/primitive/BasePointPrimitive.js 621

是否 ajax后端动态坐标

继承自:
  - BasePointPrimitive#hasAjaxPostion

#### 只读 hasOpacity : boolean
graphic/custom/ParticleSystem.js 197

是否可以调整透明度

#### 只读 hasTimePostion : boolean
graphic/primitive/BasePointPrimitive.js 630

是否 time时序动态坐标

继承自:
  - BasePointPrimitive#hasTimePostion

#### heading : number
graphic/primitive/BasePointPrimitive.js 259

四周方向角，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#heading

#### height : number
graphic/primitive/BasePointPrimitive.js 218

坐标对应的高度值（单位：米）

继承自:
  - BasePointPrimitive#height

#### maxHeight : number
graphic/custom/ParticleSystem.js 117

最大视角高度（单位：米），超出该高度不显示粒子效果

#### 只读 modelMatrix : Cesium.Matrix4
graphic/primitive/BasePointPrimitive.js 246

将图元(所有几何实例)从模型转换为世界坐标的4x4变换矩阵。
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#modelMatrix

#### objectsToExclude : Array.<object>|undefined
graphic/primitive/BasePointPrimitive.js 309

贴模型分析时，排除的不进行贴模型计算的模型对象，默认是当前本身，可以是： primitives, entities 等

继承自:
  - BasePointPrimitive#objectsToExclude

#### 只读 orientation : Cesium.Quaternion
graphic/primitive/BasePointPrimitive.js 232

三维空间中的旋转 【仅部分对象支持】

继承自:
  - BasePointPrimitive#orientation

#### particleSize : number
graphic/custom/ParticleSystem.js 177

粒子图片的Size大小（单位：像素）

#### pitch : number
graphic/primitive/BasePointPrimitive.js 276

俯仰角，上下摇摆的角度，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#pitch

#### 只读 point : LngLatPoint
graphic/primitive/BasePointPrimitive.js 186

位置坐标

继承自:
  - BasePointPrimitive#point

#### position : Cesium.Cartesian3|LngLatPoint|BaseGraphic.AjaxPosition|BaseGraphic.TimePosition
graphic/primitive/BasePointPrimitive.js 74

位置坐标 （笛卡尔坐标）, 赋值时可以传入LatLngPoint对象

继承自:
  - BasePointPrimitive#position

#### 只读 positionShow : Cesium.Cartesian3
graphic/primitive/BasePointPrimitive.js 166

当前实时位置坐标（笛卡尔坐标）

继承自:
  - BasePointPrimitive#positionShow

#### 只读 positionsShow : Array.<Cesium.Cartesian3>
graphic/primitive/BasePointPrimitive.js 157

同 positions只是为了兼容entity的同名属性

继承自:
  - BasePointPrimitive#positionsShow

#### property : Cesium.SampledPositionProperty|Cesium.CallbackProperty
graphic/primitive/BasePointPrimitive.js 548

动态位置坐标

继承自:
  - BasePointPrimitive#property

#### roll : number
graphic/primitive/BasePointPrimitive.js 293

滚转角，左右摆动的角度，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#roll

#### 只读 timeRange : object
graphic/primitive/BasePointPrimitive.js 639

获取当前时序坐标的开始时间和结束时间,返回的是Cesium.JulianDate格式

继承自:
  - BasePointPrimitive#timeRange

#### 只读 timeRangeStr : object
graphic/primitive/BasePointPrimitive.js 648

获取当前时序坐标的开始时间和结束时间,返回的是时间字符串

继承自:
  - BasePointPrimitive#timeRangeStr

#### 只读 trackedEntity : Cesium.Entity|*
graphic/primitive/BasePointPrimitive.js 328

用于 map.trackedEntity 追踪的

继承自:
  - BasePointPrimitive#trackedEntity

#### transX : number
graphic/custom/ParticleSystem.js 141

X轴方向上的偏离距离（单位：米）

#### transY : number
graphic/custom/ParticleSystem.js 153

Y轴方向上的偏离距离（单位：米）

#### transZ : number
graphic/custom/ParticleSystem.js 165

离地高度，Z轴方向上的偏离距离（单位：米）

### 方法

#### addTimePosition(point, currTime) → BasePointPrimitive
graphic/primitive/BasePointPrimitive.js 669

设置并添加动画轨迹位置，按“指定时间”运动到达“指定位置”。 【仅LabelPrimitive、PointPrimitive、BillboardPrimitive、ModelPrimitive 等部分子类支持】

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`point` | LngLatPoint | Cesium.Cartesian3 | Array.<number> |  | 指定位置坐标
`currTime` | Cesium.JulianDate | Date | string | number | `Cesium.JulianDate.now()` | 可选 指定时间。当为String时，可以传入'2021-01-01 12:13:00'; 当为Number时，可以传入当前时间延迟的秒数。

##### 返回值:

当前对象本身，可以链式调用

继承自:
  - BasePointPrimitive#addTimePosition

#### autoSurfaceHeight(options) → Promise.<object>
graphic/primitive/BasePointPrimitive.js 741

异步计算更新坐标高度进行贴地(或贴模型)，内部自动调用`PointUtil#getSurfaceHeight`方法处理。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features

##### 返回值:

异步计算完成的Promise

继承自:
  - BasePointPrimitive#autoSurfaceHeight

#### clearTimePostion(maxCacheCount) → void
graphic/primitive/BasePointPrimitive.js 657

清除所有时序动态坐标

参数名称 | 类型 | 描述信息
--- | --- | ---
`maxCacheCount` | number | 可选 保留的坐标数量，默认清除所有。

##### 返回值:

继承自:
  - BasePointPrimitive#clearTimePostion

### 定义的类型

#### mars3d.graphic.ParticleSystem.StyleOptions
graphic/custom/ParticleSystem.js 19

粒子效果 支持的样式信息

##### 属性:

属性名称 | 类型 | 可选 | 默认值 | 描述信息
--- | --- | --- | --- | ---
`image` | string | <可选> |  | 粒子的图片URL
`emitter` | Cesium.ParticleEmitter | <可选> | new Cesium.CircleEmitter(1.0) | 粒子发射器
`emissionRate` | number | <可选> | 100 | 发射速率 （单位：次/秒）
`heading` | number | <可选> | 0 | 方向角 （度数值，0至360度）
`pitch` | number | <可选> | 0 | 俯仰角（度数值，0至360度）
`roll` | number | <可选> | 0 | 翻滚角（度数值，0至360度）
`gravity` | number | <可选> |  | 重力因子，会修改速度矢量以改变方向或速度（基于物理的效果）
`transX` | number | <可选> | 0 | 粒子在X轴方向上的偏离距离（单位：米）
`transY` | number | <可选> | 0 | 粒子在Y轴方向上的偏离距离（单位：米）
`transZ` | number | <可选> | 0 | 粒子离地高度（单位：米），粒子在Z轴方向上的偏离距离
`maxHeight` | number | <可选> |  | 最大视角高度（单位：米），超出该高度不显示粒子
`particleSize` | number | <可选> | 25 | 粒子大小(px)，粒子图片的Size大小（单位：像素）
`imageSize` | Cesium.Cartesian2 | <可选> |  | 粒子图片的Size大小,可以设置高宽不同（单位：像素），与particleSize二选一
`minimumImageSize` | Cesium.Cartesian2 | <可选> |  | 最小大小，设置最小边界，宽度和高度，在此之上随机缩放粒子图像的像素尺寸
`maximumImageSize` | Cesium.Cartesian2 | <可选> |  | 最大大小，设置最大边界，宽度和高度，在其以下随机缩放粒子图像的像素尺寸
`scale` | number | <可选> |  | 比例，设置在粒子生命周期内应用于粒子图像的比例
`startScale` | number | <可选> | 2.0 | 开始比例，粒子在出生时的比例（单位：相对于imageSize大小的倍数）
`endScale` | number | <可选> | 4.0 | 结束比例，粒子在死亡时的比例（单位：相对于imageSize大小的倍数）
`color` | Cesium.Color | <可选> | Color.WHITE | 颜色，设置一个粒子在其生命周期内的颜色
`startColor` | Cesium.Color | string | <可选> |  | 开始颜色，粒子出生时的颜色
`endColor` | Cesium.Color | string | <可选> |  | 结束颜色，当粒子死亡时的颜色
`speed` | number | <可选> |  | 速度(米/秒)， 如果设置，则使用此值覆盖最小速度和最大速度输入
`minimumSpeed` | number | <可选> | 1.0 | 最小速度，设定以每秒米为单位的最小范围，超过这个范围粒子的实际速度将被随机选择
`maximumSpeed` | number | <可选> | 2.0 | 最大速度(米/秒)，设定以每秒米为单位的最大范围，低于这个范围粒子的实际速度将被随机选择
`particleLife` | number | <可选> | 5.0 | 寿命时间(秒), 如果设置了这个值，将覆盖minimumParticleLife和maximumParticleLife输入
`minimumParticleLife` | number | <可选> | 3 | 最小寿命时间, 设定一个粒子生命可能持续时间的最小界限(以秒为单位)，在此之上一个粒子的实际生命将被随机选择
`maximumParticleLife` | number | <可选> | 6 | 最大寿命时间, 设置一个粒子生命可能持续时间的最大界限(以秒为单位)，低于这个时间的粒子的实际生命将被随机选择
`mass` | number | <可选> | 1.0 | 质量(千克)，设定粒子的最小和最大质量
`minimumMass` | number | <可选> |  | 最小质量，设定粒子质量的最小边界，一个粒子的实际质量将被选为高于这个值的随机数量
`maximumMass` | number | <可选> |  | 最大质量，设置粒子的最大质量，一个粒子的实际质量将被选为低于这个值的随机数量
`loop` | boolean | <可选> | true | 粒子系统完成后是否应该循环爆发
`bursts` | Array.<Cesium.ParticleBurst> | <可选> |  | 周期性发射粒子爆发数组
`sizeInMeters` | boolean | <可选> |  | 大小模式，设置粒子的大小是米还是像素。true以米为单位设置粒子的大小;否则，大小以像素为单位。
`lifetime` | number | <可选> | number.MAX_VALUE | 释放粒子的时间(秒) //以下是Billboard参数（ParticleSystem底层是很多Billboard构成）
`visibleDepth` | boolean | <可选> | true | 是否被遮挡
`disableDepthTestDistance` | number | <可选> |  | 指定从相机到禁用深度测试的距离。

##### 参考:

- Cesium.ParticleSystem