ThingJS实现线路采集的方法

 在项目开发中,我们应用遇到以下业务场景,比如:规划巡检路线、按规划路线模拟第一人称视角漫游、场景中呈现管线分布等等。都需要进行线路的采集,通过得到的点位连成线,来实现以上功能

const app = THING.App.current
app.on('click', (ev) => {
    const pickPos = ev.pickedPosition;
    const line = uino.app.query('线路')[0];
    // 每点一下,会将拾取的点位添加到线对象points集合中,形成线
    line.addPoint(pickPos);
    console.log(line.points); // 获取线的点位合集
});

function createLine() {
    // 创建轨迹线
    app.create({
        type: 'Line',
        name: '线路',
        dotSize: 2,             // 轨迹点的大小
        dotColor: 0xFF0000,     // 轨迹点的颜色
    });
}
createLine();


以上代码,放到控制台运行,就可以在场景中进行点击,并且绘制出一条线路。控制台可以打印出当前采集的点位集合

如果采集过程中,有些点位采集错误,不想要了怎么办? 使用以下方法

// 删除节点,第一个是索引,第二个是长度(第一个参数是点位所在数组的索引,第二个参数是要删除几个点位)
line.removePoints(1, 1);

关于点位相关的API扩展知识
 

属性:points
获取节点数据列表
类型: Array<Number>
使用示例:
const line = uino.app.query('线路')[0]
console.log(line.points); // 获取线的点位合集

方法
addPoint(pos)
添加单个节点
参数:节点坐标,如 [0,0,0]
使用示例:
const line = uino.app.query('线路')[0]
line.addPoint([0, 0, 0]);

addPoints(pos)
添加多个节点
参数:节点坐标数组,如 [[0,0,0],[1,0,0],[2,0,0]]
使用示例:
const line = uino.app.query('线路')[0]
line.addPoint([[0,0,0],[1,0,0],[2,0,0]]);

clearPoints()
清除所有节点
使用示例:
const line = uino.app.query('线路')[0]
line.clearPoints()

getPoint(index)
获取节点坐标
参数:节点所在点位集合数组的索引
使用示例:
const line = uino.app.query('线路')[0]
line.getPoint(1) // 获取第二个节点坐标

insertPoint(index, pos)
插入节点
参数:index节点索引下标,pos需要插入的坐标
使用示例:
const line = uino.app.query('线路')[0]
line.insertPoint(1, [1, 0, 1])

removePoints(index, length)
删除多个节点
参数:从 index 索引处开始删除,length要删除的节点数目
使用示例:
const line = uino.app.query('线路')[0]
line.removePoints(2, 1)

setPoint(index, pos)
更新某个节点坐标
参数:index要更新的节点索引下标,pos新的坐标值
使用示例:
const line = uino.app.query('线路')[0]
line.setPoint(1, [1, 2, 1]) // 返回值是boolean, 如果填写的索引值越界,则更新失败

更详细的API说明,请查看ThingJS文档THINGJS Index

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁宇宙中有朵云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值