Files
apt-nl-map/static/Magic4/Sketch/HMI_Sketch_Right_bak.html

2263 lines
121 KiB
HTML
Raw Normal View History

2024-12-04 10:21:04 +08:00
<!DOCTYPE html>
<!-- <html lang="en" id="container" onmousedown="startDrag(event)" onmouseup="stopDrag(event)" onmousemove="dragging(event)"
style="overflow-x: hidden;
overflow-y: hidden; "> -->
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="../jquery-2.1.0.min.js"></script>
<script src="../jquery.cookie.js"></script>
<script type="text/javascript" src="../Lu_Math_Driver.js"></script>
<script type="text/javascript" src="../Lu_Learn_Driver.js"></script>
<script type="text/javascript" src="../paperjs-v0.12.15/docs/assets/js/paper.js"></script>
<script type="text/javascript">
var Car_Global_rx = 0;
var Car_Global_ry = 0;
var Car_Global_Theta = 0;
var Last_Rec_Car_Global_rx = 0;
var Last_Rec_Car_Global_ry = 0;
var Last_Rec_Car_Global_Theta = 0;
var CarGlobalPositionRecArr = new Array();
var LastCarGlobalPositionRecArrLen = 0;
var CarGlobalPositionRecSch = 0;
var Learn_Ref_State = false;
var Learn_Ref_NodeID = 0;
var Learn_Ref_Node_x = 0.0;
var Learn_Ref_Node_y = 0.0;
var Learn_Ref_Node_t = 0.0;
paper.install(window);
var ZoomMin = 1e-4;
var ZoomMax = 1e3;
var Resolution = 20.0;
const ScreenPanInitx = 100.0;
const ScreenPanInity = 300.0;
var ZoomInit = 1.0;
var ScreenPanRecord = new Point(ScreenPanInitx, ScreenPanInity);
var ZoomRecord = ZoomInit;
var draw_sch = 0;
var period_times = 0;
var HMI_Sketch_Left = "";
var HMI_Sketch_Left_LearnLineAB_Sch = "";
var LearnLineAB_Sch = 0;
var LearnLineAB_PointA_rx = 0;
var LearnLineAB_PointA_ry = 0;
var LearnLineAB_PointA_rt = 0;
var LearnLineAB_PointB_rx = 0;
var LearnLineAB_PointB_ry = 0;
var LearnLineAB_PointB_rt = 0;
var LearnLineAB_Direction = "";
var HMI_Sketch_Left_LearnLineAH_Sch = "";
var LearnLineAH_Sch = 0;
var LearnLineAH_PointA_rx = 0;
var LearnLineAH_PointA_ry = 0;
var LearnLineAH_PointA_rt = 0;
var LearnLineAH_PointB_rx = 0;
var LearnLineAH_PointB_ry = 0;
var LearnLineAH_PointB_rt = 0;
var LearnLineAH_Direction = "";
var AH_Global_rx = 0;
var AH_Global_ry = 0;
var AH_Global_rt = 0;
var HMI_Sketch_Left_LearnBezierAB_Sch = "";
var LearnBezierAB_Sch = 0;
var LearnBezierAB_PointA_rx = 0;
var LearnBezierAB_PointA_ry = 0;
var LearnBezierAB_PointA_rt = 0;
var LearnBezierAB_PointB_rx = 0;
var LearnBezierAB_PointB_ry = 0;
var LearnBezierAB_PointB_rt = 0;
var LearnBezierAB_Direction = "";
var LearnBezierAB_Slider1 = 0;
var LearnBezierAB_Slider2 = 0;
var LearnBezierAB_Slider3 = 0;
var LearnBezierAB_ANext_rx = 0;
var LearnBezierAB_ANext_ry = 0;
var LearnBezierAB_BLast_rx = 0;
var LearnBezierAB_BLast_ry = 0;
const step = 0.05;
var step_num = (Math.floor)(1 / step) + 1;
console.log("step_num:" + step_num);
var HMI_Sketch_Left_LearnWayPointAB_Sch = "";
var LearnWayPointAB_Sch = 0;
var LearnWayPointRecArr = new Array();
var LastLearnWayPointRecArrLen = 0;
var LearnWayPointAB_Direction = "";
var HMI_Sketch_Left_LearnWayPointAB3_Sch = "";
var LearnWayPointAB3_Sch = 0;
var LearnWayPoint3RecArr = new Array();
var LastLearnWayPoint3RecArrLen = 0;
var LearnWayPointAB3_Direction = "";
var HMI_Sketch_Left_LearnWayPointAB4_Sch = "";
var LearnWayPointAB4_Sch = 0;
var LearnWayPoint4RecArr = new Array();
var LastLearnWayPoint4RecArrLen = 0;
var LearnWayPointAB4_Direction = "";
var ButtonImage_Vertical_FollowCar = false;
var sleep = function(time) {
var startTime = new Date().getTime() + parseInt(time, 10);
while (new Date().getTime() < startTime) {}
};
function addEvent(obj, xEvent, fn) {
if (obj.attachEvent) {
obj.attachEvent('on' + xEvent, fn);
} else {
obj.addEventListener(xEvent, fn, false);
}
}
function client_request(str) {
$('#output').html("");
window.parent.postMessage({
event_id: 'client_request',
data: {
v1: str
}
},
"*" //or "www.parentpage.com"
);
}
var Get_LearnPathTable_File_OK = false;
var Get_LearnNodePointManagerTable_File_OK = false;
var Get_LearnPointCloud_File_OK = false;
function Lu_Parse_HMI_Sketch_Left() {
switch (HMI_Sketch_Left) {
case "LearnWayPointAB": {
LearnBezierAB_Sch = 0;
LearnLineAB_Sch = 0;
LearnLineAH_Sch = 0;
LearnWayPointAB3_Sch = 0;
LearnWayPointAB4_Sch = 0;
}
break;
case "LearnWayPointAB3": {
LearnBezierAB_Sch = 0;
LearnLineAB_Sch = 0;
LearnLineAH_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB4_Sch = 0;
}
break;
case "LearnWayPointAB4": {
LearnBezierAB_Sch = 0;
LearnLineAB_Sch = 0;
LearnLineAH_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB3_Sch = 0;
}
break;
case "LearnLineAB": {
LearnBezierAB_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB3_Sch = 0;
LearnWayPointAB4_Sch = 0;
LearnLineAH_Sch = 0;
}
break;
case "LearnLineAH": {
LearnBezierAB_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB3_Sch = 0;
LearnWayPointAB4_Sch = 0;
LearnLineAB_Sch = 0;
}
break;
case "LearnBezierAB": {
LearnLineAB_Sch = 0;
LearnLineAH_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB3_Sch = 0;
LearnWayPointAB4_Sch = 0;
}
break;
case "Main": {
LearnLineAB_Sch = 0;
LearnLineAH_Sch = 0;
LearnBezierAB_Sch = 0;
LearnWayPointAB_Sch = 0;
LearnWayPointAB3_Sch = 0;
LearnWayPointAB4_Sch = 0;
}
break;
}
}
function Lu_Parse_LearnLineAB_Sch() {
if (HMI_Sketch_Left_LearnLineAB_Sch != "") {
var frame = HMI_Sketch_Left_LearnLineAB_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnLineAB_Sch = sch_item_info[1];
var PointA_item = item[1];
var PointA_item_info = PointA_item.split(':');
var PointA_item_info_data = PointA_item_info[1];
var PointA_item_info_data_arr = PointA_item_info_data.split(',');
LearnLineAB_PointA_rx = parseFloat(PointA_item_info_data_arr[0]);
LearnLineAB_PointA_ry = parseFloat(PointA_item_info_data_arr[1]);
LearnLineAB_PointA_rt = parseFloat(PointA_item_info_data_arr[2]);
var PointB_item = item[2];
var PointB_item_info = PointB_item.split(':');
var PointB_item_info_data = PointB_item_info[1];
var PointB_item_info_data_arr = PointB_item_info_data.split(',');
LearnLineAB_PointB_rx = parseFloat(PointB_item_info_data_arr[0]);
LearnLineAB_PointB_ry = parseFloat(PointB_item_info_data_arr[1]);
LearnLineAB_PointB_rt = parseFloat(PointB_item_info_data_arr[2]);
var direction_item = item[3];
var direction_item_info = direction_item.split(':');
LearnLineAB_Direction = direction_item_info[1];
} else {
//LearnLineAB_Sch=0;
}
}
function Lu_Parse_LearnLineAH_Sch() {
if (HMI_Sketch_Left_LearnLineAH_Sch != "") {
var frame = HMI_Sketch_Left_LearnLineAH_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnLineAH_Sch = sch_item_info[1];
var PointA_item = item[1];
var PointA_item_info = PointA_item.split(':');
var PointA_item_info_data = PointA_item_info[1];
var PointA_item_info_data_arr = PointA_item_info_data.split(',');
LearnLineAH_PointA_rx = parseFloat(PointA_item_info_data_arr[0]);
LearnLineAH_PointA_ry = parseFloat(PointA_item_info_data_arr[1]);
LearnLineAH_PointA_rt = parseFloat(PointA_item_info_data_arr[2]);
var PointB_item = item[2];
var PointB_item_info = PointB_item.split(':');
var PointB_item_info_data = PointB_item_info[1];
var PointB_item_info_data_arr = PointB_item_info_data.split(',');
LearnLineAH_PointB_rx = parseFloat(PointB_item_info_data_arr[0]);
LearnLineAH_PointB_ry = parseFloat(PointB_item_info_data_arr[1]);
LearnLineAH_PointB_rt = parseFloat(PointB_item_info_data_arr[2]);
var direction_item = item[3];
var direction_item_info = direction_item.split(':');
LearnLineAH_Direction = direction_item_info[1];
} else {
//LearnLineAH_Sch=0;
}
}
function Lu_Parse_LearnWayPointAB4_Sch() {
if (HMI_Sketch_Left_LearnWayPointAB4_Sch != "") {
//console.log(HMI_Sketch_Left_LearnWayPointAB4_Sch);
var frame = HMI_Sketch_Left_LearnWayPointAB4_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnWayPointAB4_Sch = sch_item_info[1];
LearnWayPoint4RecArr = [];
for (let i = 1; i < item.length; i++) {
var item_sub = item[i].split(":");
if (item_sub[0] == "Point") {
var item_sub_info_data_arr = item_sub[1].split(',');
var Rec_WP = new Object();
Rec_WP.Car_Global_rx = parseFloat(item_sub_info_data_arr[0]);
Rec_WP.Car_Global_ry = parseFloat(item_sub_info_data_arr[1]);
Rec_WP.Car_Global_Theta = parseFloat(item_sub_info_data_arr[2]);
LearnWayPoint4RecArr.push(Rec_WP);
} else if (item_sub[0] == "Direction") {
LearnWayPointAB4_Direction = item_sub[1];
}
}
} else {
}
//console.log(LearnWayPointRecArr);
}
function Lu_Parse_LearnWayPointAB3_Sch() {
if (HMI_Sketch_Left_LearnWayPointAB3_Sch != "") {
//console.log(HMI_Sketch_Left_LearnWayPointAB3_Sch);
var frame = HMI_Sketch_Left_LearnWayPointAB3_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnWayPointAB3_Sch = sch_item_info[1];
LearnWayPoint3RecArr = [];
for (let i = 1; i < item.length; i++) {
var item_sub = item[i].split(":");
if (item_sub[0] == "Point") {
var item_sub_info_data_arr = item_sub[1].split(',');
var Rec_WP = new Object();
Rec_WP.Car_Global_rx = parseFloat(item_sub_info_data_arr[0]);
Rec_WP.Car_Global_ry = parseFloat(item_sub_info_data_arr[1]);
Rec_WP.Car_Global_Theta = parseFloat(item_sub_info_data_arr[2]);
LearnWayPoint3RecArr.push(Rec_WP);
} else if (item_sub[0] == "Direction") {
LearnWayPointAB3_Direction = item_sub[1];
}
}
} else {
}
//console.log(LearnWayPointRecArr);
}
function Lu_Parse_LearnWayPointAB_Sch() {
if (HMI_Sketch_Left_LearnWayPointAB_Sch != "") {
console.log(HMI_Sketch_Left_LearnWayPointAB_Sch);
var frame = HMI_Sketch_Left_LearnWayPointAB_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnWayPointAB_Sch = sch_item_info[1];
LearnWayPointRecArr = [];
for (let i = 1; i < item.length; i++) {
var item_sub = item[i].split(":");
if (item_sub[0] == "Point") {
var item_sub_info_data_arr = item_sub[1].split(',');
var Rec_WP = new Object();
Rec_WP.Car_Global_rx = parseFloat(item_sub_info_data_arr[0]);
Rec_WP.Car_Global_ry = parseFloat(item_sub_info_data_arr[1]);
Rec_WP.Car_Global_Theta = parseFloat(item_sub_info_data_arr[2]);
LearnWayPointRecArr.push(Rec_WP);
} else if (item_sub[0] == "Direction") {
LearnWayPointAB_Direction = item_sub[1];
}
}
} else {
}
//console.log(LearnWayPointRecArr);
}
function Lu_Parse_LearnBezierAB_Sch() {
if (HMI_Sketch_Left_LearnBezierAB_Sch != "") {
//console.log(HMI_Sketch_Left_LearnBezierAB_Sch);
var frame = HMI_Sketch_Left_LearnBezierAB_Sch.split('#');
var head = frame[0];
var item = head.split(';');
var sch_item = item[0];
var sch_item_info = sch_item.split(':');
LearnBezierAB_Sch = sch_item_info[1];
//console.log("LearnBezierAB_Sch:"+LearnBezierAB_Sch);
var PointA_item = item[1];
var PointA_item_info = PointA_item.split(':');
var PointA_item_info_data = PointA_item_info[1];
var PointA_item_info_data_arr = PointA_item_info_data.split(',');
LearnBezierAB_PointA_rx = parseFloat(PointA_item_info_data_arr[0]);
LearnBezierAB_PointA_ry = parseFloat(PointA_item_info_data_arr[1]);
LearnBezierAB_PointA_rt = parseFloat(PointA_item_info_data_arr[2]);
var PointB_item = item[2];
var PointB_item_info = PointB_item.split(':');
var PointB_item_info_data = PointB_item_info[1];
var PointB_item_info_data_arr = PointB_item_info_data.split(',');
LearnBezierAB_PointB_rx = parseFloat(PointB_item_info_data_arr[0]);
LearnBezierAB_PointB_ry = parseFloat(PointB_item_info_data_arr[1]);
LearnBezierAB_PointB_rt = parseFloat(PointB_item_info_data_arr[2]);
var direction_item = item[3];
var direction_item_info = direction_item.split(':');
LearnBezierAB_Direction = direction_item_info[1];
var slider_item = item[4];
var slider_item_info = slider_item.split(':');
var slider_item_info_data = slider_item_info[1];
var slider_item_info_data_arr = slider_item_info_data.split(',');
LearnBezierAB_Slider1 = parseInt(slider_item_info_data_arr[0]);
LearnBezierAB_Slider2 = parseInt(slider_item_info_data_arr[1]);
LearnBezierAB_Slider3 = parseInt(slider_item_info_data_arr[2]);
//console.log('Slider1:'+LearnBezierAB_Slider1+" Slider2:"+LearnBezierAB_Slider2);
var LearnBezierAB_ANext = Lu_GetBezier_SP_Next_Point(
LearnBezierAB_PointA_rx,
LearnBezierAB_PointA_ry,
LearnBezierAB_PointA_rt,
LearnBezierAB_Direction,
LearnBezierAB_Slider3, LearnBezierAB_Slider1);
LearnBezierAB_ANext_rx = LearnBezierAB_ANext.x;
LearnBezierAB_ANext_ry = LearnBezierAB_ANext.y;
var LearnBezierAB_BLast = Lu_GetBezier_EP_Last_Point(
LearnBezierAB_PointB_rx,
LearnBezierAB_PointB_ry,
LearnBezierAB_PointB_rt,
LearnBezierAB_Direction,
LearnBezierAB_Slider3, LearnBezierAB_Slider2);
LearnBezierAB_BLast_rx = LearnBezierAB_BLast.x;
LearnBezierAB_BLast_ry = LearnBezierAB_BLast.y;
//console.log("("+LearnBezierAB_ANext_rx+","+LearnBezierAB_ANext_ry+")"+"("+LearnBezierAB_BLast_rx+","+LearnBezierAB_BLast_ry+")");
} else {
}
}
var time_count = 0;
var client_sch = 0;
function Timer() {
$.cookie("AH_Global_rx", AH_Global_rx, {
secure: true
});
$.cookie("AH_Global_ry", AH_Global_ry, {
secure: true
});
$.cookie("AH_Global_rt", AH_Global_rt, {
secure: true
});
Car_Global_rx = parseFloat($.cookie('Car_Global_rx')); //Car_Global_rx=parseFloat(getCookie('Car_Global_rx'));
Car_Global_ry = parseFloat($.cookie('Car_Global_ry')); //Car_Global_ry=parseFloat(getCookie('Car_Global_ry'));
Car_Global_Theta = parseFloat($.cookie(
'Car_Global_Theta')); //Car_Global_Theta=parseFloat(getCookie('Car_Global_Theta'));
//console.log("Timer rx:"+Car_Global_rx+" ry:"+Car_Global_ry+" rt:"+Car_Global_Theta);
HMI_Sketch_Left = $.cookie('HMI_Sketch_Left'); //HMI_Sketch_Left=getCookie('HMI_Sketch_Left');
Lu_Parse_HMI_Sketch_Left();
if ($.cookie('LearnLineAB_Sch') != null) HMI_Sketch_Left_LearnLineAB_Sch = decodeURIComponent($.cookie(
'LearnLineAB_Sch'
)); //HMI_Sketch_Left_LearnLineAB_Sch=$.cookie('LearnLineAB_Sch');//HMI_Sketch_Left_LearnLineAB_Sch=decodeURIComponent(getCookie('LearnLineAB_Sch'));
if ($.cookie('LearnLineAH_Sch') != null) HMI_Sketch_Left_LearnLineAH_Sch = decodeURIComponent($.cookie(
'LearnLineAH_Sch'));
if ($.cookie('LearnBezierAB_Sch') != null) HMI_Sketch_Left_LearnBezierAB_Sch = decodeURIComponent($.cookie(
'LearnBezierAB_Sch'
)); //HMI_Sketch_Left_LearnBezierAB_Sch=decodeURIComponent(getCookie('LearnBezierAB_Sch'));
if ($.cookie('LearnWayPointAB_Sch') != null) HMI_Sketch_Left_LearnWayPointAB_Sch = decodeURIComponent($.cookie(
'LearnWayPointAB_Sch'
)); //HMI_Sketch_Left_LearnWayPointAB_Sch=decodeURIComponent(getCookie('LearnWayPointAB_Sch'));
if ($.cookie('LearnWayPointAB3_Sch') != null) HMI_Sketch_Left_LearnWayPointAB3_Sch = decodeURIComponent($.cookie(
'LearnWayPointAB3_Sch'
)); //HMI_Sketch_Left_LearnWayPointAB3_Sch=decodeURIComponent(getCookie('LearnWayPointAB3_Sch'));
if ($.cookie('LearnWayPointAB4_Sch') != null) HMI_Sketch_Left_LearnWayPointAB4_Sch = decodeURIComponent($.cookie(
'LearnWayPointAB4_Sch'
)); //HMI_Sketch_Left_LearnWayPointAB4_Sch=decodeURIComponent(getCookie('LearnWayPointAB4_Sch'));
//console.log("HMI_Sketch_Left_LearnBezierAB_Sch"+HMI_Sketch_Left_LearnBezierAB_Sch);
//console.log("HMI_Sketch_Left_LearnWayPointAB_Sch"+HMI_Sketch_Left_LearnWayPointAB_Sch);
Lu_Parse_LearnLineAB_Sch();
Lu_Parse_LearnLineAH_Sch();
Lu_Parse_LearnBezierAB_Sch();
Lu_Parse_LearnWayPointAB_Sch();
Lu_Parse_LearnWayPointAB3_Sch();
Lu_Parse_LearnWayPointAB4_Sch();
Learn_Ref_State = $.cookie('Learn_Ref_State'); //Learn_Ref_State=getCookie('Learn_Ref_State');
Learn_Ref_NodeID = $.cookie('Learn_Ref_NodeID'); //Learn_Ref_NodeID=getCookie('Learn_Ref_NodeID');
Learn_Ref_Node_x = parseFloat($.cookie(
'Learn_Ref_Node_x')); //Learn_Ref_Node_x=parseFloat(getCookie('Learn_Ref_Node_x'));
Learn_Ref_Node_y = parseFloat($.cookie(
'Learn_Ref_Node_y')); //Learn_Ref_Node_y=parseFloat(getCookie('Learn_Ref_Node_y'));
Learn_Ref_Node_t = parseFloat($.cookie(
'Learn_Ref_Node_t')); //Learn_Ref_Node_t=parseFloat(getCookie('Learn_Ref_Node_t'));
//console.log(Learn_Ref_State+" "+Learn_Ref_Node_x+" "+Learn_Ref_Node_y+" "+Learn_Ref_Node_t);
//console.log(HMI_Sketch_Left);
//console.log(HMI_Sketch_Left_LearnLineAB_Sch);
//console.log(HMI_Sketch_Left_LearnBezierAB_Sch);
//console.log(LearnLineAB_Sch);
//console.log(LearnLineAB_PointA_rx+" "+LearnLineAB_PointA_ry+" "+LearnLineAB_PointA_rt+" "+LearnLineAB_PointB_rx+" "+LearnLineAB_PointB_ry+" "+LearnLineAB_PointB_rt);
if ( /*LearnLineAB_Sch>0 ||*/ (LearnBezierAB_Sch > 0 && LearnBezierAB_Sch < 4) || (LearnWayPointAB_Sch > 0 &&
LearnWayPointAB_Sch < 4) || (LearnWayPointAB3_Sch > 0 && LearnWayPointAB3_Sch < 4) || (
LearnWayPointAB4_Sch > 0 && LearnWayPointAB4_Sch < 4)) {
CarGlobalPositionRecSch = 1;
} else {
CarGlobalPositionRecSch = 0;
}
//console.log("LearnBezierAB_Sch:"+LearnBezierAB_Sch);
//console.log("LearnWayPointAB_Sch:"+LearnWayPointAB_Sch);
if (CarGlobalPositionRecSch == 1) {
var dist = Lu_Get_Dist(Car_Global_rx, Car_Global_ry, Last_Rec_Car_Global_rx, Last_Rec_Car_Global_ry);
var anglediff = Car_Global_Theta - Last_Rec_Car_Global_Theta;
anglediff = Lu_Normal_Deg(-180, 180, anglediff);
if (dist > 0.5 || (Math.abs(anglediff) > 1 && dist < 0.05) || CarGlobalPositionRecArr.length == 0) {
var Rec_Position = new Object();
Rec_Position.Car_Global_rx = Car_Global_rx;
Rec_Position.Car_Global_ry = Car_Global_ry;
Rec_Position.Car_Global_Theta = Car_Global_Theta;
CarGlobalPositionRecArr.push(Rec_Position);
Last_Rec_Car_Global_rx = Car_Global_rx;
Last_Rec_Car_Global_ry = Car_Global_ry;
Last_Rec_Car_Global_Theta = Car_Global_Theta;
//console.log(CarGlobalPositionRecArr);
}
} else {
CarGlobalPositionRecArr = [];
}
/*
if(client_sch==0){
client_request("GetLearnPathTable");
client_sch=1;
}
else if(client_sch==1){
client_request("GetLearnNodePointManagerTable");
client_sch=2;
}
else if(client_sch==2){
client_request("GetLearnPointCloud");
client_sch=3;
}*/
if (time_count == 0) {
/*if (Get_LearnPathTable_File_OK == false) client_request("GetLearnPathTable");
if (Get_LearnPathTable_File_OK == true && Get_LearnNodePointManagerTable_File_OK == false) client_request("GetLearnNodePointManagerTable");
if (Get_LearnPathTable_File_OK == true && Get_LearnNodePointManagerTable_File_OK == true && Get_LearnPointCloud_File_OK == false) client_request("GetLearnPointCloud");
*/
client_request("GetLearnPathTable");
client_request("GetLearnNodePointManagerTable");
client_request("GetLearnPointCloud");
//console.log("===========================client_request============================");
}
time_count++;
if (time_count > 10) {
if (Get_LearnPathTable_File_OK == false || Get_LearnNodePointManagerTable_File_OK == false ||
Get_LearnPointCloud_File_OK == false) time_count = 0;
}
}
window.setInterval("Timer()", 100);
function Lu_TransferModelToCanvasForCoordinateCanvas(Model, OriginCanvasInitPosition) {
var canvas = document.getElementById('myCanvas');
var canvas_height = parseFloat(canvas.style.height);
var x = Model.x * Resolution + OriginCanvasInitPosition.x;
var y = canvas_height - Model.y * Resolution + OriginCanvasInitPosition.y;
var obj = new Object();
obj.x = x;
obj.y = y;
return obj;
}
function Lu_TransferModelToCanvasWithCoordinateCanvas(Model, CoordinateCanvasLine) {
var canvas = document.getElementById('myCanvas');
// *20 (x = 100 , y == 300)
var x = Model.x * Resolution + CoordinateCanvasLine.OriginCanvasPosition.x;
var y = 0 - Model.y * Resolution + CoordinateCanvasLine.OriginCanvasPosition.y;
var obj = new Object();
obj.x = x;
obj.y = y;
return obj;
}
function Lu_Create_CoordinateModelLine(modellength) {
var OriginPoint = new Point(0.0, 0.0);
var XPoint = new Point(modellength, 0.0);
var YPoint = new Point(0.0, modellength);
var XModelText = new Object();
XModelText.ModelPosition = XPoint;
XModelText.Str = "x";
XModelText.Color = "red";
XModelText.Size = 25;
var YModelText = new Object();
YModelText.ModelPosition = YPoint;
YModelText.Str = "y";
YModelText.Color = "green";
YModelText.Size = 25;
var XModelLine = new Object();
XModelLine.ModelStart = OriginPoint;
XModelLine.ModelEnd = XPoint;
XModelLine.Color = "red";
var YModelLine = new Object();
YModelLine.ModelStart = OriginPoint;
YModelLine.ModelEnd = YPoint;
YModelLine.Color = "green";
var CoordinateModelLine = new Object();
CoordinateModelLine.XModelText = XModelText;
CoordinateModelLine.YModelText = YModelText;
CoordinateModelLine.XModelLine = XModelLine;
CoordinateModelLine.YModelLine = YModelLine;
return CoordinateModelLine;
}
function Lu_Create_PathModelLine(PathTable_Line, Color, PathModelLineArr) {
var PathModelLine = new Object();
PathModelLine.PathTable_Line = PathTable_Line;
//PathModelLine.ModelStart=ModelStart;
//PathModelLine.ModelEnd=ModelEnd;
PathModelLine.Color = Color;
PathModelLineArr.push(PathModelLine);
}
function Lu_Create_PathModelArc(PathTable_Arc, Color, PathModelArcArr) {
var PathModelArc = new Object();
PathModelArc.PathTable_Arc = PathTable_Arc;
PathModelArc.Color = Color;
PathModelArcArr.push(PathModelArc);
}
function Lu_Create_PathModelOriginTurn(PathTable_OriginTurn, Color, PathModelOriginTurnArr) {
var PathModelOriginTurn = new Object();
PathModelOriginTurn.PathTable_OriginTurn = PathTable_OriginTurn;
PathModelOriginTurn.Color = Color;
PathModelOriginTurnArr.push(PathModelOriginTurn);
}
function Lu_Create_PathModelBezier(PathTable_Bezier, Color, PathModelBezierArr) {
var PathModelBezier = new Object();
PathModelBezier.PathTable_Bezier = PathTable_Bezier;
PathModelBezier.Color = Color;
PathModelBezierArr.push(PathModelBezier);
}
function Lu_Create_PathModelWayPoint(PathTable_WayPoint, Color, PathModelWayPointArr) {
var PathModelWayPoint = new Object();
PathModelWayPoint.PathTable_WayPoint = PathTable_WayPoint;
PathModelWayPoint.Color = Color;
PathModelWayPointArr.push(PathModelWayPoint);
}
function Lu_Create_PathNodeModel(PathNode, Color, Size, PathNodeModelArr) {
var PathNodeModel = new Object();
PathNodeModel.PathNode = PathNode;
PathNodeModel.Color = Color;
PathNodeModel.Size = Size;
PathNodeModelArr.push(PathNodeModel);
}
function Lu_Create_LearnPointCloud(PointCloud, Color, Size, PointCloudModelArr) {
var PointCloudModel = new Object();
PointCloudModel.PointCloud = PointCloud;
PointCloudModel.Color = Color;
PointCloudModel.Size = Size;
PointCloudModelArr.push(PointCloudModel);
}
function Lu_Create_CarModel(CarModelArr) {
var CarModel = new Object();
CarModel.x_m = Car_Global_rx;
CarModel.y_m = Car_Global_ry;
CarModel.t_deg = Car_Global_Theta;
CarModelArr.push(CarModel);
}
function Lu_Create_RefModel(RefModelArr) {
var RefModel = new Object();
RefModel.x_m = Learn_Ref_Node_x;
RefModel.y_m = Learn_Ref_Node_y;
RefModel.t_deg = Learn_Ref_Node_t;
RefModelArr.push(RefModel);
}
function Lu_Draw_CoordinateCanvasLine(CoordinateModelLine, OriginCanvasInitPosition) {
var XModelText = CoordinateModelLine.XModelText;
var YModelText = CoordinateModelLine.YModelText;
var XModelLine = CoordinateModelLine.XModelLine;
var YModelLine = CoordinateModelLine.YModelLine;
var XCanvasTextPosition = Lu_TransferModelToCanvasForCoordinateCanvas(XModelText.ModelPosition,
OriginCanvasInitPosition);
var XCanvasText = new PointText(new Point(XCanvasTextPosition.x, XCanvasTextPosition.y));
XCanvasText.justification = 'center';
XCanvasText.fillColor = XModelText.Color;
XCanvasText.content = XModelText.Str;
XCanvasText.fontSize = XModelText.Size; //'25px';
var YCanvasTextPosition = Lu_TransferModelToCanvasForCoordinateCanvas(YModelText.ModelPosition,
OriginCanvasInitPosition);
var YCanvasText = new PointText(new Point(YCanvasTextPosition.x, YCanvasTextPosition.y));
YCanvasText.justification = 'center';
YCanvasText.fillColor = YModelText.Color;
YCanvasText.content = YModelText.Str;
YCanvasText.fontSize = YModelText.Size; //'25px';
var XCanvasLine = new paper.Path();
var XCanvasLineStart = Lu_TransferModelToCanvasForCoordinateCanvas(XModelLine.ModelStart,
OriginCanvasInitPosition);
var XCanvasLineEnd = Lu_TransferModelToCanvasForCoordinateCanvas(XModelLine.ModelEnd, OriginCanvasInitPosition);
XCanvasLine.strokeColor = XModelLine.Color;
XCanvasLine.moveTo(XCanvasLineStart);
XCanvasLine.lineTo(XCanvasLineEnd);
var YCanvasLine = new paper.Path();
var YCanvasLineStart = Lu_TransferModelToCanvasForCoordinateCanvas(YModelLine.ModelStart,
OriginCanvasInitPosition);
var YCanvasLineEnd = Lu_TransferModelToCanvasForCoordinateCanvas(YModelLine.ModelEnd, OriginCanvasInitPosition);
YCanvasLine.strokeColor = YModelLine.Color;
YCanvasLine.moveTo(YCanvasLineStart);
YCanvasLine.lineTo(YCanvasLineEnd);
var CoordinateCanvasLine = new Object();
CoordinateCanvasLine.XCanvasText = XCanvasText;
CoordinateCanvasLine.YCanvasText = YCanvasText;
CoordinateCanvasLine.XCanvasLine = XCanvasLine;
CoordinateCanvasLine.YCanvasLine = YCanvasLine;
CoordinateCanvasLine.OriginCanvasPosition = XCanvasLineStart;
console.log(CoordinateCanvasLine.OriginCanvasPosition);
return CoordinateCanvasLine;
}
var lines = [];
function Lu_Draw_PathCanvasLineArr(PathModelLineArr, PathCanvasLineArr, CoordinateCanvasLine) {
for (let i = 0; i < PathModelLineArr.length; i++) {
var PathModelLine = PathModelLineArr[i].PathTable_Line;
var Direction = PathModelLine.rundirection;
//console.log(PathModelLine);
var path = new paper.Path();
var CanvasStart = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelLine.start_point,
CoordinateCanvasLine);
var CanvasEnd = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelLine.end_point, CoordinateCanvasLine);
var aa = {};
aa["p1"] = CanvasStart;
aa["p2"] = CanvasEnd;
aa["flag"] = 0;
lines.push(aa)
if (Direction == "Front") {
path.strokeColor = "green";
path.strokeWidth = "3";
} else {
path.strokeColor = "red";
path.strokeWidth = "1";
}
//path.strokeColor = PathModelLine.Color;
path.moveTo(CanvasStart);
path.lineTo(CanvasEnd);
PathCanvasLineArr.push(path);
}
}
function Lu_Draw_PathCanvasArcArr(PathModelArcArr, PathCanvasArcArr, CoordinateCanvasLine) {
for (let i = 0; i < PathModelArcArr.length; i++) {
var PathModelArc = PathModelArcArr[i].PathTable_Arc;
var Direction = PathModelArc.rundirection;
//console.log(PathModelArc);
//var PathModelArc=PathModelArcArr[i];
var path = new paper.Path();
var Canvasfrom = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelArc.frompoint, CoordinateCanvasLine);
var Canvasto = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelArc.topoint, CoordinateCanvasLine);
var Canvasthrough = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelArc.throughpoint,
CoordinateCanvasLine);
//var Canvasfrom=Lu_ModelToCanvas(PathModelArc.from);
//var Canvasto=Lu_ModelToCanvas(PathModelArc.to);
//var Canvasthrough=Lu_ModelToCanvas(PathModelArc.through);
var path = new paper.Path.Arc(Canvasfrom, Canvasthrough, Canvasto);
if (Direction == "Front") {
path.strokeColor = "green";
path.strokeWidth = "3";
} else {
path.strokeColor = "red";
path.strokeWidth = "1";
}
PathCanvasArcArr.push(path);
}
}
function Lu_Draw_PathCanvasBezierArr(PathModelBezierArr, PathCanvasBezierArr, CoordinateCanvasLine) {
for (let i = 0; i < PathModelBezierArr.length; i++) {
var PathModelBezier = PathModelBezierArr[i];
var PathCanvasBeizer = new Array();
for (let j = 0; j < PathModelBezier.PathTable_Bezier.length; j++) {
var Line = PathModelBezier.PathTable_Bezier[j];
var Direction = Line.rundirection;
//console.log(Line);
var path = new paper.Path();
var CanvasStart = Lu_TransferModelToCanvasWithCoordinateCanvas(Line.startpoint, CoordinateCanvasLine);
var CanvasEnd = Lu_TransferModelToCanvasWithCoordinateCanvas(Line.endpoint, CoordinateCanvasLine);
//var CanvasStart = Lu_ModelToCanvas(Line.startpoint);
//var CanvasEnd = Lu_ModelToCanvas(Line.endpoint);
if (Direction == "Front") {
path.strokeColor = "green";
path.strokeWidth = "3";
} else {
path.strokeColor = "red";
path.strokeWidth = "1";
}
//path.strokeColor = PathModelBezierArr[i].Color;
path.moveTo(CanvasStart);
path.lineTo(CanvasEnd);
PathCanvasBeizer.push(path);
}
PathCanvasBezierArr.push(PathCanvasBeizer);
}
}
function Lu_Draw_PathCanvasWayPointArr(PathModelWayPointArr, PathCanvasWayPointArr, CoordinateCanvasLine) {
for (let i = 0; i < PathModelWayPointArr.length; i++) {
var PathModelWayPoint = PathModelWayPointArr[i];
var PathCanvasWayPoint = new Array();
for (let j = 0; j < PathModelWayPoint.PathTable_WayPoint.length; j++) {
var Line = PathModelWayPoint.PathTable_WayPoint[j];
var Direction = Line.rundirection;
var path = new paper.Path();
var CanvasStart = Lu_TransferModelToCanvasWithCoordinateCanvas(Line.startpoint, CoordinateCanvasLine);
var CanvasEnd = Lu_TransferModelToCanvasWithCoordinateCanvas(Line.endpoint, CoordinateCanvasLine);
//var CanvasStart = Lu_ModelToCanvas(Line.startpoint);
//var CanvasEnd = Lu_ModelToCanvas(Line.endpoint);
if (Direction == "Front") {
path.strokeColor = "green";
path.strokeWidth = "3";
} else {
path.strokeColor = "red";
path.strokeWidth = "1";
}
//path.strokeColor = PathModelWayPointArr[i].Color;
path.moveTo(CanvasStart);
path.lineTo(CanvasEnd);
PathCanvasWayPoint.push(path);
}
PathCanvasWayPointArr.push(PathCanvasWayPoint);
}
}
function Lu_Draw_PathCanvasOriginTurnArr(PathModelOriginTurnArr, PathCanvasOriginTurnArr, CoordinateCanvasLine) {
for (let i = 0; i < PathModelOriginTurnArr.length; i++) {
var PathModelOriginTurn = PathModelOriginTurnArr[i].PathTable_OriginTurn;
//console.log(PathModelOriginTurn);
var Direction = PathModelOriginTurn.rundirection;
//var Color=PathModelOriginTurnArr[i].Color;
//console.log(PathModelOriginTurn);
//console.log(PathModelOriginTurn);
var PathCanvasOriginTurn = new Object();
var Canvasfrom = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.frompoint,
CoordinateCanvasLine);
var Canvasto = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.topoint,
CoordinateCanvasLine);
var Canvasthrough = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.throughpoint,
CoordinateCanvasLine);
//var Canvasfrom=Lu_ModelToCanvas(PathModelOriginTurn.frompoint);
//var Canvasto=Lu_ModelToCanvas(PathModelOriginTurn.topoint);
//var Canvasthrough=Lu_ModelToCanvas(PathModelOriginTurn.throughpoint);
var patharc = new paper.Path.Arc(Canvasfrom, Canvasthrough, Canvasto);
if (Direction == "Front") {
patharc.strokeColor = "green";
patharc.strokeWidth = "3";
} else {
patharc.strokeColor = "red";
patharc.strokeWidth = "1";
}
var pathlinefrom = new paper.Path();
var CanvasStartfrom = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.centerpoint,
CoordinateCanvasLine);
var CanvasEndfrom = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.frompoint,
CoordinateCanvasLine);
//var CanvasStartfrom = Lu_ModelToCanvas(PathModelOriginTurn.centerpoint);
//var CanvasEndfrom = Lu_ModelToCanvas(PathModelOriginTurn.frompoint);
if (Direction == "Front") {
pathlinefrom.strokeColor = "green";
pathlinefrom.strokeWidth = "3";
} else {
pathlinefrom.strokeColor = "red";
pathlinefrom.strokeWidth = "1";
}
pathlinefrom.moveTo(CanvasStartfrom);
pathlinefrom.lineTo(CanvasEndfrom);
var pathlineto = new paper.Path();
var CanvasStartto = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.centerpoint,
CoordinateCanvasLine);
var CanvasEndto = Lu_TransferModelToCanvasWithCoordinateCanvas(PathModelOriginTurn.topoint,
CoordinateCanvasLine);
//var CanvasStartto = Lu_ModelToCanvas(PathModelOriginTurn.centerpoint);
//var CanvasEndto = Lu_ModelToCanvas(PathModelOriginTurn.topoint);
if (Direction == "Front") {
pathlineto.strokeColor = "green";
pathlineto.strokeWidth = "3";
} else {
pathlineto.strokeColor = "red";
pathlineto.strokeWidth = "1";
}
pathlineto.moveTo(CanvasStartto);
pathlineto.lineTo(CanvasEndto);
PathCanvasOriginTurn.patharc = patharc;
PathCanvasOriginTurn.pathlinefrom = pathlinefrom;
PathCanvasOriginTurn.CanvasEndto = pathlineto;
PathCanvasOriginTurnArr.push(PathCanvasOriginTurn);
}
}
function Lu_Draw_PointCloudCanvasArr(PointCloudModelArr, PointCloudCanvasArr, CoordinateCanvasLine) {
for (let i = 0; i < PointCloudModelArr.length; i++) {
var PointCloudModel = PointCloudModelArr[i].PointCloud;
var Color = PointCloudModelArr[i].Color;
var CanvasSize = PointCloudModelArr[i].Size;
var PointCloudModelPosition = new Point(PointCloudModel.x, PointCloudModel.y);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(PointCloudModelPosition,
CoordinateCanvasLine);
var circle = new Path.Circle({
center: [0, 0],
radius: 1,
strokeColor: Color
});
circle.position = CanvasPosition;
circle.fillColor = "Color"
var PointCloudCanvas = new Object();
PointCloudCanvas.circle = circle;
PointCloudCanvasArr.push(PointCloudCanvas);
}
}
function Lu_Draw_PathNodeCanvasArr(PathNodeModelArr, PathNodeCanvasArr, CoordinateCanvasLine) {
for (let i = 0; i < PathNodeModelArr.length; i++) {
var PathNodeModel = PathNodeModelArr[i].PathNode;
var Color = PathNodeModelArr[i].Color;
var CanvasSize = PathNodeModelArr[i].Size;
var NodeModelPosition = new Point(PathNodeModel.Node_x, PathNodeModel.Node_y);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(NodeModelPosition, CoordinateCanvasLine);
//var CanvasPosition=Lu_ModelToCanvas(NodeModelPosition);
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(PathNodeModel.Node_x, PathNodeModel.Node_y, PathNodeModel
.Node_thetax + 90, 0.5);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
//var CanvasHeading=Lu_ModelToCanvas(Heading);
var circle = new Path.Circle({
center: [80, 50],
radius: 5,
strokeColor: Color
});
circle.position = CanvasPosition;
var path = new paper.Path();
path.moveTo(CanvasPosition);
path.lineTo(CanvasHeading);
path.strokeColor = "orange";
path.strokeWidth = 1;
var text = new PointText(new Point(CanvasHeading.x, CanvasHeading.y + 2));
text.justification = 'center';
text.fillColor = "purple";
text.content = PathNodeModel.NodeID + PathNodeModel.NodeName;
text.fontSize = CanvasSize; //'25px';
var PathNodeCanvas = new Object();
PathNodeCanvas.circle = circle;
PathNodeCanvas.path = path;
PathNodeCanvas.text = text;
PathNodeCanvasArr.push(PathNodeCanvas);
}
}
function Lu_Draw_CarCanvasArr(CarModelArr, CarCanvasArr, CoordinateCanvasLine) {
for (let i = 0; i < CarModelArr.length; i++) {
var CarModelPosition = new Point(Car_Global_rx, Car_Global_ry);
console.log("Lu_Draw_CarCanvasArr" + " X:" + CarModelPosition.x + " Y:" + CarModelPosition.y);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(Car_Global_rx, Car_Global_ry, Car_Global_Theta + 90, 1.0);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
var circle = new Path.Circle({
center: [80, 50],
radius: 10,
strokeColor: 'red'
});
circle.position = CanvasPosition;
var path = new paper.Path();
path.moveTo(CanvasPosition);
path.lineTo(CanvasHeading);
path.strokeColor = "purple";
path.strokeWidth = 3;
var CarCanvas = new Object();
CarCanvas.circle = circle;
CarCanvas.path = path;
CarCanvasArr.push(CarCanvas);
}
}
function Lu_Draw_RefCanvasArr(RefModelArr, RefCanvasArr, CoordinateCanvasLine) {
for (let i = 0; i < RefModelArr.length; i++) {
//var CarModel=CarModelArr[i];
var RefModelPosition = new Point(Learn_Ref_Node_x, Learn_Ref_Node_y);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(RefModelPosition, CoordinateCanvasLine);
//var CanvasPosition=Lu_ModelToCanvas(CarModelPosition);
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(Learn_Ref_Node_x, Learn_Ref_Node_y, Learn_Ref_Node_t + 90,
1.5);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
//var CanvasHeading=Lu_ModelToCanvas(Heading);
var circle = new Path.Circle({
center: [80, 50],
radius: 15,
strokeColor: 'green'
});
circle.position = CanvasPosition;
var path = new paper.Path();
path.moveTo(CanvasPosition);
path.lineTo(CanvasHeading);
path.strokeColor = "green";
path.strokeWidth = 3;
var RefCanvas = new Object();
RefCanvas.circle = circle;
RefCanvas.path = path;
RefCanvasArr.push(RefCanvas);
}
}
function Lu_Draw_CarPositionRecPath() {
var path = new paper.Path();
path.strokeColor = 'orange';
path.strokeWidth = 3;
return path;
}
function Lu_Draw_CarLearnWayPointAB4Path(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
return path;
}
function Lu_Draw_CarLearnWayPointAB3Path(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
return path;
}
function Lu_Draw_CarLearnWayPointABPath(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
return path;
}
function Lu_Draw_CarLearnLineABPath(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
return path;
}
function Lu_Draw_CarLearnLineAHPath(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
return path;
}
function Lu_Draw_CarLearnBezierABCtrlPath(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'blue';
path.strokeWidth = 3;
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
return path;
}
function Lu_Draw_CarLearnBezierABPointPath(CoordinateCanvasLine) {
var CarModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var path = new paper.Path();
path.strokeColor = 'red';
path.strokeWidth = 3;
for (let i = 1; i < step_num; i++) {
path.moveTo(CanvasPosition);
path.lineTo(CanvasPosition);
}
return path;
}
function Lu_ParallelMoveDraw_CoordinateCanvasLine(CoordinateCanvasLine, offset) {
CoordinateCanvasLine.XCanvasText.position.x += offset.x;
CoordinateCanvasLine.XCanvasText.position.y += offset.y;
CoordinateCanvasLine.YCanvasText.position.x += offset.x;
CoordinateCanvasLine.YCanvasText.position.y += offset.y;
CoordinateCanvasLine.XCanvasLine.position.x += offset.x;
CoordinateCanvasLine.XCanvasLine.position.y += offset.y;
CoordinateCanvasLine.YCanvasLine.position.x += offset.x;
CoordinateCanvasLine.YCanvasLine.position.y += offset.y;
CoordinateCanvasLine.OriginCanvasPosition.x += offset.x;
CoordinateCanvasLine.OriginCanvasPosition.y += offset.y;
//console.log(CoordinateCanvasLine.OriginCanvasPosition);
}
function Lu_ParallelMoveDraw_PathCanvasLineArr(PathCanvasLineArr, offset) {
for (let i = 0; i < PathCanvasLineArr.length; i++) {
var path = PathCanvasLineArr[i];
path.position.x += offset.x;
path.position.y += offset.y;
//console.log(path.position);
}
}
function Lu_ParallelMoveDraw_PathCanvasArcArr(PathCanvasArcArr, offset) {
for (let i = 0; i < PathCanvasArcArr.length; i++) {
var path = PathCanvasArcArr[i];
path.position.x += offset.x;
path.position.y += offset.y;
//console.log(path.position);
}
}
function Lu_ParallelMoveDraw_PathCanvasOriginTurnArr(PathCanvasOriginTurnArr, offset) {
for (let i = 0; i < PathCanvasOriginTurnArr.length; i++) {
var PathCanvasOriginTurn = PathCanvasOriginTurnArr[i];
PathCanvasOriginTurn.patharc.position.x += offset.x;
PathCanvasOriginTurn.patharc.position.y += offset.y;
PathCanvasOriginTurn.pathlinefrom.position.x += offset.x;
PathCanvasOriginTurn.pathlinefrom.position.y += offset.y;
PathCanvasOriginTurn.CanvasEndto.position.x += offset.x;
PathCanvasOriginTurn.CanvasEndto.position.y += offset.y;
}
}
function Lu_ParallelMoveDraw_PathCanvasBezierArr(PathCanvasBezierArr, offset) {
for (let i = 0; i < PathCanvasBezierArr.length; i++) {
var PathCanvasBezier = PathCanvasBezierArr[i];
for (let j = 0; j < PathCanvasBezier.length; j++) {
var path = PathCanvasBezier[j];
path.position.x += offset.x;
path.position.y += offset.y;
}
}
}
function Lu_ParallelMoveDraw_PathCanvasWayPointArr(PathCanvasWayPointArr, offset) {
for (let i = 0; i < PathCanvasWayPointArr.length; i++) {
var PathCanvasWayPoint = PathCanvasWayPointArr[i];
for (let j = 0; j < PathCanvasWayPoint.length; j++) {
var path = PathCanvasWayPoint[j];
path.position.x += offset.x;
path.position.y += offset.y;
}
}
}
function Lu_ParallelMoveDraw_PathNodeCanavsArr(PathNodeCanvasArr, offset) {
for (let i = 0; i < PathNodeCanvasArr.length; i++) {
var PathNodeCanvas = PathNodeCanvasArr[i];
PathNodeCanvas.circle.position.x += offset.x;
PathNodeCanvas.circle.position.y += offset.y;
PathNodeCanvas.path.position.x += offset.x;
PathNodeCanvas.path.position.y += offset.y;
PathNodeCanvas.text.position.x += offset.x;
PathNodeCanvas.text.position.y += offset.y;
}
}
function Lu_ParallelMoveDraw_PointCloudCanvasArr(PointCloudCanvasArr, offset) {
for (let i = 0; i < PointCloudCanvasArr.length; i++) {
var PointCloudCanvas = PointCloudCanvasArr[i];
PointCloudCanvas.circle.position.x += offset.x;
PointCloudCanvas.circle.position.y += offset.y;
}
}
function Lu_ParallelMoveDraw_CarPositionRecPath(CarPositionRecPath, offset) {
CarPositionRecPath.position.x += offset.x;
CarPositionRecPath.position.y += offset.y;
}
function Lu_ParallelMoveDraw_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, offset) {
CarLearnWayPointAB4Path.position.x += offset.x;
CarLearnWayPointAB4Path.position.y += offset.y;
}
function Lu_ParallelMoveDraw_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, offset) {
CarLearnWayPointAB3Path.position.x += offset.x;
CarLearnWayPointAB3Path.position.y += offset.y;
}
function Lu_ParallelMoveDraw_CarLearnWayPointABPath(CarLearnWayPointABPath, offset) {
CarLearnWayPointABPath.position.x += offset.x;
CarLearnWayPointABPath.position.y += offset.y;
}
function Lu_Refresh_CarCanvasArr(CarCanvasArr, CoordinateCanvasLine) {
if (CarCanvasArr.length > 0) {
var CarCanvas = CarCanvasArr[0];
var CarModelPosition = new Point(Car_Global_rx, Car_Global_ry);
//console.log("Lu_Refresh_CarCanvasArr"+" x:"+Car_Global_rx+" y:"+Car_Global_ry);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition, CoordinateCanvasLine);
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(Car_Global_rx, Car_Global_ry, Car_Global_Theta + 90, 1.0);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
CarCanvas.circle.position = CanvasPosition;
CarCanvas.path.segments[0].point = CanvasPosition;
CarCanvas.path.segments[1].point = CanvasHeading;
}
}
function Lu_Refresh_RefCanvasArr(RefCanvasArr, CoordinateCanvasLine) {
if (Learn_Ref_State == "true") {
if (RefCanvasArr.length > 0) {
var RefCanvas = RefCanvasArr[0];
var RefModelPosition = new Point(Learn_Ref_Node_x, Learn_Ref_Node_y);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(RefModelPosition,
CoordinateCanvasLine);
//var CanvasPosition = Lu_ModelToCanvas(CarModelPosition);
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(Learn_Ref_Node_x, Learn_Ref_Node_y, Learn_Ref_Node_t + 90,
1.5);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
//var CanvasHeading = Lu_ModelToCanvas(Heading);
RefCanvas.circle.position = CanvasPosition;
RefCanvas.circle.strokeColor = 'green';
RefCanvas.path.segments[0].point = CanvasPosition;
RefCanvas.path.segments[1].point = CanvasHeading;
}
} else {
if (RefCanvasArr.length > 0) {
var RefCanvas = RefCanvasArr[0];
var RefModelPosition = new Point(0, 0);
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(RefModelPosition,
CoordinateCanvasLine);
RefCanvas.circle.position = CanvasPosition;
RefCanvas.circle.strokeColor = 'transparent';
RefCanvas.path.segments[0].point = CanvasPosition;
RefCanvas.path.segments[1].point = CanvasPosition;
}
}
}
function Lu_Refresh_CarPositionRecPath(CarPositionRecPath, CarGlobalPositionRecArr, CoordinateCanvasLine) {
//console.log(CarGlobalPositionRecArr);
if (CarGlobalPositionRecSch == 1) {
if (CarGlobalPositionRecArr.length > 0 && LastCarGlobalPositionRecArrLen != CarGlobalPositionRecArr.length) {
LastCarGlobalPositionRecArrLen = CarGlobalPositionRecArr.length;
var tmp_sx = CarGlobalPositionRecArr[CarGlobalPositionRecArr.length - 1].Car_Global_rx;
var tmp_sy = CarGlobalPositionRecArr[CarGlobalPositionRecArr.length - 1].Car_Global_ry;
var tmp_st = CarGlobalPositionRecArr[CarGlobalPositionRecArr.length - 1].Car_Global_Theta;
var Heading = Lu_GetNextPoint_By_xs_ys_dirdeg(tmp_sx, tmp_sy, tmp_st, 0.5);
var CanvasHeading = Lu_TransferModelToCanvasWithCoordinateCanvas(Heading, CoordinateCanvasLine);
var CarModelPosition_s = new Point(tmp_sx, tmp_sy);
var CanvasPosition_s = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition_s,
CoordinateCanvasLine);
var point = new paper.Point(CanvasPosition_s.x, CanvasPosition_s.y);
var headingpoint = new paper.Point(CanvasHeading.x, CanvasHeading.y);
CarPositionRecPath.add(point);
//CarPositionRecPath.add(headingpoint);
//CarPositionRecPath.add(point);
}
} else if (CarGlobalPositionRecSch == 0 && CarPositionRecPath.segments.length > 0) {
for (let i = 0; i < CarPositionRecPath.segments.length; i++) {
CarPositionRecPath.removeSegment(i);
}
LastCarGlobalPositionRecArrLen = 0;
}
}
function Lu_Refresh_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, LearnWayPoint4RecArr, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnWayPointAB4") {
if (LearnWayPointAB4_Sch >= 1) {
if (LearnWayPoint4RecArr.length > 0 && LastLearnWayPoint4RecArrLen != LearnWayPoint4RecArr.length) {
LastLearnWayPoint4RecArrLen = LearnWayPoint4RecArr.length;
var tmp_sx = LearnWayPoint4RecArr[LearnWayPoint4RecArr.length - 1].Car_Global_rx;
var tmp_sy = LearnWayPoint4RecArr[LearnWayPoint4RecArr.length - 1].Car_Global_ry;
var tmp_st = LearnWayPoint4RecArr[LearnWayPoint4RecArr.length - 1].Car_Global_Theta;
var CarModelPosition_s = new Point(tmp_sx, tmp_sy);
var CanvasPosition_s = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition_s,
CoordinateCanvasLine);
var point = new paper.Point(CanvasPosition_s.x, CanvasPosition_s.y);
CarLearnWayPointAB4Path.add(point);
}
} else {
if (CarLearnWayPointAB4Path.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointAB4Path.segments.length; i++) {
CarLearnWayPointAB4Path.removeSegment(i);
}
LastLearnWayPoint4RecArrLen = 0;
}
}
} else {
if (CarLearnWayPointAB4Path.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointAB4Path.segments.length; i++) {
CarLearnWayPointAB4Path.removeSegment(i);
}
LastLearnWayPoint4RecArrLen = 0;
}
}
}
function Lu_Refresh_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, LearnWayPoint3RecArr, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnWayPointAB3") {
if (LearnWayPointAB3_Sch >= 1) {
if (LearnWayPoint3RecArr.length > 0 && LastLearnWayPoint3RecArrLen != LearnWayPoint3RecArr.length) {
LastLearnWayPoint3RecArrLen = LearnWayPoint3RecArr.length;
var tmp_sx = LearnWayPoint3RecArr[LearnWayPoint3RecArr.length - 1].Car_Global_rx;
var tmp_sy = LearnWayPoint3RecArr[LearnWayPoint3RecArr.length - 1].Car_Global_ry;
var tmp_st = LearnWayPoint3RecArr[LearnWayPoint3RecArr.length - 1].Car_Global_Theta;
var CarModelPosition_s = new Point(tmp_sx, tmp_sy);
var CanvasPosition_s = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition_s,
CoordinateCanvasLine);
var point = new paper.Point(CanvasPosition_s.x, CanvasPosition_s.y);
CarLearnWayPointAB3Path.add(point);
}
} else {
if (CarLearnWayPointAB3Path.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointAB3Path.segments.length; i++) {
CarLearnWayPointAB3Path.removeSegment(i);
}
LastLearnWayPoint3RecArrLen = 0;
}
}
} else {
if (CarLearnWayPointAB3Path.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointAB3Path.segments.length; i++) {
CarLearnWayPointAB3Path.removeSegment(i);
}
LastLearnWayPoint3RecArrLen = 0;
}
}
}
function Lu_Refresh_CarLearnWayPointABPath(CarLearnWayPointABPath, LearnWayPointRecArr, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnWayPointAB") {
if (LearnWayPointAB_Sch >= 1) {
if (LearnWayPointRecArr.length > 0 && LastLearnWayPointRecArrLen != LearnWayPointRecArr.length) {
LastLearnWayPointRecArrLen = LearnWayPointRecArr.length;
var tmp_sx = LearnWayPointRecArr[LearnWayPointRecArr.length - 1].Car_Global_rx;
var tmp_sy = LearnWayPointRecArr[LearnWayPointRecArr.length - 1].Car_Global_ry;
var tmp_st = LearnWayPointRecArr[LearnWayPointRecArr.length - 1].Car_Global_Theta;
var CarModelPosition_s = new Point(tmp_sx, tmp_sy);
var CanvasPosition_s = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPosition_s,
CoordinateCanvasLine);
var point = new paper.Point(CanvasPosition_s.x, CanvasPosition_s.y);
CarLearnWayPointABPath.add(point);
}
} else {
if (CarLearnWayPointABPath.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointABPath.segments.length; i++) {
CarLearnWayPointABPath.removeSegment(i);
}
LastLearnWayPointRecArrLen = 0;
}
}
} else {
if (CarLearnWayPointABPath.segments.length > 0) {
for (let i = 0; i < CarLearnWayPointABPath.segments.length; i++) {
CarLearnWayPointABPath.removeSegment(i);
}
LastLearnWayPointRecArrLen = 0;
}
}
}
function Lu_Refresh_CarLearnLineABPath(CarLearnLineABPath, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnLineAB") {
if (LearnLineAB_Sch == 1) {
var CarModelPositionA = new paper.Point(LearnLineAB_PointA_rx, LearnLineAB_PointA_ry);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(Car_Global_rx, Car_Global_ry);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineABPath.segments[0].point = CanvasPositionA;
CarLearnLineABPath.segments[1].point = CanvasPositionB;
} else if (LearnLineAB_Sch > 1) {
var CarModelPositionA = new paper.Point(LearnLineAB_PointA_rx, LearnLineAB_PointA_ry);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(LearnLineAB_PointB_rx, LearnLineAB_PointB_ry);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineABPath.segments[0].point = CanvasPositionA;
CarLearnLineABPath.segments[1].point = CanvasPositionB;
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineABPath.segments[0].point = CanvasPositionA;
CarLearnLineABPath.segments[1].point = CanvasPositionB;
}
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA, CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB, CoordinateCanvasLine);
CarLearnLineABPath.segments[0].point = CanvasPositionA;
CarLearnLineABPath.segments[1].point = CanvasPositionB;
}
}
function Lu_Refresh_CarLearnLineAHPath(CarLearnLineAHPath, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnLineAH") {
if (LearnLineAH_Sch == 1) {
var CarModelPositionA = new paper.Point(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var dist = Lu_Get_Dist(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry, Car_Global_rx, Car_Global_ry);
var AH_Point;
if (LearnLineAH_Direction == "Front") {
AH_Point = Lu_GetNextPoint_By_xs_ys_dirdeg(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry,
LearnLineAH_PointA_rt + 90, dist);
} else {
AH_Point = Lu_GetNextPoint_By_xs_ys_dirdeg(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry,
LearnLineAH_PointA_rt - 90, dist);
}
AH_Global_rx = AH_Point.x;
AH_Global_ry = AH_Point.y;
AH_Global_rt = LearnLineAH_PointA_rt;
var CarModelPositionB = new paper.Point(AH_Point.x, AH_Point.y);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineAHPath.segments[0].point = CanvasPositionA;
CarLearnLineAHPath.segments[1].point = CanvasPositionB;
} else if (LearnLineAH_Sch > 1) {
var CarModelPositionA = new paper.Point(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var dist = Lu_Get_Dist(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry, Car_Global_rx, Car_Global_ry);
var AH_Point;
if (LearnLineAH_Direction == "Front") {
AH_Point = Lu_GetNextPoint_By_xs_ys_dirdeg(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry,
LearnLineAH_PointA_rt + 90, dist);
} else {
AH_Point = Lu_GetNextPoint_By_xs_ys_dirdeg(LearnLineAH_PointA_rx, LearnLineAH_PointA_ry,
LearnLineAH_PointA_rt - 90, dist);
}
AH_Global_rx = AH_Point.x;
AH_Global_ry = AH_Point.y;
AH_Global_rt = LearnLineAH_PointA_rt;
var CarModelPositionB = new paper.Point(AH_Point.x, AH_Point.y);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineAHPath.segments[0].point = CanvasPositionA;
CarLearnLineAHPath.segments[1].point = CanvasPositionB;
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnLineAHPath.segments[0].point = CanvasPositionA;
CarLearnLineAHPath.segments[1].point = CanvasPositionB;
}
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA, CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB, CoordinateCanvasLine);
CarLearnLineAHPath.segments[0].point = CanvasPositionA;
CarLearnLineAHPath.segments[1].point = CanvasPositionB;
}
}
function Lu_Refresh_CarLearnBezierABPointPath(CarLearnBezierABPointPath, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnBezierAB") {
if (LearnBezierAB_Sch == 2 || LearnBezierAB_Sch == 3 || LearnBezierAB_Sch == 4) {
var t = 0.0;
for (let s = 0; s < step_num; s++) {
var P_x = 0.0;
var P_y = 0.0;
var Pn_x = 0.0;
var Pn_y = 0.0;
var n = 3.0;
for (let i = 0; i <= n; i++) {
if (i == 0) {
Pn_x = LearnBezierAB_PointA_rx;
Pn_y = LearnBezierAB_PointA_ry;
} else if (i == 1) {
Pn_x = LearnBezierAB_ANext_rx;
Pn_y = LearnBezierAB_ANext_ry;
} else if (i == 2) {
Pn_x = LearnBezierAB_BLast_rx;
Pn_y = LearnBezierAB_BLast_ry;
} else if (i == 3) {
Pn_x = LearnBezierAB_PointB_rx;
Pn_y = LearnBezierAB_PointB_ry;
}
//console.log("i:"+i+" Pnx:"+Pn_x+" Pny:"+Pn_y);
var Cni = factorial(n) / (factorial(i) * factorial(n - i));
var c1 = Math.pow((1 - t), (n - i));
var c2 = Math.pow(t, i);
//console.log("Cni:"+Cni+" c1:"+c1+" c2:"+c2+" t:"+t);
P_x = P_x + (Cni) * c1 * c2 * Pn_x;
P_y = P_y + (Cni) * c1 * c2 * Pn_y;
}
//console.log("P"+s+":("+P_x+","+P_y+")");
var CarModelPositionP = new paper.Point(P_x, P_y);
var CanvasPositionP = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionP,
CoordinateCanvasLine);
CarLearnBezierABPointPath.segments[s].point = CanvasPositionP;
t = t + step;
}
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
for (let i = 0; i < step_num; i++) {
CarLearnBezierABPointPath.segments[i].point = CanvasPositionA;
}
}
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA, CoordinateCanvasLine);
for (let i = 0; i < step_num; i++) {
CarLearnBezierABPointPath.segments[i].point = CanvasPositionA;
}
}
}
function Lu_Refresh_CarLearnBezierABCtrlPath(CarLearnBezierABCtrlPath, CoordinateCanvasLine) {
if (HMI_Sketch_Left == "LearnBezierAB") {
if (LearnBezierAB_Sch == 2) {
var CarModelPositionA = new paper.Point(LearnBezierAB_PointA_rx, LearnBezierAB_PointA_ry);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionANext = new paper.Point(LearnBezierAB_ANext_rx, LearnBezierAB_ANext_ry);
var CanvasPositionANext = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionANext,
CoordinateCanvasLine);
var CarModelPositionBLast = new paper.Point(LearnBezierAB_BLast_rx, LearnBezierAB_BLast_ry);
var CanvasPositionBLast = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionBLast,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(LearnBezierAB_PointB_rx, LearnBezierAB_PointB_ry);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnBezierABCtrlPath.segments[0].point = CanvasPositionA;
CarLearnBezierABCtrlPath.segments[1].point = CanvasPositionANext;
CarLearnBezierABCtrlPath.segments[2].point = CanvasPositionBLast;
CarLearnBezierABCtrlPath.segments[3].point = CanvasPositionB;
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA,
CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB,
CoordinateCanvasLine);
CarLearnBezierABCtrlPath.segments[0].point = CanvasPositionA;
CarLearnBezierABCtrlPath.segments[1].point = CanvasPositionA;
CarLearnBezierABCtrlPath.segments[2].point = CanvasPositionB;
CarLearnBezierABCtrlPath.segments[3].point = CanvasPositionB;
}
} else {
var CarModelPositionA = new paper.Point(0, 0);
var CanvasPositionA = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionA, CoordinateCanvasLine);
var CarModelPositionB = new paper.Point(0, 0);
var CanvasPositionB = Lu_TransferModelToCanvasWithCoordinateCanvas(CarModelPositionB, CoordinateCanvasLine);
CarLearnBezierABCtrlPath.segments[0].point = CanvasPositionA;
CarLearnBezierABCtrlPath.segments[1].point = CanvasPositionA;
CarLearnBezierABCtrlPath.segments[2].point = CanvasPositionB;
CarLearnBezierABCtrlPath.segments[3].point = CanvasPositionB;
}
}
window.onload = function() {
Lu_Init_Canvas();
//console.log("=========================== window.onload Lu_Init_Canvas============================");
var CoordinateModelLine;
var CoordinateCanvasLine;
var LearnPathModelLineArr = new Array();
var LearnPathCanvasLineArr = new Array();
var LearnPathModelArcArr = new Array();
var LearnPathCanvasArcArr = new Array();
var LearnPathModelBezierArr = new Array();
var LearnPathCanvasBezierArr = new Array();
var LearnPathModelWayPointArr = new Array();
var LearnPathCanvasWayPointArr = new Array();
var LearnPathModelOriginTurnArr = new Array();
var LearnPathCanvasOriginTurnArr = new Array();
var LearnPathNodeModelArr = new Array();
var LearnPathNodeCanvasArr = new Array();
var LearnPointCloudModelArr = new Array();
var LearnPointCloudCanvasArr = new Array();
var CarModelArr = new Array();
var CarCanvasArr = new Array();
var RefModelArr = new Array();
var RefCanvasArr = new Array();
var CarPositionRecPath;
var CarLearnWayPointABPath;
var CarLearnWayPointAB3Path;
var CarLearnWayPointAB4Path;
var CarLearnLineABPath;
var CarLearnLineAHPath;
var CarLearnBezierABCtrlPath;
var CarLearnBezierABPointPath;
CoordinateModelLine = Lu_Create_CoordinateModelLine(2.0);
//console.log("=========================== window.onload Lu_Create_CoordinateModelLine============================");
Lu_Create_CarModel(CarModelArr);
//console.log("=========================== window.onload Lu_Create_CarModel============================");
Lu_Create_RefModel(RefModelArr);
//console.log("=========================== window.onload Lu_Create_RefModel============================");
view.onFrame = function(event) {
if (draw_sch == 0) {
//console.log("=========================== window.onload draw_sch 0============================");
if (Get_LearnPathTable_File_OK && Get_LearnNodePointManagerTable_File_OK &&
Get_LearnPointCloud_File_OK) {
draw_sch = 1;
}
} else if (draw_sch == 1) {
//console.log("=========================== window.onload draw_sch 1============================");
for (let j = 0; j < LearnPathTable_Line_Arr.length; j++) {
var PathTable_Line = LearnPathTable_Line_Arr[j];
//console.log(PathTable_Line);
Lu_Create_PathModelLine(PathTable_Line, "grey", LearnPathModelLineArr);
}
for (let l = 0; l < LearnPathTable_Arc_Arr.length; l++) {
var PathTable_Arc = LearnPathTable_Arc_Arr[l];
Lu_Create_PathModelArc(PathTable_Arc, "grey", LearnPathModelArcArr);
//console.log(PathTable_Arc);
}
for (let l = 0; l < LearnPathTable_Bezier_Arr.length; l++) {
var PathTable_Bezier = LearnPathTable_Bezier_Arr[l];
//console.log(PathTable_Bezier);
Lu_Create_PathModelBezier(PathTable_Bezier, "grey", LearnPathModelBezierArr);
}
for (let l = 0; l < LearnPathTable_WayPoint_Arr.length; l++) {
var PathTable_WayPoint = LearnPathTable_WayPoint_Arr[l];
Lu_Create_PathModelWayPoint(PathTable_WayPoint, "grey", LearnPathModelWayPointArr);
}
for (let l = 0; l < LearnPathTable_OriginTurn_Arr.length; l++) {
var PathTable_OriginTurn = LearnPathTable_OriginTurn_Arr[l];
Lu_Create_PathModelOriginTurn(PathTable_OriginTurn, "grey", LearnPathModelOriginTurnArr);
//console.log(PathTable_OriginTurn);
}
for (let n = 0; n < LearnNodePointManagerTable_PathNode_Arr.length; n++) {
var PathNode = LearnNodePointManagerTable_PathNode_Arr[n];
Lu_Create_PathNodeModel(PathNode, "orange", 5, LearnPathNodeModelArr);
}
for (let u = 0; u < LearnPointCloud_Arr.length; u++) {
var p = LearnPointCloud_Arr[u];
Lu_Create_LearnPointCloud(p, "black", 1, LearnPointCloudModelArr);
}
draw_sch = 2;
} else if (draw_sch == 2) {
//console.log("=========================== window.onload draw_sch 2============================");
var canvas = document.getElementById('myCanvas');
var canvas_height = parseFloat(canvas.style.height);
CoordinateCanvasLine = Lu_Draw_CoordinateCanvasLine(CoordinateModelLine, new Point(
ScreenPanRecord.x, ScreenPanRecord.y - canvas_height));
paper.view.zoom = ZoomRecord;
console.log("LearnPathModelLineArr", JSON.stringify(LearnPathModelLineArr))
//[{"PathTable_Line":{"start_point":["Point",1.029,0.043],"end_point":["Point",-1.081,0.055],"thetax":89.674151,"rundirection":"Front"},"Color":"grey"},{"PathTable_Line":{"start_point":["Point",0.741,1.013],"end_point":["Point",-0.745,1.033],"thetax":89.228906,"rundirection":"Front"},"Color":"grey"},{"PathTable_Line":{"start_point":["Point",-2.145,1.396],"end_point":["Point",-2.082,-0.108],"thetax":-177.60138,"rundirection":"Front"},"Color":"grey"},{"PathTable_Line":{"start_point":["Point",-1.081,0.055],"end_point":["Point",1.029,0.043],"thetax":89.674151,"rundirection":"Reverse"},"Color":"grey"},{"PathTable_Line":{"start_point":["Point",-0.745,1.033],"end_point":["Point",0.741,1.013],"thetax":89.228906,"rundirection":"Reverse"},"Color":"grey"},{"PathTable_Line":{"start_point":["Point",-2.082,-0.108],"end_point":["Point",-2.145,1.396],"thetax":-177.60138,"rundirection":"Reverse"},"Color":"grey"}]
console.log("LearnPathCanvasLineArr", LearnPathCanvasLineArr)
console.log("CoordinateCanvasLine", CoordinateCanvasLine)
//{"XCanvasText":["PointText",{"applyMatrix":false,"matrix":[1,0,0,1,140,300],"content":"x","fillColor":[1,0,0],"fontSize":25,"leading":30,"justification":"center"}],"YCanvasText":["PointText",{"applyMatrix":false,"matrix":[1,0,0,1,100,260],"content":"y","fillColor":[0,0.50196,0],"fontSize":25,"leading":30,"justification":"center"}],"XCanvasLine":["Path",{"applyMatrix":true,"segments":[[100,300],[140,300]],"strokeColor":[1,0,0]}],"YCanvasLine":["Path",{"applyMatrix":true,"segments":[[100,300],[100,260]],"strokeColor":[0,0.50196,0]}],"OriginCanvasPosition":{"x":100,"y":300}}
console.log("LearnPathModelArcArr", LearnPathModelArcArr)
console.log("LearnPathCanvasArcArr", LearnPathCanvasArcArr)
console.log("LearnPathModelBezierArr", LearnPathModelBezierArr)
console.log("LearnPathCanvasBezierArr", LearnPathCanvasBezierArr)
console.log("LearnPathModelWayPointArr", LearnPathModelWayPointArr)
//[{"PathTable_WayPoint":[{"startpoint":["Point",-0.745,1.033],"endpoint":["Point",-0.785,1.032],"rundirection":"Front"},{"startpoint":["Point",-0.785,1.032],"endpoint":["Point",-0.829,1.03],"rundirection":"Front"},{"startpoint":["Point",-0.829,1.03],"endpoint":["Point",-0.876,1.025],"rundirection":"Front"},{"startpoint":["Point",-0.876,1.025],"endpoint":["Point",-0.926,1.018],"rundirection":"Front"},{"startpoint":["Point",-0.926,1.018],"endpoint":["Point",-0.978,1.009],"rundirection":"Front"},{"startpoint":["Point",-0.978,1.009],"endpoint":["Point",-1.032,0.999],"rundirection":"Front"},{"startpoint":["Point",-1.032,0.999],"endpoint":["Point",-1.087,0.987],"rundirection":"Front"},{"startpoint":["Point",-1.087,0.987],"endpoint":["Point",-1.143,0.973],"rundirection":"Front"},{"startpoint":["Point",-1.143,0.973],"endpoint":["Point",-1.199,0.958],"rundirection":"Front"},{"startpoint":["Point",-1.199,0.958],"endpoint":["Point",-1.255,0.942],"rundirection":"Front"},{"startpoint":["Point",-1.255,0.942],"endpoint":["Point",-1.311,0.924],"rundirection":"Front"},{"startpoint":["Point",-1.311,0.924],"endpoint":["Point",-1.367,0.905],"rundirection":"Front"},{"startpoint":["Point",-1.367,0.905],"endpoint":["Point",-1.421,0.886],"rundirection":"Front"},{"startpoint":["Point",-1.421,0.886],"endpoint":["Point",-1.473,0.865],"rundirection":"Front"},{"startpoint":["Point",-1.473,0.865],"endpoint":["Point",-1.523,0.844],"rundirection":"Front"},{"startpoint":["Point",-1.523,0.844],"endpoint":["Point",-1.57,0.822],"rundirection":"Front"},{"startpoint":["Point",-1.57,0.822],"endpoint":["Point",-1.615,0.799],"rundirection":"Front"},{"startpoint":["Point",-1.615,0.799],"endpoint":["Point",-1.655,0.776],"rundirection":"Front"},{"startpoint":["Point",-1.655,0.776],"endpoint":["Point",-1.692,0.753],"rundirection":"Front"},{"startpoint":["Point",-1.692,0.753],"endpoint":["Point",-1.725,0.729],"rundirection":"Front"},{"startpoint":["Point",-1.725,0.729],"endpoint":["Point",-1.752,0.706],"rundirection":"Front"},{"startpoint":["Point",-1.752,0.706],"endpoint":["Point",-1.778,0.678],"rundirection":"Front"},{"startpoint":["Point",-1.778,0.678],"endpoint":["Point",-1.804,0.646],"rundirection":"Front"},{"startpoint":["Point",-1.804,0.646],"endpoint":["Point",-1.83,0.61],"rundirection":"Front"},{"startpoint":["Point",-1.83,0.61],"endpoint":["Point",-1.855,0.571],"rundirection":"Front"},{"startpoint":["Point",-1.855,0.571],"endpoint":["Point",-1.879,0.529],"rundirection":"Front"},{"startpoint":["Point",-1.879,0.529],"endpoint":["Point",-1.902,0.485],"rundirection":"Front"},{"startpoint":["Point",-1.902,0.485],"endpoint":["Point",-1.925,0.439],"rundirection":"Front"},{"startpoint":["Point",-1.925,0.439],"endpoint":["Point",-1.946,0.392],"rundirection":"Front"},{"startpoint":["Point",-1.946,0.392],"endpoint":["Point",-1.966,0.343],"rundirection":"Front"},{"startpoint":["Point",-1.966,0.343],"endpoint":["Point",-1.985,0.294],"rundirection":"Front"},{"startpoint":["Point",-1.985,0.294],"endpoint":["Point",-2.003,0.244],"rundirection":"Front"},{"startpoint":["Point",-2.003,0.244],"endpoint":["Point",-2.019,0.195],"rundirection":"Front"},{"startpoint":["Point",-2.019,0.195],"endpoint":["Point",-2.033,0.146],"rundirection":"Front"},{"startpoint":["Point",-2.033,0.146],"endpoint":["Point",-2.046,0.099],"rundirection":"Front"},{"startpoint":["Point",-2.046,0.099],"endpoint":["Point",-2.057,0.053],"rundirection":"Front"},{"startpoint":["Point",-2.057,0.053],"endpoint":["Point",-2.067,0.009],"rundirection":"Front"},{"startpoint":["Point",-2.067,0.009],"endpoint":["Point",-2.074,-0.033],"rundirection":"Front"},{"startpoint":["Point",-2.074,-0.033],"endpoint":["Point",-2.079,-0.072],"rundirection":"Front"},{"startpoint":["Point",-2.079,-0.072],"endpoint":["Point",-2.082,-0.108],"rundirection":"Front"}],"Color":"grey"},{"PathTable_WayPoint":[{"startpoint":["Point",-2.082,-0.108],"endpoint":["Point",-2.079,-0.072],"rundirection":"Reverse"},{"startpoint":["Point",-2.079,-0.072],"endpoint":["Point",-2.074,-0.033],"rundirection":"Reverse"},{"startpoint":
console.log("LearnPathCanvasWayPointArr", LearnPathCanvasWayPointArr)
Lu_Draw_CarCanvasArr(CarModelArr, CarCanvasArr, CoordinateCanvasLine);
Lu_Draw_RefCanvasArr(RefModelArr, RefCanvasArr, CoordinateCanvasLine);
Lu_Draw_PathCanvasLineArr(LearnPathModelLineArr, LearnPathCanvasLineArr, CoordinateCanvasLine);
Lu_Draw_PathCanvasArcArr(LearnPathModelArcArr, LearnPathCanvasArcArr, CoordinateCanvasLine);
Lu_Draw_PathCanvasBezierArr(LearnPathModelBezierArr, LearnPathCanvasBezierArr,
CoordinateCanvasLine);
Lu_Draw_PathCanvasWayPointArr(LearnPathModelWayPointArr, LearnPathCanvasWayPointArr,
CoordinateCanvasLine);
Lu_Draw_PathCanvasOriginTurnArr(LearnPathModelOriginTurnArr, LearnPathCanvasOriginTurnArr,
CoordinateCanvasLine);
Lu_Draw_PathNodeCanvasArr(LearnPathNodeModelArr, LearnPathNodeCanvasArr, CoordinateCanvasLine);
Lu_Draw_PointCloudCanvasArr(LearnPointCloudModelArr, LearnPointCloudCanvasArr,
CoordinateCanvasLine);
CarPositionRecPath = Lu_Draw_CarPositionRecPath();
CarLearnWayPointABPath = Lu_Draw_CarLearnWayPointABPath(CoordinateCanvasLine);
CarLearnWayPointAB3Path = Lu_Draw_CarLearnWayPointAB3Path(CoordinateCanvasLine);
CarLearnWayPointAB4Path = Lu_Draw_CarLearnWayPointAB4Path(CoordinateCanvasLine);
CarLearnLineABPath = Lu_Draw_CarLearnLineABPath(CoordinateCanvasLine);
CarLearnLineAHPath = Lu_Draw_CarLearnLineAHPath(CoordinateCanvasLine);
CarLearnBezierABCtrlPath = Lu_Draw_CarLearnBezierABCtrlPath(CoordinateCanvasLine);
CarLearnBezierABPointPath = Lu_Draw_CarLearnBezierABPointPath(CoordinateCanvasLine);
paper.project.view.update();
draw_sch = 3;
} else if (draw_sch == 3) {
//console.log("=========================== window.onload draw_sch 3============================");
draw_sch = 4;
} else if (draw_sch == 4) {
//console.log("=========================== window.onload draw_sch 4============================");
//console.log(CarGlobalPositionRecSch);
}
period_times = period_times + 1;
if (draw_sch == 4 && period_times >= 5) {
//console.log("=========================== window.onload draw_sch 4 period_times>=5 Refresh============================");
Lu_Refresh_CarCanvasArr(CarCanvasArr, CoordinateCanvasLine);
Lu_Refresh_RefCanvasArr(RefCanvasArr, CoordinateCanvasLine);
Lu_Refresh_CarPositionRecPath(CarPositionRecPath, CarGlobalPositionRecArr, CoordinateCanvasLine);
Lu_Refresh_CarLearnWayPointABPath(CarLearnWayPointABPath, LearnWayPointRecArr,
CoordinateCanvasLine);
Lu_Refresh_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, LearnWayPoint3RecArr,
CoordinateCanvasLine);
Lu_Refresh_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, LearnWayPoint4RecArr,
CoordinateCanvasLine);
Lu_Refresh_CarLearnLineABPath(CarLearnLineABPath, CoordinateCanvasLine);
Lu_Refresh_CarLearnLineAHPath(CarLearnLineAHPath, CoordinateCanvasLine);
Lu_Refresh_CarLearnBezierABCtrlPath(CarLearnBezierABCtrlPath, CoordinateCanvasLine);
Lu_Refresh_CarLearnBezierABPointPath(CarLearnBezierABPointPath, CoordinateCanvasLine);
if (ButtonImage_Vertical_FollowCar == "true") {
Lu_Draw_CanvasWithCarCenter();
}
period_times = 0;
}
}
var canvas = document.getElementById('myCanvas');
const canvasRect = canvas.getBoundingClientRect();
var evenaa = {
x: 0,
y: 0
};
var highlight;
canvas.onclick = function(e) {
//console.log("lines", lines)
console.log("evenaa", evenaa)
e.clientX = e.clientX - canvasRect.left - 5;
e.clientY = e.clientY - canvasRect.top - 5
console.log("e.clientX", e.clientX)
console.log("e.clientY", e.clientY)
var boundscenter = project.view.bounds.center;
console.log("paper.view.zoom", paper.view.zoom)
console.log("boundscenter", boundscenter)
var px = (e.clientX - boundscenter.x) / paper.view.zoom + boundscenter.x - evenaa.x;
var py = (e.clientY - boundscenter.y) / paper.view.zoom + boundscenter.y - evenaa.y;
// 鼠标点击的坐标
// 逐条线确定是否有点中
//console.log("e==",e);
console.log("px", px);
console.log("py", py);
var offset = 10; // 可接受(偏移)范围
for (var i = 0; i < lines.length; i++) {
var p1 = lines[i].p1; // 直线起点
var p2 = lines[i].p2; // 直线终点
var flag = 0; // 1 - 点中
var minX = Math.min(p1.x, p2.x); // 较小的X轴坐标值
var maxX = Math.max(p1.x, p2.x); // 较大的X轴坐标值
var minY = Math.min(p1.y, p2.y); // 较小的Y轴坐标值
var maxY = Math.max(p1.y, p2.y); // 较大的Y轴坐标值
if (-2 < (p1.y - p2.y) && (p1.y - p2.y) < 2) {
// 水平线
if ((px >= minX && px <= maxX) && (py >= minY - offset && py <= maxY + offset)) {
flag = 1;
lines[i].crossPoint = {
x: px,
y: p1.y
}; // 直线上交叉点
}
} else if (-2 < (p1.x - p2.x) && (p1.x - p2.x) < 2) {
//console.log("minX", minX)
//console.log("maxX", maxX)
// 垂直线
if ((py >= minY && py <= maxY) && (px >= minX - offset && px <= maxX + offset)) {
flag = 1;
lines[i].crossPoint = {
x: p1.x,
y: py
}; // 直线上交叉点
}
} else {
// 斜线 (先判断点是否进入可接受大范围(矩形),然后再根据直线上的交叉点进行小范围比较)
if ((px >= minX && px <= maxX) && (py >= minY - offset && py <= maxY + offset)) {
//求Y轴坐标
//方法1根据tanθ= y/x = y1/x1, 即y = (y1/x1)*x (该方法有局限性,垂直线(p2.x - p1.x)=0不能用)
//var y = ((p2.y - p1.y) / (p2.x - p1.x)) * (px - p1.x);
//方法2先求弧度hudu根据cosθ=x/r, r=x/cosθ,求得r再根据sinθ=y/r, y=sinθ*r, 求得y
var hudu = Math.atan2(p2.y - p1.y, p2.x - p1.x); // 直线的弧度(倾斜度)
// 用三角函数计出直线上的交叉点
var r = (px - p1.x) / Math.cos(hudu); // 直角三角形的斜边(或理解成圆的半径)
var y = Math.sin(hudu) * r; // Y轴坐标
var p = {
x: px,
y: p1.y + y
}; // 直线上的交叉点
if ((Math.abs(px - p.x) <= offset) && (Math.abs(py - p.y) <= offset)) {
flag = 1; // 1 - 点中
}
lines[i].crossPoint = p; // 直线上的交叉点
}
}
//console.log("flag", flag)
if (flag === 1) {
console.log("选中了", lines[i])
// 创建一个高亮边框
console.log("highlight", highlight);
if (typeof(highlight) != 'undefined') {
console.log("highlight11", highlight);
highlight.remove();
}
var item = paper.project.activeLayer.children;
console.log("p1", p1)
console.log("p2", p2)
//console.log("item",JSON.stringify(paper.project.activeLayer.children));
for (var j = 0; j < item.length; j++) {
if (item[j] instanceof paper.Path && item[j].bounds.contains([p1.x + evenaa.x, p1.y +
evenaa.y
]) && item[j].bounds.contains([p2.x + evenaa.x, p2.y + evenaa.y])) {
//item[j].remove();
var cayPath = paper.Path;
cayPath.x += evenaa.x;
cayPath.y += evenaa.y;
console.log("item[j].bounds", item[j].bounds)
var path = new paper.Path(new Point([10, 10]), new Point([100, 100]));
highlight = new cayPath.Rectangle({
rectangle: item[j].bounds.expand(5), // 根据线条边界扩展5个单位长度
fillColor: 'rgba(100,149,237, 0.5)', // 半透明黄色填充
strokeColor: null // 无描边
}); highlight.sendToBack(); // 将高亮边框置于底层
console.log("evenaa", evenaa);
//highlight.position += translation
//var translation = new paper.Point(evenaa.x, evenaa.y); // 平移向量tion;
break;
}
}
lines[i].flag = ((lines[i].flag + 1) % 2); // 0、1切换
break;
}
}
// 重画线
};
// // 当鼠标按下时进行处理
// canvas.addEventListener('mousedown', function (event) {
// var mousePos = eventToMousePosition(event); // 将事件转换为鼠标位置
// mousePos.x += evenaa.x;
// mousePos.y += evenaa.y;
// console.log('event=',event)
// // 获取所有线条对象
// var lines = [];
// for (var i in paper.project.layers[0].children) {
// if (paper.project.layers[0].children[i] instanceof paper.Path && !paper.project.layers[0].children[i].selected
// && (paper.project.layers[0].children[i].strokeColor == 'rgb(255,0,0)'
// || paper.project.layers[0].children[i].strokeColor == 'rgb(0,128,0)')) {
// console.log("paper.project.layers[0].children[i].strokeColor",paper.project.layers[0].children[i].strokeColor);
// paper.project.layers[0].children[i].strokeColor = 'black';
// lines.push(paper.project.layers[0].children[i]);
// }
// }
// // 根据鼠标位置查询是否有线条被选中
// var hitResult = false;
// for (var j in lines) {
// console.log('lines=',lines);
// console.log('lines[j].segments=',lines[j].segments);
// // var paths = lines[j];
// // var topX = paths.segments[0].point.x;
// // var topY = paths.segments[0].point.y;
// // var botX = paths.segments[1].point.x;
// // var botY = paths.segments[1].point.y;
// // var maxX,minX,maxY,minY;
// // maxX = Math.max(topX,botX)
// // minX = Math.min(topX,botX)
// // maxY = Math.max(topY,botY)
// // minY = Math.min(topY,botY)
// // if(minX-10 <= clientX && clientX <= maxX+10 && minY-10 <= clientY && clientY <= maxY+10){
// // hitResult = true;
// // }
// hitResult = lines[j].hitTest(mousePos);
// if (hitResult) {
// paper.project.layers[0].children[j].strokeColor = 'red';
// break;
// }
// }
// // 若有线条被选中,则修改其样式或者执行其他操作
// if (hitResult) {
// console.log("选中了第" + (parseInt(j)+1) + "条线条");
// // 这里可以编写自己想要执行的代码
// } else {
// console.log("没有线条被选中");
// }
// });
// // 将事件转换为鼠标位置
// function eventToMousePosition(event) {
// return new paper.Point(event.clientX - canvas.offsetLeft, event.clientY - canvas.offsetTop);
// }
view.onMouseDown = function(event) {
/*
if(event.event.button==0) {
CarGlobalPositionRecSch = 1;
}
else if(event.event.button==2){
CarGlobalPositionRecSch = 0;
}
*/
/*
if(event.event.button==0) {
CarPositionRecPath.selected=false;
if (CarPositionRecPath.segments.length > 0) {
CarPositionRecPath.onClick = function (event) {
CarPositionRecPath.selected = true;
}
}
for(let i=0;i<LearnPathCanvasLineArr.length;i++){
LearnPathCanvasLineArr[i].selected=false;
LearnPathCanvasLineArr[i].onClick=function(event){
LearnPathCanvasLineArr[i].selected = true;
}
}
}*/
}
view.onMouseDrag = function(event) {
evenaa.x += event.delta.x;
evenaa.y += event.delta.y;
if (typeof(highlight) != 'undefined') {
//var translation = new paper.Point(event.delta.x, event.delta.y);
//console.log("translation",translation);
highlight.position.x += event.delta.x;
highlight.position.y += event.delta.y;
paper.view.draw();
}
//console.log(event);
//if(event.event.buttons!=0) {
Lu_ParallelMoveDraw_CoordinateCanvasLine(CoordinateCanvasLine, event.delta);
Lu_ParallelMoveDraw_PathCanvasLineArr(LearnPathCanvasLineArr, event.delta);
Lu_ParallelMoveDraw_PathCanvasArcArr(LearnPathCanvasArcArr, event.delta);
Lu_ParallelMoveDraw_PathCanvasBezierArr(LearnPathCanvasBezierArr, event.delta);
Lu_ParallelMoveDraw_PathCanvasWayPointArr(LearnPathCanvasWayPointArr, event.delta);
Lu_ParallelMoveDraw_PathCanvasOriginTurnArr(LearnPathCanvasOriginTurnArr, event.delta);
Lu_ParallelMoveDraw_PathNodeCanavsArr(LearnPathNodeCanvasArr, event.delta);
Lu_ParallelMoveDraw_PointCloudCanvasArr(LearnPointCloudCanvasArr, event.delta);
Lu_ParallelMoveDraw_CarLearnWayPointABPath(CarLearnWayPointABPath, event.delta);
Lu_ParallelMoveDraw_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, event.delta);
Lu_ParallelMoveDraw_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, event.delta);
Lu_ParallelMoveDraw_CarPositionRecPath(CarPositionRecPath, event.delta);
paper.project.view.update();
//}
}
view.onMouseUp = function(event) {
}
function Lu_Draw_CanvasWithCarCenter() {
var CarModelPosition = new Point(Car_Global_rx, Car_Global_ry);
Lu_Draw_CanvasWithPosCenter(CarModelPosition);
//Lu_Record_HMIMapInfo(CoordinateCanvasLine);
}
function Lu_Draw_CanvasWithPosCenter(ModelPosition) {
console.log("ModelPosition", ModelPosition)
var CanvasPosition = Lu_TransferModelToCanvasWithCoordinateCanvas(ModelPosition,
CoordinateCanvasLine);
//var CanvasPosition=Lu_ModelToCanvas(ModelPosition);
var canvas = document.getElementById('myCanvas');
var canvas_width = parseFloat(canvas.style.width);
var canvas_height = parseFloat(canvas.style.height);
var offset = new Point(canvas_width / 2.0 - CanvasPosition.x, canvas_height / 2.0 -
CanvasPosition.y);
console.log("offset", offset)
//ScreenPan.x =ScreenPan.x + offset.x;
//ScreenPan.y =ScreenPan.y + offset.y;
//console.log(ScreenPan);
//ScreenDrag=new Point(0.0,0.0);
Lu_ParallelMoveDraw_CoordinateCanvasLine(CoordinateCanvasLine, offset);
Lu_ParallelMoveDraw_PathCanvasLineArr(LearnPathCanvasLineArr, offset);
Lu_ParallelMoveDraw_PathCanvasArcArr(LearnPathCanvasArcArr, offset);
Lu_ParallelMoveDraw_PathCanvasBezierArr(LearnPathCanvasBezierArr, offset);
Lu_ParallelMoveDraw_PathCanvasWayPointArr(LearnPathCanvasWayPointArr, offset);
Lu_ParallelMoveDraw_PathCanvasOriginTurnArr(LearnPathCanvasOriginTurnArr, offset);
Lu_ParallelMoveDraw_PathNodeCanavsArr(LearnPathNodeCanvasArr, offset);
Lu_ParallelMoveDraw_PointCloudCanvasArr(LearnPointCloudCanvasArr, offset);
Lu_ParallelMoveDraw_CarLearnWayPointABPath(CarLearnWayPointABPath, offset);
Lu_ParallelMoveDraw_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, offset);
Lu_ParallelMoveDraw_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, offset);
Lu_ParallelMoveDraw_CarPositionRecPath(CarPositionRecPath, offset);
}
function receiveMessage(event) {
//console.log(event);
switch (event.data.event_id) {
case 'client_response': {
var data = event.data.data;
var result = data.v1;
var ROS_String_Output = data.v2;
var Rec_Learn_String_Input = data.v3;
var Client_Request_Cmd = Rec_Learn_String_Input.split(':');
switch (Client_Request_Cmd[0]) {
case "GetLearnPointCloud": {
Lu_Parse_LearnPointCloud(ROS_String_Output);
//console.log(PointCloud_Map);
Get_LearnPointCloud_File_OK = true;
}
break;
case "GetLearnPathTable": {
Lu_Parse_LearnPathTable(ROS_String_Output);
Get_LearnPathTable_File_OK = true;
//console.log("Right:"+ROS_String_Output);
//console.log(LearnPathTable_Line_Arr);
//document.getElementById('output').innerText=ROS_String_Output;
}
break;
case "GetLearnNodePointManagerTable": {
Lu_Parse_LearnNodePointManagerTable(ROS_String_Output);
Get_LearnNodePointManagerTable_File_OK = true;
//console.log("Right:"+ROS_String_Output);
}
break;
}
}
break;
default: {
var frame = event.data.split('#');
var head = frame[0].split(':');
switch (head[0]) {
case 'ButtonImage_Vertical_FollowCar': {
//var info=head[1].split('#');
ButtonImage_Vertical_FollowCar = head[1];
console.log(ButtonImage_Vertical_FollowCar);
}
break;
case 'Button_CanvasInit': {
Lu_CanvasInit();
}
break;
case 'Button_FindCar': {
Lu_FindCar();
}
break;
case 'Button_ZoomIn': {
Lu_ZoomIn();
}
break;
case 'Button_ZoomOut': {
Lu_ZoomOut();
}
break;
default:
break;
}
}
break;
}
}
function Lu_CanvasInit(ev) {
console.log("CanvasInit " + ScreenPanInitx + " " + ScreenPanInity + " " + ZoomInit);
var offset = new Point(0.0, 0.0);
//100 100 300
offset.x = ScreenPanInitx - CoordinateCanvasLine.OriginCanvasPosition.x;
offset.y = ScreenPanInity - CoordinateCanvasLine.OriginCanvasPosition.y;
paper.view.zoom = ZoomInit;
Lu_ParallelMoveDraw_CoordinateCanvasLine(CoordinateCanvasLine, offset);
Lu_ParallelMoveDraw_PathCanvasLineArr(LearnPathCanvasLineArr, offset);
Lu_ParallelMoveDraw_PathCanvasArcArr(LearnPathCanvasArcArr, offset);
Lu_ParallelMoveDraw_PathCanvasBezierArr(LearnPathCanvasBezierArr, offset);
Lu_ParallelMoveDraw_PathCanvasWayPointArr(LearnPathCanvasWayPointArr, offset);
Lu_ParallelMoveDraw_PathCanvasOriginTurnArr(LearnPathCanvasOriginTurnArr, offset);
Lu_ParallelMoveDraw_PathNodeCanavsArr(LearnPathNodeCanvasArr, offset);
Lu_ParallelMoveDraw_PointCloudCanvasArr(LearnPointCloudCanvasArr, offset);
Lu_ParallelMoveDraw_CarLearnWayPointABPath(CarLearnWayPointABPath, offset);
Lu_ParallelMoveDraw_CarLearnWayPointAB3Path(CarLearnWayPointAB3Path, offset);
Lu_ParallelMoveDraw_CarLearnWayPointAB4Path(CarLearnWayPointAB4Path, offset);
Lu_ParallelMoveDraw_CarPositionRecPath(CarPositionRecPath, offset);
//Lu_Record_HMIMapInfo(CoordinateCanvasLine);
}
function Lu_FindCar() {
Lu_Draw_CanvasWithCarCenter();
}
function Lu_ZoomIn() {
var ZoomDelta = 1.25;
paper.view.zoom = paper.view.zoom / ZoomDelta;
if (paper.view.zoom <= ZoomMin) {
paper.view.zoom = ZoomMin;
}
//Lu_Record_HMIMapInfo(CoordinateCanvasLine);
}
function Lu_ZoomOut() {
var ZoomDelta = 1.25;
paper.view.zoom = paper.view.zoom * ZoomDelta;
if (paper.view.zoom >= ZoomMax) {
paper.view.zoom = ZoomMax;
}
//Lu_Record_HMIMapInfo(CoordinateCanvasLine);
}
window.addEventListener("message", receiveMessage, false);
var canvas = document.getElementById('myCanvas');
addEvent(canvas, 'mousewheel', onMouseWheel);
addEvent(canvas, 'DOMMouseScroll', onMouseWheel);
// 当滚轮事件发生时执行onMouseWheel这个函数
function onMouseWheel(ev) {
var ev = ev || window.event;
var down = true; // 定义一个标志,当滚轮向下滚时,执行一些操作
down = ev.wheelDelta ? ev.wheelDelta < 0 : ev.detail > 0;
var delta = ev.wheelDelta ? ev.wheelDelta : ev.detail * (-40);
if (down) {
//console.log("wheeldown!"+delta);
} else {
//console.log("wheelup!"+delta);
}
//console.log(paper.view.zoom);
var ZoomDelta = 1.25 * Math.abs(delta) / 120.0;
if (delta < 0) {
paper.view.zoom = paper.view.zoom / ZoomDelta;
if (paper.view.zoom <= ZoomMin) {
paper.view.zoom = ZoomMin;
//Zoom=paper.view.zoom;
}
} else {
paper.view.zoom = paper.view.zoom * ZoomDelta;
if (paper.view.zoom >= ZoomMax) {
paper.view.zoom = ZoomMax;
//Zoom=paper.view.zoom;
}
}
//Lu_Record_HMIMapInfo(CoordinateCanvasLine);
if (ev.preventDefault) {
/*FF 和 Chrome*/
ev.preventDefault(); // 阻止默认事件
}
return false;
}
}
function Lu_Init_Canvas() {
var canvas = document.getElementById('myCanvas');
paper.setup(canvas);
var ctx = canvas.getContext('2d');
//构建数学平面直角坐标系
var canvas_width = canvas.width;
var canvas_height = canvas.height;
console.log("Height:" + canvas_height);
console.log("Width:" + canvas_width);
}
</script>
<title>Title</title>
</head>
<body>
<canvas id="myCanvas" style="border:5px solid yellowgreen;background:white;width:1180px;height:765px;"
width="1180px" height="765px"></canvas>
</body>
<!-- <script src="../js/drag.js"></script> -->
</html>