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