Files
apt-nl-map/static/Magic4/Sketch/HMI_Sketch_Right_bak.html
2024-12-04 10:21:04 +08:00

2263 lines
121 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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":["Point",-2.074,-0.033],"endpoint":["Point",-2.067,0.009],"rundirection":"Reverse"},{"startpoint":["Point",-2.067,0.009],"endpoint":["Point",-2.057,0.053],"rundirection":"Reverse"},{"startpoint":["Point",-2.057,0.053],"endpoint":["Point",-2.046,0.099],"rundirection":"Reverse"},{"startpoint":["Point",-2.046,0.099],"endpoint":["Point",-2.033,0.146],"rundirection":"Reverse"},{"startpoint":["Point",-2.033,0.146],"endpoint":["Point",-2.019,0.195],"rundirection":"Reverse"},{"startpoint":["Point",-2.019,0.195],"endpoint":["Point",-2.003,0.244],"rundirection":"Reverse"},{"startpoint":["Point",-2.003,0.244],"endpoint":["Point",-1.985,0.294],"rundirection":"Reverse"},{"startpoint":["Point",-1.985,0.294],"endpoint":["Point",-1.966,0.343],"rundirection":"Reverse"},{"startpoint":["Point",-1.966,0.343],"endpoint":["Point",-1.946,0.392],"rundirection":"Reverse"},{"startpoint":["Point",-1.946,0.392],"endpoint":["Point",-1.925,0.439],"rundirection":"Reverse"},{"startpoint":["Point",-1.925,0.439],"endpoint":["Point",-1.902,0.485],"rundirection":"Reverse"},{"startpoint":["Point",-1.902,0.485],"endpoint":["Point",-1.879,0.529],"rundirection":"Reverse"},{"startpoint":["Point",-1.879,0.529],"endpoint":["Point",-1.855,0.571],"rundirection":"Reverse"},{"startpoint":["Point",-1.855,0.571],"endpoint":["Point",-1.83,0.61],"rundirection":"Reverse"},{"startpoint":["Point",-1.83,0.61],"endpoint":["Point",-1.804,0.646],"rundirection":"Reverse"},{"startpoint":["Point",-1.804,0.646],"endpoint":["Point",-1.778,0.678],"rundirection":"Reverse"},{"startpoint":["Point",-1.778,0.678],"endpoint":["Point",-1.752,0.706],"rundirection":"Reverse"},{"startpoint":["Point",-1.752,0.706],"endpoint":["Point",-1.725,0.729],"rundirection":"Reverse"},{"startpoint":["Point",-1.725,0.729],"endpoint":["Point",-1.692,0.753],"rundirection":"Reverse"},{"startpoint":["Point",-1.692,0.753],"endpoint":["Point",-1.655,0.776],"rundirection":"Reverse"},{"startpoint":["Point",-1.655,0.776],"endpoint":["Point",-1.615,0.799],"rundirection":"Reverse"},{"startpoint":["Point",-1.615,0.799],"endpoint":["Point",-1.57,0.822],"rundirection":"Reverse"},{"startpoint":["Point",-1.57,0.822],"endpoint":["Point",-1.523,0.844],"rundirection":"Reverse"},{"startpoint":["Point",-1.523,0.844],"endpoint":["Point",-1.473,0.865],"rundirection":"Reverse"},{"startpoint":["Point",-1.473,0.865],"endpoint":["Point",-1.421,0.886],"rundirection":"Reverse"},{"startpoint":["Point",-1.421,0.886],"endpoint":["Point",-1.367,0.905],"rundirection":"Reverse"},{"startpoint":["Point",-1.367,0.905],"endpoint":["Point",-1.311,0.924],"rundirection":"Reverse"},{"startpoint":["Point",-1.311,0.924],"endpoint":["Point",-1.255,0.942],"rundirection":"Reverse"},{"startpoint":["Point",-1.255,0.942],"endpoint":["Point",-1.199,0.958],"rundirection":"Reverse"},{"startpoint":["Point",-1.199,0.958],"endpoint":["Point",-1.143,0.973],"rundirection":"Reverse"},{"startpoint":["Point",-1.143,0.973],"endpoint":["Point",-1.087,0.987],"rundirection":"Reverse"},{"startpoint":["Point",-1.087,0.987],"endpoint":["Point",-1.032,0.999],"rundirection":"Reverse"},{"startpoint":["Point",-1.032,0.999],"endpoint":["Point",-0.978,1.009],"rundirection":"Reverse"},{"startpoint":["Point",-0.978,1.009],"endpoint":["Point",-0.926,1.018],"rundirection":"Reverse"},{"startpoint":["Point",-0.926,1.018],"endpoint":["Point",-0.876,1.025],"rundirection":"Reverse"},{"startpoint":["Point",-0.876,1.025],"endpoint":["Point",-0.829,1.03],"rundirection":"Reverse"},{"startpoint":["Point",-0.829,1.03],"endpoint":["Point",-0.785,1.032],"rundirection":"Reverse"},{"startpoint":["Point",-0.785,1.032],"endpoint":["Point",-0.745,1.033],"rundirection":"Reverse"}],"Color":"grey"}]
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>