tool v4.1.4

工具插件,提供了坐标转换,距离计算等方法

  • 插件名称

    tool

  • 初始参数

  • 示例

import { webglPlugin } from "@tslfe/dt-enging"
...省略获取meta实例的步骤...

const toolPlugin = meta.plugin.use(webglPlugin.tool());

方法

buildCoordinateConvertor( ) v4.1.4

GPS 坐标转 三维坐标

function buildCoordinateConvertor: (list: {
    gps: GPSCoordinate;
    vector3: DTVector3;
}[]) => {
    toGps: (vector3: DTVector3) => GPSCoordinate;
    toVector3: (gpsCoordinate: GPSCoordinate) => DTVector3;
}
  • 参数

    • list: 映射坐标列表(需要 至少一组 坐标,其中包含一个 GPS 坐标 和与该 GPS 坐标对应的一个 三维坐标

  • 返回值

    • { toGps: (vector3: DTVector3) => GPSCoordinate, toVector3: (gpsCoordinate: GPSCoordinate) => DTVector3 } 进行坐标转换计算的方法
  • 示例

...省略挂载tool插件的步骤...

const convertor = toolPlugin.buildCoordinateConvertor([
    {
        gps: {
            longitude: 106.329885,
            latitude: 29.523628
        },
        vector3: {
            x: 71.60103854004521,
            y: 11.918637026404012,
            z: -113.7915206911498
        }
    },
    {
        gps: {
            longitude: 106.329822,
            latitude: 29.521502
        },
        vector3: {
            x: 67.1776203071326,
            y: 8.306768067879771,
            z: 125.04338544723107
        }
    }
]);

// gps 转三维坐标
convertor.toVector3({ longitude: 106.32988, latitude: 29.522657 });

// 三维坐标转 GPS
convertor.toGps({ x: 0, y: 0, z: 0 });

calculateDistance( )

计算多个点按顺序相连的直线距离和

function calculateDistance: (list: DTVector3[]) => number
  • 参数

  • 返回值

    • number: 计算结果
  • 示例

...省略挂载tool插件的步骤...

const distance = toolPlugin.calculateDistance([
    {x: 0, y: 0, z: 0},
    {x: 10, y: 0, z: 0},
    {x: 10, y: 0, z: 10},
]);

createMeasure( )

计算两点的直线距离

function createMeasure: (position: DTVector3) => (current: DTVector3) => number
  • 参数

    • position: 第一个点的三维坐标

  • 返回值

    • (current: DTVector3) => number: 进行距离计算的方法

      • 参数

        • current: 第二个点的三维坐标

      • 返回值

        • number: 距离计算结果
  • 示例

...省略挂载tool插件的步骤...

const distance = toolPlugin.createMeasure({x: 0, y: 0, z: 0})({x: 10, y: 10, z: 10});

threeCoordinateToScreenPoint( )

三维坐标转屏幕坐标

function threeCoordinateToScreenPoint: (position: DTVector3) => {
    x: number;
    y: number;
}
  • 参数

  • 返回值

    • {x, y}: 转换结果
  • 示例

...省略挂载tool插件的步骤...

const screenPoint = toolPlugin.threeCoordinateToScreenPoint({x: 10, y: 30, z: 40});

screenPointToThreeCoordinate( )

屏幕坐标转三维坐标

function screenPointToThreeCoordinate: (x: number, y: number) => Vector3 | null
  • 参数

    • x: 屏幕 x 坐标

    • y: 屏幕 y 坐标

  • 返回值

    • Vector3: 转换结果
  • 示例

...省略挂载tool插件的步骤...

const threePoint = toolPlugin.screenPointToThreeCoordinate(300, 500);

containsComponent( ) v4.1.4

获取指定的包围区域内的所有模型

function containsComponent: (positions: DTVector3[], mode: "all" | "x" | "y" | "z") => Component[]
  • 参数

    • positions: 三维坐标,需至少包含三个点才可构成一个包围区域

    • mode: 包围模式;all: 整体全部包围;x: 忽略x轴;y: 忽略y轴;z: 忽略z轴

  • 返回值

    • Component[]: 被包围的模型列表
  • 示例

...省略挂载tool插件的步骤...

const threePoint = toolPlugin.containsComponent([...三维点坐标], "all");
上次更新:
贡献者: yangxun, yanhao, zhengqian