var data_radar = ""; // 2022-11-09 Ken var wait_count = 0; var clear_count = 0; var debug_para = 1; var enable_ptz_temp = ""; var enable_calibration_radar_temp = ""; var enable_calibration_ptz_temp = ""; var enable_ip_setting_temp = ""; var enable_ptz_tracking_temp = ""; var enalbe_radar_xy_sync = 0; var k_index = -1; // ======================================================================= // Radar setting init function func_setradar_default() { func_setelement("radar_x_axis", 400); func_setelement("radar_y_axis", 500); func_setelement("target_x_axis", 400); func_setelement("target_y_axis", 100); func_setelement("world_camera_x_axis", 100); func_setelement("world_camera_y_axis", 400); func_setelement("radar_section_degree", 90); $('#slider_distance').slider('setValue', 10); $('#slider_distance_y').slider('setValue', 10); $('#radar_section_degree').val(90); var tmp_radar_x_axis = 400; var tmp_radar_y_axis = 500; var tmp_target_x_axis = 400; var tmp_target_y_axis = 100; section_line1.path[2][1] = tmp_radar_x_axis;//localStorage.getItem("radar_x_axis"); section_line1.path[2][2] = tmp_radar_y_axis;//localStorage.getItem("radar_y_axis"); section_line1.path[1][1] = tmp_target_x_axis;//localStorage.getItem("target_x_axis"); section_line1.path[1][2] = tmp_target_y_axis;//localStorage.getItem("target_y_axis"); document.getElementById("radar_section_degree").value = 90; // var ab_len = Math.sqrt((((localStorage.getItem("radar_x_axis") - localStorage.getItem("target_x_axis")) * (localStorage.getItem("radar_x_axis") - localStorage.getItem("target_x_axis"))) + (localStorage.getItem("radar_y_axis") - localStorage.getItem("target_y_axis")) * (localStorage.getItem("radar_y_axis") - localStorage.getItem("target_y_axis")))); // console.log("ab_len:" + ab_len); var theta = 90; var c_x = (Math.cos((-theta / 2) * Math.PI / 180) * (tmp_target_x_axis - tmp_radar_x_axis) - Math.sin((-theta / 2) * Math.PI / 180) * (tmp_target_y_axis - tmp_radar_y_axis)) + tmp_radar_x_axis; var c_y = (Math.sin((-theta / 2) * Math.PI / 180) * (tmp_target_x_axis - tmp_radar_x_axis) + Math.cos((-theta / 2) * Math.PI / 180) * (tmp_target_y_axis - tmp_radar_y_axis)) + tmp_radar_y_axis; //console.log("c_x,c_y:" + c_x + c_y); section_line1.path[0][1] = c_x; section_line1.path[0][2] = c_y; section_line1.path[3][1] = c_x; section_line1.path[3][2] = c_y; var d_x = (Math.cos((theta / 2) * Math.PI / 180) * (tmp_target_x_axis - tmp_radar_x_axis) - Math.sin((theta / 2) * Math.PI / 180) * (tmp_target_y_axis - tmp_radar_y_axis)) + tmp_radar_x_axis; var d_y = (Math.sin((theta / 2) * Math.PI / 180) * (tmp_target_x_axis - tmp_radar_x_axis) + Math.cos((theta / 2) * Math.PI / 180) * (tmp_target_y_axis - tmp_radar_y_axis)) + tmp_radar_y_axis; //console.log("d_x,d_y:" + d_x + d_y); section_line1.path[1][3] = d_x; section_line1.path[1][4] = d_y; radar_line.set({ 'x1': tmp_radar_x_axis, 'y1': tmp_radar_y_axis, 'x2': tmp_target_x_axis, 'y2': tmp_target_y_axis }); circle_radar.set({ 'left': tmp_radar_x_axis - 12, 'top': tmp_radar_y_axis - 14 }); radar_circle.set({ 'left': tmp_target_x_axis - 12, 'top': tmp_target_y_axis - 14 }); RefreshradarDot(0, canvasTripwire_radar); canvasTripwire_radar.add(radar_line); canvasTripwire_radar.add(circle_radar); canvasTripwire_radar.add(radar_circle); canvasTripwire_radar.add(section_line1); canvasTripwire_radar.add(ruler_x_sign); canvasTripwire_radar.add(ruler_y_sign); func_setelement_default(); console.log("func_setradar_default END"); } function func_setelement_default() { $.ajax({ url: "/setradarconfig?default", method: "GET", async: false, beforeSend: function (xmlHttp) { xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.setRequestHeader("Cache-Control", "no-cache"); //xmlHttp.setRequestHeader("Authorization", "Basic " + btoa("username:password")); }, success: function (res) { console.info(res); }, error: function (err) { console.warn(err); } }); return false; } // ======================================================================= // Radar canvas funcs // Issue : 沒用到的 func function mix_scale_radar_hidden() { // canvasTripwire_radar.remove(mix_scale_radar); canvasTripwire_radar.remove(radar_line); canvasTripwire_radar.remove(radar_circle); canvasTripwire_radar.remove(circle_radar); canvasTripwire_radar.remove(section_line1); // RefreshradarDot(0); canvasTripwire_radar.requestRenderAll(); } function mix_scale_radar_visible() { console.log("[radar.js] mix_scale_radar_visible()"); if (canvasTripwire_radar.getObjects().indexOf(radar_line) == -1) { RefreshradarDot(0, canvasTripwire_radar); // canvasTripwire_radar.add(mix_scale_radar); canvasTripwire_radar.add(radar_line); canvasTripwire_radar.add(radar_circle); canvasTripwire_radar.add(circle_radar); canvasTripwire_radar.add(section_line1); canvasTripwire_radar.add(ruler_x_sign); canvasTripwire_radar.add(ruler_y_sign); // console.log("add(section_line1)", canvasTripwire_radar.getObjects().indexOf(section_line1)); // canvasTripwire_radar.add(radar_dot); } if (localStorage.getItem("calibration_radar")) { canvasTripwire_radar.on({ 'object:moving': onObjectMoving, 'object:moved': onObjectMoved, 'mouse:wheel': MouseWheel, 'mouse:over': MouseOver, 'mouse:out': MouseOut, 'mouse:move': MouseMove }); console.log('canvasTripwire_radar.on'); } else { canvasTripwire_radar.off({ 'object:moving': onObjectMoving, 'object:moved': onObjectMoved, 'mouse:wheel': MouseWheel, 'mouse:over': MouseOver, 'mouse:out': MouseOut, 'mouse:move': MouseMove }); console.log('canvasTripwire_radar.off '); } function onObjectMoving(e) { if (e.target.name == "circle_radar" && localStorage.getItem("calibration_radar")) { var p = e.target; // var toLeft = p.left; // var toTop = p.top; if (p.left < 30) p.left = 30; if (p.left > 760) p.left = 760; if (p.top < 30) p.top = 30; if (p.top > 560) p.top = 560; p.radar_line & p.radar_line.set({ 'x1': p.left + 12, 'y1': p.top + 14 }); // p.radar_line & p.radar_line.set({ 'x1': toLeft + 18, 'y1': toTop + 20 }); // console.log(' p.left p.top(x,y):', toLeft, toTop); // func_setelement("radar_x_axis", p.radar_line.get('x1')); // func_setelement("radar_y_axis", p.radar_line.get('y1')); // console.log('send radar_axis(x,y):', p.radar_line.get('x1'), p.radar_line.get('y1')); // func_setelement("target_x_axis", p.radar_line.get('x2')); // func_setelement("target_y_axis", p.radar_line.get('y2')); // console.log('send target_axis (x,y):', p.radar_line.get('x2'), p.radar_line.get('y2')); // console.log("x1,y1:" + p.radar_line.get('x1') + "," + p.radar_line.get('y1')); // console.log("x2,y2:" + p.radar_line.get('x2') + "," + p.radar_line.get('y2')); section_line1.path[2][1] = p.radar_line.get('x1'); section_line1.path[2][2] = p.radar_line.get('y1'); var ab_len = Math.sqrt(((p.radar_line.get('x1') - p.radar_line.get('x2')) * (p.radar_line.get('x1') - p.radar_line.get('x2'))) + ((p.radar_line.get('y1') - p.radar_line.get('y2')) * (p.radar_line.get('y1') - p.radar_line.get('y2')))) // console.log("ab_len:" + ab_len); var theta = json_radar_section_degree; var c_x = (Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var c_y = (Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); // console.log("c_x,c_y:" + c_x + c_y); section_line1.path[0][1] = c_x; section_line1.path[0][2] = c_y; section_line1.path[3][1] = c_x; section_line1.path[3][2] = c_y; var d_x = (Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var d_y = (Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); // console.log("d_x,d_y:" + d_x + d_y); section_line1.path[1][3] = d_x; section_line1.path[1][4] = d_y; // canvasTripwire_radar.remove(section_line1); if (canvasTripwire_radar.getObjects().indexOf(section_line1) == -1) { canvasTripwire_radar.add(section_line1); } // RefreshradarDot(3); var rotate_theta = (Math.atan((p.radar_line.get('y2') - p.radar_line.get('y1')) / (p.radar_line.get('x2') - p.radar_line.get('x1') + 0.001)) * 180 / Math.PI) - 90; if (p.radar_line.get('x2') >= p.radar_line.get('x1')) { document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 270 + Math.round(rotate_theta)); } else { if (p.radar_line.get('y2') >= p.radar_line.get('y1')) { document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 180 + 270 + Math.round(rotate_theta)); } else { document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 90 + Math.round(rotate_theta)); } } } else if (e.target.name == "radar_circle" && localStorage.getItem("calibration_radar")) { var p = e.target; // console.log("localStorage.getItem(target_x_axis).value", localStorage.getItem("target_x_axis")); // console.log("localStorage.getItem(target_y_axis).value", localStorage.getItem("target_y_axis")); // console.log("localStorage.getItem(radar_x_axis).value", localStorage.getItem("radar_x_axis")); // console.log("document.localStorage.getItem(radar_y_axis).value", localStorage.getItem("radar_y_axis")); // console.log("document.getElementById(radar_section_degree).value", document.getElementById("radar_section_degree").value); // var toLeft = p.left; // var toTop = p.top; if (p.left < 30) p.left = 30; if (p.left > 760) p.left = 760; if (p.top < 30) p.top = 30; if (p.top > 560) p.top = 560; // p.radar_line & p.radar_line.set({ 'x2': toLeft + 18, 'y2': toTop + 20 }); // console.log(' p.left p.top(x,y):', toLeft, toTop); p.radar_line & p.radar_line.set({ 'x2': p.left + 12, 'y2': p.top + 14 }); // func_setelement("radar_x_axis", p.radar_line.get('x1')); // func_setelement("radar_y_axis", p.radar_line.get('y1')); // console.log('send radar_axis(x,y):', p.radar_line.get('x1'), p.radar_line.get('y1')); // func_setelement("target_x_axis", p.radar_line.get('x2')); // func_setelement("target_y_axis", p.radar_line.get('y2')); // console.log('send target_axis (x,y):', p.radar_line.get('x2'), p.radar_line.get('y2')); section_line1.path[1][1] = p.radar_line.get('x2'); section_line1.path[1][2] = p.radar_line.get('y2'); // console.log("x1,y1:" + p.radar_line.get('x1') + "," + p.radar_line.get('y1')); // console.log("x2,y2:" + p.radar_line.get('x2') + "," + p.radar_line.get('y2')); var ab_len = Math.sqrt(((p.radar_line.get('x1') - p.radar_line.get('x2')) * (p.radar_line.get('x1') - p.radar_line.get('x2'))) + ((p.radar_line.get('y1') - p.radar_line.get('y2')) * (p.radar_line.get('y1') - p.radar_line.get('y2')))) // console.log("ab_len:" + ab_len); var theta = json_radar_section_degree; var c_x = (Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var c_y = (Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); // console.log("c_x,c_y:" + c_x + c_y); section_line1.path[0][1] = c_x; section_line1.path[0][2] = c_y; section_line1.path[3][1] = c_x; section_line1.path[3][2] = c_y; var d_x = (Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var d_y = (Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); // console.log("d_x,d_y:" + d_x + d_y); section_line1.path[1][3] = d_x; section_line1.path[1][4] = d_y; if (canvasTripwire_radar.getObjects().indexOf(section_line1) == -1) { canvasTripwire_radar.add(section_line1); } var rotate_theta = (Math.atan((p.radar_line.get('y2') - p.radar_line.get('y1')) / (p.radar_line.get('x2') - p.radar_line.get('x1') + 0.001)) * 180 / Math.PI) - 90; if (p.radar_line.get('x2') >= p.radar_line.get('x1')) { document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 270 + Math.round(rotate_theta)); } else { if (p.radar_line.get('y2') >= p.radar_line.get('y1')) { document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 180 + 270 + Math.round(rotate_theta)); } else { document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); // func_setelement("world_radar_degree", 90 + Math.round(rotate_theta)); } } } canvasTripwire_radar.requestRenderAll(); } function onObjectMoved(e) { if (e.target.name == "circle_radar" && localStorage.getItem("calibration_radar")) { var p = e.target; // var toLeft = p.left; // var toTop = p.top; if (p.left < 30) p.left = 30; if (p.left > 760) p.left = 760; if (p.top < 30) p.top = 30; if (p.top > 560) p.top = 560; p.radar_line & p.radar_line.set({ 'x1': p.left + 12, 'y1': p.top + 14 }); // p.radar_line & p.radar_line.set({ 'x1': toLeft + 18, 'y1': toTop + 20 }); func_setelement("radar_x_axis", p.radar_line.get('x1')); func_setelement("radar_y_axis", p.radar_line.get('y1')); console.log('send radar_axis(x,y):', p.radar_line.get('x1'), p.radar_line.get('y1')); func_setelement("target_x_axis", p.radar_line.get('x2')); func_setelement("target_y_axis", p.radar_line.get('y2')); console.log('send target_axis (x,y):', p.radar_line.get('x2'), p.radar_line.get('y2')); // console.log("x1,y1:" + p.radar_line.get('x1') + "," + p.radar_line.get('y1')); //console.log("x2,y2:" + p.radar_line.get('x2') + "," + p.radar_line.get('y2')); section_line1.path[2][1] = p.radar_line.get('x1'); section_line1.path[2][2] = p.radar_line.get('y1'); var ab_len = Math.sqrt(((p.radar_line.get('x1') - p.radar_line.get('x2')) * (p.radar_line.get('x1') - p.radar_line.get('x2'))) + ((p.radar_line.get('y1') - p.radar_line.get('y2')) * (p.radar_line.get('y1') - p.radar_line.get('y2')))) //console.log("ab_len:" + ab_len); var theta = json_radar_section_degree; var c_x = (Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var c_y = (Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); //console.log("c_x,c_y:" + c_x + c_y); section_line1.path[0][1] = c_x; section_line1.path[0][2] = c_y; section_line1.path[3][1] = c_x; section_line1.path[3][2] = c_y; var d_x = (Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var d_y = (Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); console.log("c_x,c_y:" + c_x + c_y, "d_x,d_y:" + d_x + d_y); section_line1.path[1][3] = d_x; section_line1.path[1][4] = d_y; // canvasTripwire_radar.remove(section_line1); if (canvasTripwire_radar.getObjects().indexOf(section_line1) == -1) { canvasTripwire_radar.add(section_line1); } // RefreshradarDot(3); var rotate_theta = (Math.atan((p.radar_line.get('y2') - p.radar_line.get('y1')) / (p.radar_line.get('x2') - p.radar_line.get('x1') + 0.001)) * 180 / Math.PI) - 90; if (p.radar_line.get('x2') >= p.radar_line.get('x1')) { document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); func_setelement("world_radar_degree", 270 + Math.round(rotate_theta)); } else { if (p.radar_line.get('y2') >= p.radar_line.get('y1')) { document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); func_setelement("world_radar_degree", 180 + 270 + Math.round(rotate_theta)); } else { document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); func_setelement("world_radar_degree", 90 + Math.round(rotate_theta)); } } rescale_ruler(rulerRadar); } else if (e.target.name == "radar_circle" && localStorage.getItem("calibration_radar")) { var p = e.target; // console.log("localStorage.getItem(target_x_axis).value", localStorage.getItem("target_x_axis")); // console.log("localStorage.getItem(target_y_axis).value", localStorage.getItem("target_y_axis")); // console.log("localStorage.getItem(radar_x_axis).value", localStorage.getItem("radar_x_axis")); // console.log("document.localStorage.getItem(radar_y_axis).value", localStorage.getItem("radar_y_axis")); //console.log("document.getElementById(radar_section_degree).value", document.getElementById("radar_section_degree").value); // var toLeft = p.left; // var toTop = p.top; if (p.left < 30) p.left = 30; if (p.left > 760) p.left = 760; if (p.top < 30) p.top = 30; if (p.top > 560) p.top = 560; // p.radar_line & p.radar_line.set({ 'x2': toLeft + 18, 'y2': toTop + 20 }); // console.log(' p.left p.top(x,y):', toLeft, toTop); p.radar_line & p.radar_line.set({ 'x2': p.left + 12, 'y2': p.top + 14 }); func_setelement("radar_x_axis", p.radar_line.get('x1')); func_setelement("radar_y_axis", p.radar_line.get('y1')); console.log('send radar_axis(x,y):', p.radar_line.get('x1'), p.radar_line.get('y1')); func_setelement("target_x_axis", p.radar_line.get('x2')); func_setelement("target_y_axis", p.radar_line.get('y2')); console.log('send target_axis (x,y):', p.radar_line.get('x2'), p.radar_line.get('y2')); section_line1.path[1][1] = p.radar_line.get('x2'); section_line1.path[1][2] = p.radar_line.get('y2'); //console.log("x1,y1:" + p.radar_line.get('x1') + "," + p.radar_line.get('y1')); //console.log("x2,y2:" + p.radar_line.get('x2') + "," + p.radar_line.get('y2')); var ab_len = Math.sqrt(((p.radar_line.get('x1') - p.radar_line.get('x2')) * (p.radar_line.get('x1') - p.radar_line.get('x2'))) + ((p.radar_line.get('y1') - p.radar_line.get('y2')) * (p.radar_line.get('y1') - p.radar_line.get('y2')))) //console.log("ab_len:" + ab_len); var theta = json_radar_section_degree; var c_x = (Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var c_y = (Math.sin((-theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((-theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); //console.log("c_x,c_y:" + c_x + c_y); section_line1.path[0][1] = c_x; section_line1.path[0][2] = c_y; section_line1.path[3][1] = c_x; section_line1.path[3][2] = c_y; var d_x = (Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) - Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('x1'); var d_y = (Math.sin((theta / 2) * Math.PI / 180) * (p.radar_line.get('x2') - p.radar_line.get('x1')) + Math.cos((theta / 2) * Math.PI / 180) * (p.radar_line.get('y2') - p.radar_line.get('y1'))) + p.radar_line.get('y1'); console.log("c_x,c_y:" + c_x + c_y, "d_x,d_y:" + d_x + d_y); section_line1.path[1][3] = d_x; section_line1.path[1][4] = d_y; if (canvasTripwire_radar.getObjects().indexOf(section_line1) == -1) { canvasTripwire_radar.add(section_line1); } var rotate_theta = (Math.atan((p.radar_line.get('y2') - p.radar_line.get('y1')) / (p.radar_line.get('x2') - p.radar_line.get('x1') + 0.001)) * 180 / Math.PI) - 90; if (p.radar_line.get('x2') >= p.radar_line.get('x1')) { document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); func_setelement("world_radar_degree", 270 + Math.round(rotate_theta)); } else { if (p.radar_line.get('y2') >= p.radar_line.get('y1')) { document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); func_setelement("world_radar_degree", 180 + 270 + Math.round(rotate_theta)); } else { document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); func_setelement("world_radar_degree", 90 + Math.round(rotate_theta)); } } rescale_ruler(rulerRadar); } canvasTripwire_radar.requestRenderAll(); } function MouseWheel(e) { //Mark at 20230110 Steven /* // $("#IFRAME_RADAR").prop("scrolling", "no"); var delta = e.e.deltaY; console.log("e:", e); console.log("delta:", delta); // var zoom = canvas.getZoom(); // var zoom; // zoom = 0.999 ** delta; // if (zoom > 20) zoom = 20; // if (zoom < 0.01) zoom = 0.01; // console.log("zoom:", zoom); if (delta > 0) { // console.log("document.getElementById(slider_distance).value:", parseInt(document.getElementById("slider_distance").value) + 5); $('#slider_distance').slider('setValue', parseInt(document.getElementById("slider_distance").value) + 5); } else if (delta < 0) { // console.log("document.getElementById(slider_distance).value:", document.getElementById("slider_distance").value - 5); $('#slider_distance').slider('setValue', document.getElementById("slider_distance").value - 5); } // canvas.setZoom(zoom); // opt.e.preventDefault(); // opt.e.stopPropagation(); // $("#IFRAME_RADAR").prop("scrolling", "yes"); rescale_ruler(rulerRadar); func_setelement("distance_meter", document.getElementById("slider_distance").value); */ } function MouseOver(e) { // console.log("MouseOver e:", e); } function MouseOut(e) { // console.log("MouseOut e:", e); //top.document.getElementById("IFRAME_RADAR").scrolling = "yes"; } function MouseMove(e) { // console.log("MouseMove e:", e); // ruler_x_sign.set({ 'left': e.e.layerX - (ruler_x_sign.width / 2), 'top': 10 }); // ruler_y_sign.set({ 'left': 20, 'top': e.e.layerY - (ruler_y_sign.width / 2) }); //top.document.getElementById("IFRAME_RADAR").scrolling = "no"; } canvasTripwire_radar.requestRenderAll(); } function circle_ptz_hidden() { canvasTripwire_radar.remove(circle_ptz); canvasTripwire_radar.remove(ptz_line); canvasTripwire_radar.requestRenderAll(); } function circle_ptz_visible() { if (canvasTripwire_radar.getObjects().indexOf(circle_ptz) == -1) { RefreshradarDot(6, canvasTripwire_radar); canvasTripwire_radar.add(ptz_line); canvasTripwire_radar.add(circle_ptz); // console.log("add circle_ptz indexOf:", canvasTripwire_radar.getObjects().indexOf(circle_ptz)); } canvasTripwire_radar.on({ 'object:moving': onObjectMoving, 'object:moved': onObjectMoved }); function onObjectMoving(e) { if (e.target.name == "circle_ptz") { var p = e.target; // p.radar_line & p.radar_line.set({ 'x1': p.left + p.radius, 'y1': p.top + p.radius }); // var r = 50; // // var theta = 90; // var theta = ptz_degree_tmp; // console.log("radar_json.ptz_degree in mouse moving", ptz_degree_tmp); // p.radar_line & p.radar_line.set({ 'x2': p.left + p.radius - r * Math.cos(theta * Math.PI / 180), 'y2': p.top + p.radius - r * Math.sin(theta * Math.PI / 180) }); // p.radar_line & p.radar_line.set({ 'x2': p.left - r * Math.cos(theta), 'y2': p.top - r * Math.sin(theta) }); // console.log("document.getElementById(radar_section_degree).value", document.getElementById("radar_section_degree").value); // func_setelement("world_camera_x_axis", p.left + p.radius); // func_setelement("world_camera_y_axis", p.top + p.radius); console.log("setting ptz (x,y)", p.left + p.radius, p.top + p.radius); canvasTripwire_radar.remove(ptz_line); RefreshradarDot(7, canvasTripwire_radar); } canvasTripwire_radar.requestRenderAll(); } function onObjectMoved(e) { if (e.target.name == "circle_ptz") { var p = e.target; p.radar_line & p.radar_line.set({ 'x1': p.left + p.radius, 'y1': p.top + p.radius }); var r = 50; // var theta = 90; // var theta = ptz_degree_tmp; var theta = localStorage.getItem("ptz_degree_tmp"); // console.log("radar_json.ptz_degree in mouse moving", ptz_degree_tmp); p.radar_line & p.radar_line.set({ 'x2': p.left + p.radius - r * Math.cos(theta * Math.PI / 180), 'y2': p.top + p.radius - r * Math.sin(theta * Math.PI / 180) }); // p.radar_line & p.radar_line.set({ 'x2': p.left - r * Math.cos(theta), 'y2': p.top - r * Math.sin(theta) }); console.log("document.getElementById(radar_section_degree).value", document.getElementById("radar_section_degree").value); func_setelement("world_camera_x_axis", p.left + p.radius); func_setelement("world_camera_y_axis", p.top + p.radius); console.log("setting ptz (x,y)", p.left + p.radius, p.top + p.radius); canvasTripwire_radar.add(ptz_line); RefreshradarDot(8, canvasTripwire_radar); } canvasTripwire_radar.requestRenderAll(); } canvasTripwire_radar.requestRenderAll(); } function send_radarbg(file_data, listmode_id) { func_get_lang_cookie(); var form_data = new FormData(); //建構new FormData() form_data.append('file', file_data); //把物件加到file後面 $.ajax({ url: "/import_radarbg", // url: "http://127.0.0.1:" + GetUrlPort() + "/upload_radarbg", // url: "/import_lpr_list", type: "POST", // mimeType: "multipart/form-data", mimeType: "image/jpeg", data: form_data, contentType: false, processData: false, async: false, beforeSend: function (xmlHttp) { xmlHttp.setRequestHeader("If-Modified-Since", "0"); xmlHttp.setRequestHeader("Cache-Control", "no-cache"); // xmlHttp.setRequestHeader("Authorization", "Basic " + btoa("username:password")); console.log("[send_radarbg] beforeSend"); }, success: function (retdata) { console.log("[send_radarbg] success"); console.info(retdata); // g_listmode_id = listmode_id; // window.location.reload(); // location.reload(); // setTimeout(location.reload(),3000); }, error: function (retdata) { console.log("[send_radarbg] error"); console.warn(retdata); alert(MESSAGE64); // window.location.reload(); // location.reload(); } }); } function upload_radarbg(e) { console.log("[upload_radarbg] enter"); var file = e.files[0]; console.log(file); send_radarbg(file, 2); //上傳後將檔案清除 e.value = ''; } // ======================================================================= // get Radar info by /getalarmmotion CGI ( Leo ) // 2022-12-29 Merge issue : check all comments are necessary var g_max_protected_objects = 2; var g_enable_show_pixel = 0; var radar_msg; var radar_dot = []; var radar_id_num = 10; var trial_array = {}; var ptz_degree_tmp = 0; localStorage.setItem("ptz_degree_tmp", 0); var ptz_degree_offset = 0; // var trial_life_time = 5; function GetAlarm_radar(alarm_data) { // console.log("GetAlarm_radar"); if (!!alarm_data) { var datas; var radar_json; var complete_data = ""; var n1 = -1, n2 = -1, n2_temp = -1; var max_protected_objects = 3; // var max_protected_objects = g_max_protected_objects; // if (g_enable_show_pixel === 1) { // max_protected_objects = g_max_protected_objects + 2; // } // AiEngine_json_split() var n1 = -1, n2 = -1, n2_temp = -1; complete_data = complete_data.concat(alarm_data); // n1 = complete_data.indexOf('{"AiRadar"'); n1 = complete_data.indexOf('"AiRadar"'); // n2_temp = complete_data.indexOf('"Type"'); n2_temp = complete_data.indexOf('"Speed"'); // n2 = complete_data.indexOf('}]}', n2_temp); n2 = complete_data.indexOf('}]}', n2_temp); if (n1 > 0 && n2_temp > 0 && n2 > 0 && (n1 + 7) < n2_temp && n2_temp < n2) { // Ken 2022-09-22 // console.log("complete_data"); // console.log(complete_data); wait_count = 0; clear_count = 0; // Ken 2022-09-22 將字串轉換成過去格式,以符合後續 split 並比對 AiRadar 字串的邏輯 complete_data = complete_data.replace(',"AiRadar"', ',\r\{"AiRadar"') // console.log("complete_data"); // console.log(complete_data); datas = complete_data.split(/\r\n|\r/); complete_data = ""; // console.log("datas"); // console.log(datas); //var check_cam_time = 0; //var buffer_cam_time = ""; for (var i = datas.length - 1; i >= 0; i--) { /* if (datas[i].substring(0, 8) == 'CamTime:') { buffer_cam_time = ""; buffer_cam_time = datas[i].slice(); }*/ if (datas[i].length > 11 && datas[i].substring(0, 11) == '{"AiRadar":' && datas[i].length < 8192 * 8) { //datas[i].replace(/\\'/g, "'"); //datas[i].replace('\"', '"'); // console.log(datas[i]); /* datas[i].replace('\n', ''); datas[i].replace('\r', ''); datas[i].replace('\t', ''); datas[i].replace('\\', ''); */ /* var alarm_test = '{"AiEngine":[{"id":0,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":59,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":1,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":83,"y":136,"w":215,"h":168,"parent_idx":-1,"behavior_id":0},{"id":1,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":43,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":2,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":158,"y":538,"w":218,"h":144,"parent_idx":-1,"behavior_id":0},{"id":2,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":82,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":3,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":342,"y":175,"w":321,"h":196,"parent_idx":-1,"behavior_id":0},{"id":3,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":49,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":6,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":362,"y":578,"w":253,"h":132,"parent_idx":-1,"behavior_id":0},{"id":4,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":69,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":4,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":714,"y":608,"w":239,"h":130,"parent_idx":-1,"behavior_id":0},{"id":5,"channel_id":1,"camera_name":"","res_height":1080,"res_width":1920,"confidence":31,"engine_type":1,"label_name":"car","class_id":2,"obj_type":0,"obj_tracking_id":5,"obj_dwell_time":23,"color_id":0,"color":"","linked_plate":"","x":1035,"y":663,"w":340,"h":179,"parent_idx":-1,"behavior_id":0}],"Count":6}'; ai_json = JSON.parse(alarm_test);*/ /* if (index_ == 0) { index_ = 1; alert(ai_json); }*/ var temp = null; temp = datas[i].slice(); radar_json = JSON.parse(temp); //radar_json = validatingJSON(temp); // console.log("radar_json", radar_json); // radar_msg = radar_json; datas[i] = null; //check_cam_time = 1; break; } } /* if (check_cam_time === 1) { if (last_cam_time === "") { last_cam_time = buffer_cam_time; count_the_same_cam_time++; } else if (last_cam_time === buffer_cam_time) { count_the_same_cam_time++; } else { last_cam_time = buffer_cam_time; console.log(count_the_same_cam_time); count_the_same_cam_time = 0; } }*/ if (radar_json != null) { bbox_count = radar_json.Count; } else { bbox_count = 0; } plate_count = 0; plate_idx = 0; /* if (bbox_count == 0) { clear_count_2++; } else { clear_count_2 = 3; }*/ /*if (clear_count_2 >= 3) */ { //clear_count_2 = 0; // RefreshCanvasObject(max_protected_objects); } //console.log("bbox_count: " + bbox_count.toString()); radar_id_num = (Math.random() * 100 % 10) + 1; // console.log("radar_id_num", radar_id_num); if (radar_json != null && (canvasTripwire_radar.getObjects().indexOf(section_line1) != -1)) { // console.log("radar_circle.radar_line.get('x1')"); // console.log("canvasTripwire_radar.getObjects(radar_dot)", canvasTripwire_radar.getObjects(radar_dot)); // while (canvasTripwire_radar.getObjects().indexOf(radar_dot) != -1) { // canvasTripwire_radar.remove(radar_dot); // } // console.log("add circle_ptz indexOf:", canvasTripwire_radar.getObjects().indexOf(circle_ptz)); // if (canvasTripwire_radar.getObjects().indexOf(circle_ptz) == -1) { // RefreshradarDot(4); // } else if (canvasTripwire_radar.getObjects().indexOf(circle_ptz) != -1) { // RefreshradarDot(5); // } // for (var id_index = 0; id_index < 10; id_index++) { // canvasTripwire_radar.remove(radar_dot[id_index]); // } // console.log("radar_json.AiRadar.RadarArray.length", radar_json.AiRadar.RadarArray.length); // console.log("canvasTripwire_radar.getObjects().indexOf(0)", canvasTripwire_radar.getObjects().indexOf(radar_dot)); var d = new Date(); // console.log(d); var getTime_tmp = d.getTime(); //steven modify var a_x = radar_circle.radar_line.get('x1'); var a_y = radar_circle.radar_line.get('y1'); var b_x = radar_circle.radar_line.get('x2'); var b_y = radar_circle.radar_line.get('y2'); var ab_len = Math.sqrt((a_x - b_x) * (a_x - b_x) + (a_y - b_y) * (a_y - b_y)); var distance_meter = document.getElementById("slider_distance").value; // var scalex = ab_len / distance_meter; var scalex = 800 / distance_meter; var rotate_theta = (Math.atan((b_y - a_y) / (b_x - a_x + 0.001)) * 180 / Math.PI) - 90; //console.log(" sucess log radar data a x,y", a_x, a_y, "b x,y", b_x, b_y); if (b_x >= a_x) { document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); } else { if (b_y >= a_y) { document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); } else { document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); } } //steven modify // console.log("radar_json.AiRadar.ptz_p_degree", parseInt(radar_json.AiRadar.ptz_p_degree)); // ptz_degree_tmp = parseInt(radar_json.AiRadar.ptz_p_degree); localStorage.setItem("ptz_degree_tmp", parseInt(radar_json.AiRadar.ptz_p_degree)); // console.log("after radar_json.AiRadar.ptz_p_degree", ptz_degree_tmp); for (var id_index = 0; id_index <= radar_json.AiRadar.RadarArray.length - 1; id_index++) { if (radar_json.AiRadar.RadarArray[id_index].Type == 1) { // 09-27 1 // console.log("document.getElementById(slider_distance).value", document.getElementById("slider_distance").value); var radar_x = radar_json.AiRadar.RadarArray[id_index].PosX; var radar_y = radar_json.AiRadar.RadarArray[id_index].PosY; var radar_z = radar_json.AiRadar.RadarArray[id_index].PosZ; // var radar_x = radar_json.AiRadar.RadarArray[id_index].posX = Math.round(Math.random() * 10000 % 50 - 25); // var radar_y = radar_json.AiRadar.RadarArray[id_index].posY = Math.round(Math.random() * 10000 % 50); // var radar_x = radar_json.AiRadar.RadarArray[0].posX = 25; // var radar_y = radar_json.AiRadar.RadarArray[0].posY = 25; //steven modify //var a_x = radar_circle.radar_line.get('x1'); //var a_y = radar_circle.radar_line.get('y1'); //var b_x = radar_circle.radar_line.get('x2'); //var b_y = radar_circle.radar_line.get('y2'); //var ab_len = Math.sqrt((a_x - b_x) * (a_x - b_x) + (a_y - b_y) * (a_y - b_y)); //var distance_meter = document.getElementById("slider_distance").value; //var scalex = ab_len / distance_meter; //var rotate_theta = (Math.atan((b_y - a_y) / (b_x - a_x + 0.001)) * 180 / Math.PI) - 90; //steven modify // document.getElementById("world_radar_degree").innerHTML = 360 + Math.round(rotate_theta); // var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; // var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); if (b_x >= a_x) { var test_x = Math.round(Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)); // document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); } else { var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); //if (b_y >= a_y) { // document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); //} else { // document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); //} } //read getalarmmotion local x,y // if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes") { // var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; // trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': test_x, 'world_radar_y': test_y, 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time, 'json_world_radar_x': radar_json.AiRadar.RadarArray[id_index].world_radar_x, 'json_world_radar_y': radar_json.AiRadar.RadarArray[id_index].world_radar_y };//add object // } // read getalatmmotion world radar x,y start if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes") { var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_x), 'world_radar_y': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_y), 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time };//add object } // read getalatmmotion world radar x,y end // console.log("radar_json - FrameNum(V1):", radar_json.AiRadar.FrameNum, " , posX:", radar_json.AiRadar.RadarArray[id_index].PosX, " , posY:", radar_json.AiRadar.RadarArray[id_index].PosY, " , world_radar_x:", test_x, " , world_radar_y:", test_y); // console.log("radar_json.AiRadar.RadarArray[" + id_index + "].FrameNum posX posY", radar_json.AiRadar.RadarArray[id_index].FrameNum, radar_json.AiRadar.RadarArray[id_index].PosX, radar_json.AiRadar.RadarArray[id_index].PosY); // // var radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY; // console.log("test_x", test_x, " , test_y", test_y); // radar_dot = makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red'); // canvasTripwire_radar.add(makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red')); //draw radar dot & text // radar_dot = makedot(test_x, test_y, 'red'); // canvasTripwire_radar.add(radar_dot); // canvasTripwire_radar.add(insertTextLabel_Color(test_x + 20, test_y + 20, 50, 50, "V1 (" + parseInt(test_x) + "," + parseInt(test_y) + "), Pos (" + parseFloat(radar_x).toFixed(2) + "," + parseFloat(radar_y).toFixed(2) + ") Speed: " + (radar_json.AiRadar.RadarArray[id_index].Speed), 'red')); // console.log("canvasTripwire_radar.getObjects().length", canvasTripwire_radar.getObjects().length); // console.log("canvasTripwire_radar.getObjects()", canvasTripwire_radar.getObjects()); // console.log("canvasTripwire_radar.getObjects().indexOf(radar_dot)", canvasTripwire_radar.getObjects().indexOf(radar_dot)); // if (canvasTripwire_radar.getObjects().indexOf(radar_dot) > 1) { // canvasTripwire_radar.remove(radar_dot); // } // while (canvasTripwire_radar.getObjects().length > 10) { // var items = canvasTripwire_radar.getObjects(); // console.log("items", items); // if (items[canvasTripwire_radar.getObjects().length - 1]) { // canvasTripwire_radar.remove(items[canvasTripwire_radar.getObjects().length - 1]); // } // } } else if (radar_json.AiRadar.RadarArray[id_index].Type == 2) { // 09-27 2 // console.log("document.getElementById(slider_distance).value", document.getElementById("slider_distance").value); var radar_x = radar_json.AiRadar.RadarArray[id_index].PosX; var radar_y = radar_json.AiRadar.RadarArray[id_index].PosY; // var radar_x = radar_json.AiRadar.RadarArray[id_index].posX = Math.round(Math.random() * 10000 % 50 - 25); // var radar_y = radar_json.AiRadar.RadarArray[id_index].posY = Math.round(Math.random() * 10000 % 50); // var radar_x = radar_json.AiRadar.RadarArray[0].posX = 25; // var radar_y = radar_json.AiRadar.RadarArray[0].posY = 25; //steven modify //var a_x = radar_circle.radar_line.get('x1'); //var a_y = radar_circle.radar_line.get('y1'); //var b_x = radar_circle.radar_line.get('x2'); //var b_y = radar_circle.radar_line.get('y2'); //var ab_len = Math.sqrt((a_x - b_x) * (a_x - b_x) + (a_y - b_y) * (a_y - b_y)); //var distance_meter = document.getElementById("slider_distance").value; //var scalex = ab_len / distance_meter; //var rotate_theta = (Math.atan((b_y - a_y) / (b_x - a_x + 0.001)) * 180 / Math.PI) - 90; //steven modify // document.getElementById("world_radar_degree").innerHTML = 360 + Math.round(rotate_theta); // var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; // var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); if (b_x >= a_x) { var test_x = Math.round(Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)); //document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); } else { var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); //if (b_y >= a_y) { // document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); //} else { // document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); //} } //read getalarmmotion local x,y // if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes") { // var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; // trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': test_x, 'world_radar_y': test_y, 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time, 'json_world_radar_x': radar_json.AiRadar.RadarArray[id_index].world_radar_x, 'json_world_radar_y': radar_json.AiRadar.RadarArray[id_index].world_radar_y };//add object // } // read getalatmmotion world radar x,y start if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes") { var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_x), 'world_radar_y': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_y), 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time };//add object } // read getalatmmotion world radar x,y end // console.log("radar_json - FrameNum(V2):", radar_json.AiRadar.FrameNum, " , posX:", radar_json.AiRadar.RadarArray[id_index].PosX, " , posY:", radar_json.AiRadar.RadarArray[id_index].PosY, " , world_radar_x:", test_x, " , world_radar_y:", test_y, " , csX:", radar_json.AiRadar.RadarArray[id_index].csX, " , csY:", radar_json.AiRadar.RadarArray[id_index].csY); // console.log("radar_json.AiRadar.RadarArray[" + id_index + "].FrameNum posX posY", radar_json.AiRadar.RadarArray[id_index].FrameNum, radar_json.AiRadar.RadarArray[id_index].PosX, radar_json.AiRadar.RadarArray[id_index].PosY); // var radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY; // console.log("test_x", test_x, " , test_y", test_y); // radar_dot = makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red'); // canvasTripwire_radar.add(makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red')); //draw radar dot & text // radar_dot = makedot(test_x, test_y, 'green'); // canvasTripwire_radar.add(radar_dot); // canvasTripwire_radar.add(insertTextLabel_Color(test_x + 20, test_y + 20, 50, 50, "V2 (" + parseInt(test_x) + "," + parseInt(test_y) + "), Pos (" + parseFloat(radar_x).toFixed(2) + "," + parseFloat(radar_y).toFixed(2) + ") Speed: " + (radar_json.AiRadar.RadarArray[id_index].Speed), 'green')); // console.log("canvasTripwire_radar.getObjects().length", canvasTripwire_radar.getObjects().length); // console.log("canvasTripwire_radar.getObjects()", canvasTripwire_radar.getObjects()); // console.log("canvasTripwire_radar.getObjects().indexOf(radar_dot)", canvasTripwire_radar.getObjects().indexOf(radar_dot)); // if (canvasTripwire_radar.getObjects().indexOf(radar_dot) > 1) { // canvasTripwire_radar.remove(radar_dot); // } // while (canvasTripwire_radar.getObjects().length > 10) { // var items = canvasTripwire_radar.getObjects(); // console.log("items", items); // if (items[canvasTripwire_radar.getObjects().length - 1]) { // canvasTripwire_radar.remove(items[canvasTripwire_radar.getObjects().length - 1]); // } // } } else if (radar_json.AiRadar.RadarArray[id_index].Type == 3) { // 09-27 3 // console.log("document.getElementById(slider_distance).value", document.getElementById("slider_distance").value); var radar_x = radar_json.AiRadar.RadarArray[id_index].PosX; var radar_y = radar_json.AiRadar.RadarArray[id_index].PosY; // var radar_x = radar_json.AiRadar.RadarArray[id_index].posX = Math.round(Math.random() * 10000 % 50 - 25); // var radar_y = radar_json.AiRadar.RadarArray[id_index].posY = Math.round(Math.random() * 10000 % 50); // var radar_x = radar_json.AiRadar.RadarArray[0].posX = 25; // var radar_y = radar_json.AiRadar.RadarArray[0].posY = 25; //steven modify //var a_x = radar_circle.radar_line.get('x1'); //var a_y = radar_circle.radar_line.get('y1'); //var b_x = radar_circle.radar_line.get('x2'); //var b_y = radar_circle.radar_line.get('y2'); //var ab_len = Math.sqrt((a_x - b_x) * (a_x - b_x) + (a_y - b_y) * (a_y - b_y)); //var distance_meter = document.getElementById("slider_distance").value; //var scalex = ab_len / distance_meter; //var rotate_theta = (Math.atan((b_y - a_y) / (b_x - a_x + 0.001)) * 180 / Math.PI) - 90; //steven modify // document.getElementById("world_radar_degree").innerHTML = 360 + Math.round(rotate_theta); // var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; // var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); if (b_x >= a_x) { var test_x = Math.round(Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta + 180) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta + 180) * Math.PI / 180) * (radar_y * scalex)); //document.getElementById("world_radar_degree").innerHTML = 270 + Math.round(rotate_theta); } else { var test_x = Math.round(Math.cos((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) - Math.sin((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)) + a_x; var test_y = a_y - Math.round(Math.sin((-rotate_theta) * Math.PI / 180) * (radar_x * scalex) + Math.cos((-rotate_theta) * Math.PI / 180) * (radar_y * scalex)); //if (b_y >= a_y) { // document.getElementById("world_radar_degree").innerHTML = 180 + 270 + Math.round(rotate_theta); //} else { // document.getElementById("world_radar_degree").innerHTML = 90 + Math.round(rotate_theta); //} } //read getalarmmotion local x,y // if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes") { // var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; // trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': test_x, 'world_radar_y': test_y, 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time, 'json_world_radar_x': radar_json.AiRadar.RadarArray[id_index].world_radar_x, 'json_world_radar_y': radar_json.AiRadar.RadarArray[id_index].world_radar_y };//add object // } // read getalatmmotion world radar x,y start if (radar_json.AiRadar.RadarArray[id_index].plot == "Yes" && (Math.abs(radar_json.AiRadar.RadarArray[id_index].Speed) > 0.1)) { var radar_id_name = radar_json.AiRadar.FrameNum + radar_json.AiRadar.RadarArray[id_index].tid; trial_array[radar_id_name] = { 'time': getTime_tmp, 'FrameNum': radar_json.AiRadar.FrameNum, 'Type': radar_json.AiRadar.RadarArray[id_index].Type, 'PosX': radar_x, 'PosY': radar_y, 'PosZ': radar_z, 'world_radar_x': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_x), 'world_radar_y': parseInt(radar_json.AiRadar.RadarArray[id_index].world_radar_y), 'Speed': radar_json.AiRadar.RadarArray[id_index].Speed, 'C': json_trial_life_time };//add object } // read getalatmmotion world radar x,y end // console.log("radar_json - FrameNum(V3):", radar_json.AiRadar.FrameNum, " , posX:", radar_json.AiRadar.RadarArray[id_index].PosX, " , posY:", radar_json.AiRadar.RadarArray[id_index].PosY, " , world_radar_x:", test_x, " , world_radar_y:", test_y, " , Speed:", radar_json.AiRadar.RadarArray[id_index].Speed); // console.log("radar_json - FrameNum(V3):", radar_json.AiRadar.FrameNum, " , posX:", radar_json.AiRadar.RadarArray[id_index].PosX, " , posY:", radar_json.AiRadar.RadarArray[id_index].PosY, " , world_radar_x:", radar_json.AiRadar.RadarArray[id_index].world_radar_x, " , world_radar_y:", radar_json.AiRadar.RadarArray[id_index].world_radar_y); // console.log("radar_json.AiRadar.RadarArray[" + id_index + "].FrameNum posX posY", radar_json.AiRadar.RadarArray[id_index].FrameNum, radar_json.AiRadar.RadarArray[id_index].PosX, radar_json.AiRadar.RadarArray[id_index].PosY); // var radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY; // console.log("test_x", test_x, " , test_y", test_y); // radar_dot = makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red'); // canvasTripwire_radar.add(makedot(radar_json.AiRadar.RadarArray[0].posX, radar_json.AiRadar.RadarArray[0].posY, 'red')); //draw radar dot & text // radar_dot = makedot(test_x, test_y, 'blue'); // canvasTripwire_radar.add(radar_dot); // canvasTripwire_radar.add(insertTextLabel_Color(test_x + 20, test_y + 20, 50, 50, "V3 (" + parseInt(test_x) + "," + parseInt(test_y) + "), Pos (" + parseFloat(radar_x).toFixed(2) + "," + parseFloat(radar_y).toFixed(2) + ") Speed: " + parseFloat(radar_json.AiRadar.RadarArray[id_index].Speed).toFixed(2), 'blue')); // console.log("canvasTripwire_radar.getObjects().length", canvasTripwire_radar.getObjects().length); // console.log("canvasTripwire_radar.getObjects()", canvasTripwire_radar.getObjects()); // console.log("canvasTripwire_radar.getObjects().indexOf(radar_dot)", canvasTripwire_radar.getObjects().indexOf(radar_dot)); // if (canvasTripwire_radar.getObjects().indexOf(radar_dot) > 1) { // canvasTripwire_radar.remove(radar_dot); // } // while (canvasTripwire_radar.getObjects().length > 10) { // var items = canvasTripwire_radar.getObjects(); // console.log("items", items); // if (items[canvasTripwire_radar.getObjects().length - 1]) { // canvasTripwire_radar.remove(items[canvasTripwire_radar.getObjects().length - 1]); // } // } } else { console.log("radar_json.AiRadar.RadarArray[" + id_index + "].Type", radar_json.AiRadar.RadarArray[id_index].Type); } } // console.log("trial_array", trial_array); // draw_radar_dot(); } } else { wait_count++; if (wait_count >= 3) { wait_count = 0; complete_data = ""; } clear_count++; if (clear_count >= 3) { clear_count = 0; // if (canvasTripwire_radar.getObjects().indexOf(circle_ptz) == -1) { // RefreshradarDot(4); // } else if (canvasTripwire_radar.getObjects().indexOf(circle_ptz) != -1) { // RefreshradarDot(5); // } // RefreshCanvasObject(max_protected_objects); } } } } function RefreshCanvasObject(max_protected_objects) { console.log("RefreshCanvasObject"); if (typeof canvasTripwire_radar !== 'undefined') { //Clear all objects while (canvasTripwire_radar.getObjects().length > max_protected_objects) { var items = canvasTripwire_radar.getObjects(); console.log("items", items); if (items[canvasTripwire_radar.getObjects().length - 1]) { canvasTripwire_radar.remove(items[canvasTripwire_radar.getObjects().length - 1]); } } } } var g_GetRequest = null; var g_h = -1; var g_m = -1; var g_s = -1; var g_ms = -1; var g_time_canvas = 50; var g_imgUrl = ""; var g_speed = 99999; var g_times_update_canvas = 0; var g_avg_speed = 7000; var get_bg_count = 0; function radarGetRequest() { clearInterval(g_GetRequest); g_GetRequest = setInterval(function GetRequest_set_interval() { var current_page = localStorage.getItem('current_page'); var win_width = G_VIEW_CANVAS_X, win_height = G_VIEW_CANVAS_Y; if (current_page === 'radar') { if (data_radar != sessionStorage.getItem('getalarmmotion_data')) { data_radar = sessionStorage.getItem('getalarmmotion_data'); GetAlarm_radar(data_radar); } var win_width = 800, win_height = 600; //var imgUrl = 'http://' + window.location.hostname + ":" + GetUrlPort() + '/bgsnap' + Math.random(); var imgUrl = 'http://' + window.location.hostname + ":" + GetUrlPort() + '/bgsnap'; if (get_bg_count == 0) { get_bg_count = 100; if (canvasTripwire_radar) { canvasTripwire_radar.renderAll(); } try { fabric.Image.fromURL(imgUrl, function (img) { if (img != null && img._element != null) { img.set({ scaleX: win_width / img.width, scaleY: win_height / img.height, }); canvasTripwire_radar.setBackgroundImage(img, () => canvasTripwire_radar.renderAll.bind(canvasTripwire_radar)); img = null; } }); //console.log("radar snap"); } catch (e) { console.log(e); } } else { get_bg_count--; } imgUrl = null; } }, g_time_canvas); }