#### # new ModelTransformTool(layeropt, callbackopt)

模型变换工具集

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`layer` | Cesium.MapGISM3DSet | Cesium.Cesium3DTileset | undefined | 模型对象， 详见《Cesium.MapGISM3DSet》 《Cesium.Cesium3DTileset》
`callback` | function | 模型编辑工具编辑后的回调函数 模型对象为空时，需要在调用具体的变换接口时指定要变换的模型。 推荐在调用变换接口时指定模型。

See:
  - ModelTransformTool#translateWorld
  - ModelTransformTool#setPositionWorld
  - ModelTransformTool#rotateLocal
  - ModelTransformTool#setLocalScale

##### 示例

    // ES5引入方式
    const { ModelTransformTool } = zondy.cesium
    // ES6引入方式
    import { ModelTransformTool } from "@mapgis/webclient-cesium-plugin"

    import { Cesium3DTilesCacheLayer } from "@mapgis/webclient-common"
    const cesium3DTilesCacheLayer = new Cesium3DTilesCacheLayer({
      url: 'http://webclient.smaryun.com:8200/3DData/ModelCache/3DTileset/1.0/dayantaresult/tileset.json'
    })
    map.add(cesium3DTilesCacheLayer)
    // 图层加载完毕
    Cesium3DTilesCacheLayer.on('layerview-created', function (result) {
      let layer = sceneView.getInnerLayer(result.layer)
      //初始化js编辑工具
      const transformEditor = new ModelTransformTool(layer)
      //初始化图形化编辑工具
      transformEditor.initModelEditor(viewer)
    })

### 方法

#### # activeRotationEditor(options)

可视化旋转工具

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

#### # activeScaleEditor(optionsopt)

可视化缩放工具

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` | Object | {} | 工具参数
`singleScale` | boolean | false | 是否单轴缩放，true：单轴缩放，false：三轴同时缩放
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset |  | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

#### # activeTranslationEditor(options)

可视化平移工具

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

#### # deactivate()

取消激活可视化工具

#### # destroy()

销毁工具

#### # getEulerFromTransform(transformInLocal, modelopt, rotationPointopt)

根据模型的tansform矩阵获取欧拉角

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`transformInLocal` | Cesium.Matrix4 |
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 模型对象； 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》
`rotationPoint` | Cesium.Cartesian3 | 旋转中心；缺省时旋转中心默认为模型外包球中心

#### # initModelEditor(viewer)

初始化可视化模型变换工具

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`viewer` | Viewer | Cesium的viewer对象

#### # reset()

重置模型位置到初始状态,只会重置通过构造函数传入的模型。

#### # rotateLocal(options)

控制模型在本地空间下做旋转变换（绕指定的旋转中心旋转）

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`rotation` | Cesium.Cartesian3 | Cesium.HeadingPitchRoll | 旋转角度； HeadingPitchRoll类型为弧度制，Cartesian3类型为角度制。
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被旋转的模型； 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》
`rotationPoint` | Cesium.Cartesian3 | 旋转中心； 缺省时绕模型自身的原点旋转;旋转的是SceneLayer图层时，SceneLayer下的所有图层绕第一个MapGISM3DSet的boundingSphere.center旋转。

##### 示例

    var modelTransformTool = new zondy.cesium.ModelTransformTool();
    // 从SceneLayer图层中获取MapGISM3DSet
    var model = layer._m3dLayerMap.values()[0];
    modelTransformTool.initModelEditor(viewer);
    // 通过角度控制
    modelTransformTool.rotateLocal({
        // 绕Z轴旋转90度
        rotation: new Cesium.Cartesian3(0, 0, 90),
        model: model,
        rotationPoint: model.boundingSphere.center
    })
    // 通过headingpitchroll控制
    modelTransformTool.rotateLocal({
        // 绕Z轴旋转90度
        rotation: new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(90), 0, 0),
        model: model,
        rotationPoint: model.boundingSphere.center
    })

#### # setLocalScala(options)

设置模型缩放（缩放中心点为模型局部坐标系的原点）。计划废弃，请使用 setLocalScale 代替

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`size` | Cesium.Cartesian3 | 缩放矢量
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

##### 示例

    var modelTransformTool = new zondy.cesium.ModelTransformTool();
    modelTransformTool.initModelEditor(viewer);
    modelTransformTool.setLocalScala({
        size: new Cesium.Cartesian3(2, 2, 2),
        // 从SceneLayer图层中获取MapGISM3DSet
        model: layer._m3dLayerMap.values()[0]
    })

#### # setLocalScale(options)

设置模型缩放（缩放中心点为模型局部坐标系的原点）

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`size` | Cesium.Cartesian3 | 缩放矢量
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

##### 示例

    var modelTransformTool = new zondy.cesium.ModelTransformTool();
    modelTransformTool.initModelEditor(viewer);
    modelTransformTool.setLocalScale({
        size: new Cesium.Cartesian3(2, 2, 2),
        // 从SceneLayer图层中获取MapGISM3DSet
        model: layer._m3dLayerMap.values()[0]
    })

#### # setPositionWorld(options)

设置M3D模型在笛卡尔世界坐标系下位置（将模型外包球中心平移到指定的位置）

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`position` | Cesium.Cartesian3 | 位置 笛卡尔坐标系
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被设置的模型， 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

##### 示例

    var modelTransformTool = new zondy.cesium.ModelTransformTool();
    modelTransformTool.initModelEditor(viewer);
    modelTransformTool.setPositionWorld({
        position: Cesium.Cartesian3.fromDegrees(113.0750, 30, 100),
        // 从SceneLayer图层中获取MapGISM3DSet
        model: layer._m3dLayerMap.values()[0]
    })

#### # setRotation(degreeopt, axisopt)

模型旋转（绕模型外包球中心旋转）

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`degree` | Number | 0 | 旋转角度，单位度
`axis` | String | 'Z' | 旋转轴，X：X轴，Y：Y轴，Z：Z轴

#### # setScala(xopt, yopt, zopt)

模型缩放（缩放中心点为模型局部坐标系的原点）。计划废弃，请使用 setScale 代替。

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`x` | Number | 1 | x轴放大
`y` | Number | 1 | y轴放大
`z` | Number | 1 | z轴放大

Deprecated:
  - 请使用`ModelTransformTool#setLocalScale`

#### # setScale(xopt, yopt, zopt)

模型缩放（缩放中心点为模型局部坐标系的原点）

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`x` | Number | 1 | x轴放大
`y` | Number | 1 | y轴放大
`z` | Number | 1 | z轴放大

Deprecated:
  - 请使用`ModelTransformTool#setLocalScale`

#### # setTranslation(longitudeopt, latitudeopt, heightopt)

将模型局部坐标系原点平移到指定的位置

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`longitude` | Number | 0 | 经度
`latitude` | Number | 0 | 纬度
`height` | Number | 0 | 高度

#### # translateWorld(options)

设置M3D模型在笛卡尔世界坐标系下平移（将模型从当前位置平移指定的笛卡尔坐标距离）

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object |
`vector` | Cesium.Cartesian3 | 平移矢量 笛卡尔坐标系
`model` | Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被平移的模型， 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

##### 示例

    var modelTransformTool = new zondy.cesium.ModelTransformTool();
    modelTransformTool.initModelEditor(viewer);
    modelTransformTool.translateWorld({
        vector: new Cesium.Cartesian3(5000, 0, 1000),
        // 从SceneLayer图层中获取MapGISM3DSet
        model: layer._m3dLayerMap.values()[0]
    })