亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

電子圍欄十大國(guó)產(chǎn)品牌 電子圍欄是什么功能


電子圍欄十大國(guó)產(chǎn)品牌 電子圍欄是什么功能

文章插圖
現(xiàn)代工業(yè)化的推進(jìn)在極大加速現(xiàn)代化進(jìn)程的同時(shí)也帶來(lái)的相應(yīng)的安全隱患,在傳統(tǒng)的監(jiān)控領(lǐng)域,一般都是基于Web前端技術(shù)來(lái)實(shí)現(xiàn) 2D 可視化監(jiān)控,本文采用ThingJS來(lái)構(gòu)造輕量化的 3D 可視化場(chǎng)景,該3D場(chǎng)景展示了一個(gè)現(xiàn)代化商場(chǎng)的數(shù)字孿生可視化場(chǎng)景,包括人員的實(shí)時(shí)位置、電子圍欄的范圍、現(xiàn)場(chǎng)的安全情況等等,幫助直觀的了解當(dāng)前人員的安全狀況 。
電子圍欄又稱周界防盜報(bào)警系統(tǒng),監(jiān)控防區(qū)工作狀態(tài),實(shí)景中的電子圍欄系統(tǒng)用于農(nóng)業(yè)、畜牧業(yè),以及監(jiān)獄、軍事設(shè)施等安全敏感地區(qū) 。ThingJS平臺(tái)上,電子圍欄指的是一個(gè)區(qū)域,使用PolygonRegion屬性 。創(chuàng)建物體對(duì)象或模型并開(kāi)啟移動(dòng)功能,即可開(kāi)始檢測(cè)目標(biāo)點(diǎn)是否進(jìn)入電子圍欄區(qū)域,判斷true或false顯示告警反應(yīng) 。
本篇文章通過(guò)對(duì)數(shù)字孿生可視化場(chǎng)景的搭建和模型的加載,人物實(shí)時(shí)定位代碼的實(shí)現(xiàn)、電子圍欄和軌跡圖的實(shí)現(xiàn)進(jìn)行闡述,了解如何通過(guò)使用ThingJS實(shí)現(xiàn)一個(gè)簡(jiǎn)單的3D電子圍欄可視化 。
// 添加電子圍欄 new THING.widget.Button('添加電子圍欄', function() { // 構(gòu)成多邊形的點(diǎn)(取世界坐標(biāo)系下的坐標(biāo)) points = [ [81, 0.5, 63], [81, 0.5, 52], [72, 0.5, 52], [72, 0.5, 63] ]; if (polygonMarker) { return; } // 創(chuàng)建電子圍欄(區(qū)域) polygonMarker = app.create({ type: 'PolygonRegion', points: points, // 傳入世界坐標(biāo)系下點(diǎn)坐標(biāo) style: { regionOpacity: .6, regionColor: '#3CF9DF', // 區(qū)域顏色 lineColor: '#3CF9DF' // 線框顏色 } }); // 設(shè)置永遠(yuǎn)在最上層顯示 polygonMarker.style.alwaysOnTop = false; })當(dāng)人物或物體對(duì)象出發(fā)警報(bào)時(shí),有2種方式提醒注意,一是踏足的禁區(qū)圍欄顏色發(fā)生改變;二是展示面板顯示報(bào)警信息,可視化監(jiān)控目標(biāo)點(diǎn)的移動(dòng)范圍 。
完整代碼如下:
// 添加圖片標(biāo)注 new THING.widget.Button('添加圖片標(biāo)注', function() { var coord = [83, 0.5, 61]; if (marker1) { return; } // 創(chuàng)建目標(biāo)點(diǎn)(marker) marker1 = app.create({ type: "Marker", id: "marker1", url: "/guide/examples/images/navigation/user.png", position: coord, size: 1 }) })var point = [ [81, 63], [81, 52], [72, 52], [72, 63] ]; // 移動(dòng)圖片標(biāo)注 new THING.widget.Button('移動(dòng)圖片標(biāo)注', function() { var markerEndPoint = [68, 0.5, 55]; if (marker1 != null) { var moveState = marker1.getAttribute('moveState'); if (moveState == 'complete') { marker1.off('update', null, '監(jiān)控圖片標(biāo)注'); return; } // 目標(biāo)點(diǎn)移動(dòng) marker1.moveTo({ position: markerEndPoint, // 移動(dòng)到終點(diǎn)位置 time: 2 * 1000, orientToPath: true, // 沿路徑方向 complete: function(ev) { marker1.off('update', null, '監(jiān)控圖片標(biāo)注'); $('.warninfo1').css('display', 'none'); $('.warninfo2').css('display', 'block'); $('.warninfo3').css('display', 'none'); marker1.setAttribute('moveState', 'complete'); } }) } if (points != null) { // 監(jiān)控圖片標(biāo)注是否進(jìn)入電子圍欄區(qū)域 if (marker1 != null) { marker1.on('update', function() { if (polygonMarker != null) { var intoPolygonMarker = isInPolygon([marker1.position[0], marker1.position[2]], point); if (intoPolygonMarker) { polygonMarker.regionColor = '#a94442'; polygonMarker.lineColor = '#a94442' $('.warninfo1').css('display', 'block'); $('.warninfo2').css('display', 'none'); $('.warninfo3').css('display', 'none'); } else { polygonMarker.regionColor = '#3CF9DF'; polygonMarker.lineColor = '#3CF9DF' $('.warninfo1').css('display', 'none'); $('.warninfo2').css('display', 'none'); $('.warninfo3').css('display', 'block'); } } }, '監(jiān)控圖片標(biāo)注') } } })// 添加模型標(biāo)注 new THING.widget.Button('添加模型標(biāo)注', function() { //創(chuàng)建目標(biāo)點(diǎn)(Obj) people = app.query('#worker')[0]; people.position = [83, 0.1, 56]; people.visible = true; people.scale = [1.5, 1.5, 1.5]; })// 移動(dòng)模型標(biāo)注 new THING.widget.Button('移動(dòng)模型標(biāo)注', function() { var objEndPoint = [70, 0.1, 60]; if (people != null) { var moveState = people.getAttribute('moveState'); if (moveState == 'complete') { people.off('update', null, '監(jiān)控圖片標(biāo)注'); return; } // 播放模型動(dòng)畫(huà) people.playAnimation({ name: '走', speed: 1, loopType: THING.LoopType.Repeat, }); // 模型移動(dòng) people.moveTo({ position: objEndPoint, // 移動(dòng)到終點(diǎn)位置 orientToPath: true, // 沿路徑方向 time: 8 * 1000, complete: function(ev) { people.stopAnimation('走'); people.off('update', null, '監(jiān)控模型標(biāo)注'); $('.warninfo1').css('display', 'none'); $('.warninfo2').css('display', 'block'); $('.warninfo3').css('display', 'none');people.setAttribute('moveState', 'complete'); } }) } if (points != null) { // 監(jiān)控模型標(biāo)注是否進(jìn)入電子圍欄區(qū)域 if (people != null) { people.on('update', function() { if (polygonMarker != null) { var intoPolygonMarker = isInPolygon([people.position[0], people.position[2]], point); if (intoPolygonMarker) { polygonMarker.regionColor = '#a94442'; polygonMarker.lineColor = '#a94442' $('.warninfo1').css('display', 'block'); $('.warninfo2').css('display', 'none'); $('.warninfo3').css('display', 'none'); } else { polygonMarker.regionColor = '#3CF9DF'; polygonMarker.lineColor = '#3CF9DF' $('.warninfo1').css('display', 'none'); $('.warninfo2').css('display', 'none'); $('.warninfo3').css('display', 'block'); } } }, '監(jiān)控模型標(biāo)注') } } })// 重置 new THING.widget.Button('重置', function() { if (polygonMarker) { polygonMarker.destroy(); polygonMarker = null; } if (marker1) { marker1.destroy(); marker1 = null; } if (people) { people.visible = false; people.setAttribute('moveState', null); } $('.warninfo1').css('display', 'none'); $('.warninfo1').css('display', 'none'); $('.warninfo1').css('display', 'block'); })createTip(); // 創(chuàng)建提示面板}); /** * 創(chuàng)建提示面板 */ function createTip() { var html = `<div class="fencing" style="width:200px;position: absolute;top: 50px;left: 50%;transform: translateX(-50%);z-index: 999;"> <div class="alert alert-danger warninfo1" role="alert" style="padding: 15px;margin-bottom: 20px;color: #a94442;background-color: #f2dede;border-color: #ebccd1;border-radius: 4px;display:none;">目標(biāo)已進(jìn)入圍欄</div> <div class="alert alert-info warninfo2" role="alert" style="padding: 15px;margin-bottom: 20px;color: #31708f;background-color: #d9edf7;border-color: #bce8f1;border-radius: 4px;display:none;">到達(dá)目的地</div> <div class="alert alert-warning warninfo3" role="alert" style="padding: 15px;margin-bottom: 20px;color: #8a6d3b;background-color: #fcf8e3;border-color: #faebcc;border-radius: 4px;">目標(biāo)未進(jìn)入圍欄</div><div onclick="fenClose()" style="cursor: pointer;position: absolute;top: -7px;right: -8px;width: 16px;height: 16px;border-radius: 50%;background-color: #777777;border: 3px solid #ffffff;"> <div style="position: absolute;width: 10px;height: 2px;background-color: #fff;transform: rotate(45deg);top: 7px;left: 3px;"></div> <div style="position: absolute;width: 10px;height: 2px;background-color: #fff;transform: rotate(-45deg);top: 7px;left: 3px;"></div> </div> </div>`; $('#div2d').append($(html));} /** * 關(guān)閉提示面板 */function fenClose() { $(".fencing").hide();}/** * 檢測(cè)目標(biāo)點(diǎn)是否進(jìn)入電子圍欄區(qū)域 * @param {Array} checkPoint - 校驗(yàn)坐標(biāo) * @param {Array} polygonPoints - 形成電子圍欄的坐標(biāo) * @returns {Boolean} true 或 false * @description 此方法僅判斷處于同一個(gè)平面的目標(biāo)點(diǎn)是否在區(qū)域內(nèi)(只判斷坐標(biāo)x和z值),* 不考慮兩者當(dāng)前離地高度(坐標(biāo)的y值) */function isInPolygon(checkPoint, polygonPoints) { var counter = 0; var i; var xinters; var p1, p2; var pointCount = polygonPoints.length; p1 = polygonPoints[0]; for (i = 1; i <= pointCount; i++) { p2 = polygonPoints[i % pointCount]; if (checkPoint[0] > Math.min(p1[0], p2[0]) && checkPoint[0] <= Math.max(p1[0], p2[0])) { if (checkPoint[1] <= Math.max(p1[1], p2[1])) { if (p1[0] != p2[0]) { xinters = (checkPoint[0] - p1[0]) * (p2[1] - p1[1]) / (p2[0] - p1[0]) + p1[1]; if (p1[1] == p2[1] || checkPoint[1] <= xinters) { counter++; } } } } p1 = p2; } if (counter % 2 == 0) { return false; } else { return true; }}


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: