You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1176 lines
68 KiB

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);
}