v4.1.4
tool工具插件,提供了坐标转换,距离计算等方法
插件名称
tool
初始参数
- 无
示例
import { webglPlugin } from "@tslfe/dt-enging"
...省略获取meta实例的步骤...
const toolPlugin = meta.plugin.use(webglPlugin.tool());
方法
v4.1.4
buildCoordinateConvertor( )GPS 坐标转 三维坐标
function buildCoordinateConvertor: (list: {
gps: GPSCoordinate;
vector3: DTVector3;
}[]) => {
toGps: (vector3: DTVector3) => GPSCoordinate;
toVector3: (gpsCoordinate: GPSCoordinate) => DTVector3;
}
参数
list:
映射坐标列表(需要 至少一组 坐标,其中包含一个 GPS 坐标 和与该 GPS 坐标对应的一个 三维坐标 )gps:
GPS 坐标- 参考: GPSCoordinate
vector3:
与 GPS 坐标对应的三维坐标- 参考: DTVector3
返回值
{ 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
参数
list:
三维坐标点列表- 参考: DTVector3
返回值
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:
第一个点的三维坐标- 参考: DTVector3
返回值
(current: DTVector3) => number:
进行距离计算的方法参数
current:
第二个点的三维坐标- 参考: DTVector3
返回值
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;
}
参数
position:
三维坐标点- 参考: DTVector3
返回值
{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);
v4.1.4
containsComponent( )获取指定的包围区域内的所有模型
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");