181 lines
4.1 KiB
JavaScript
181 lines
4.1 KiB
JavaScript
function Lu_ArcToDeg(i){
|
|
var a=i*180.0/Math.PI;
|
|
return a;
|
|
}
|
|
|
|
function Lu_DegToArc(i){
|
|
var a=i*Math.PI/180.0;
|
|
return a;
|
|
}
|
|
|
|
|
|
function Lu_IntToByte(i) {
|
|
var b = i & 0x000000FF;
|
|
|
|
return b;
|
|
}
|
|
|
|
function Lu_StrToByte(str){
|
|
var p=Lu_IntToByte(parseInt(str));
|
|
return p;
|
|
}
|
|
|
|
//无符int转有符int
|
|
function UInt32toInt32(i) {
|
|
if (i <= 2147483647)
|
|
return i;
|
|
else
|
|
return i - 4294967296
|
|
}
|
|
|
|
function Int32toUInt32(i){
|
|
if (i >= 0)
|
|
return i;
|
|
else
|
|
4294967296 + i;
|
|
}
|
|
|
|
function UInt162Int16(i){
|
|
if(i<=32767)return i;
|
|
else return i - 65536;
|
|
}
|
|
|
|
function Lu_Convert2ByteToInt16(byteHigh,byteLow){
|
|
value= ((byteHigh << 8) & 0xFF00) | (byteLow & 0x00FF);
|
|
return UInt162Int16(value);
|
|
}
|
|
|
|
function Lu_Convert4ByteToUInt32(byte3,byte2,byte1,byte0){
|
|
value= ((byte3 << 24) & 0xFF000000) |
|
|
((byte2 << 16) & 0x00FF0000) |
|
|
((byte1 << 8) & 0x0000FF00) |
|
|
((byte0 ) & 0x000000FF) ;
|
|
return Int32toUInt32(value);
|
|
}
|
|
|
|
function Lu_Convert4ByteToInt32(byte3,byte2,byte1,byte0){
|
|
value= ((byte3 << 24) & 0xFF000000) |
|
|
((byte2 << 16) & 0x00FF0000) |
|
|
((byte1 << 8) & 0x0000FF00) |
|
|
((byte0 ) & 0x000000FF) ;
|
|
return value;
|
|
}
|
|
|
|
function Lu_Normal_Deg(MinDeg,MaxDeg,Deg){
|
|
//console.log(MinDeg+" "+MaxDeg+" "+Deg);
|
|
var R_Deg=0.0;
|
|
while(Deg<MinDeg){
|
|
Deg=Deg+360.0;
|
|
}
|
|
while(Deg>MaxDeg){
|
|
Deg=Deg-360.0;
|
|
}
|
|
R_Deg=Deg;
|
|
return R_Deg;
|
|
}
|
|
|
|
function Lu_Get_Dist(x1,y1,x2,y2){
|
|
var dist=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
|
|
return dist;
|
|
}
|
|
|
|
function Lu_GetNextPoint_By_xs_ys_dirdeg(xs,ys,dir_deg,dist){
|
|
var dir_arc=dir_deg*Math.PI/180;
|
|
var xe=xs+dist*Math.cos(dir_arc);
|
|
var ye=ys+dist*Math.sin(dir_arc);
|
|
var obj = new Object();
|
|
obj.x=xe;
|
|
obj.y=ye;
|
|
return obj;
|
|
}
|
|
|
|
function Lu_ORILocalPoint2GlobalPoint(ori_rx,ori_ry,ori_rt_deg,lx,ly){
|
|
var obj=new Object();
|
|
var arc=ori_rt_deg*Math.PI/180;
|
|
obj.x=ori_rx+lx*Math.cos(arc)-ly*Math.sin(arc);
|
|
obj.y=ori_ry+ly*Math.cos(arc)+lx*Math.sin(arc);
|
|
return obj;
|
|
}
|
|
|
|
function Lu_DRPLocalPoint2GlobalPoint(ori_rx,ori_ry,ori_rt_deg,DRP_Dist_m,DRP_Angle_deg){
|
|
var arc=DRP_Angle_deg*Math.PI/180.0;
|
|
var lx_m=DRP_Dist_m*Math.cos(arc);
|
|
var ly_m=DRP_Dist_m*Math.sin(arc);
|
|
return Lu_ORILocalPoint2GlobalPoint(ori_rx,ori_ry,ori_rt_deg,lx_m,ly_m);
|
|
}
|
|
|
|
function Lu_Judge_StartToEnd_SpeedDirection(sp_x,sp_y,ep_x,ep_y,ep_thetax_deg){
|
|
var RunVector_x=ep_x-sp_x;
|
|
var RunVector_y=ep_y-sp_y;
|
|
|
|
var arc = Lu_DegToArc(ep_thetax_deg+90);
|
|
var CarVector_x=Math.cos(arc);
|
|
var CarVector_y=Math.sin(arc);
|
|
var a=RunVector_x*CarVector_x+RunVector_y*CarVector_y;
|
|
if(a>=0)return 1;
|
|
else return -1;
|
|
}
|
|
|
|
function Lu_GetBezier_SP_Next_Point(sp_x,sp_y,sp_thetax_deg,Direction,Slider3,Slider1){
|
|
var max_dist=Slider3/100.0*10.0;
|
|
var dist=max_dist*Slider1/100.0;
|
|
if(dist<0.3)dist=0.3;
|
|
if(Direction=="Front"){
|
|
return Lu_GetNextPoint_By_xs_ys_dirdeg(sp_x,sp_y,sp_thetax_deg+90.0,dist);
|
|
}
|
|
else{
|
|
return Lu_GetNextPoint_By_xs_ys_dirdeg(sp_x,sp_y,sp_thetax_deg-90.0,dist);
|
|
}
|
|
}
|
|
|
|
function Lu_GetBezier_EP_Last_Point(ep_x,ep_y,ep_thetax_deg,Direction,Slider3,Slider2){
|
|
var max_dist=Slider3/100.0*10.0;
|
|
var dist=max_dist*Slider2/100.0;
|
|
if(dist<0.3)dist=0.3;
|
|
if(Direction=="Front"){
|
|
return Lu_GetNextPoint_By_xs_ys_dirdeg(ep_x,ep_y,ep_thetax_deg-90.0,dist);
|
|
}
|
|
else{
|
|
return Lu_GetNextPoint_By_xs_ys_dirdeg(ep_x,ep_y,ep_thetax_deg+90.0,dist);
|
|
}
|
|
}
|
|
|
|
function factorial(num){
|
|
if (num <= 1)
|
|
{
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
var r = 1;
|
|
for (let i = 1; i <= num; i++) {
|
|
r = r * i;
|
|
}
|
|
//console.log("factorial num:"+num+"="+r);
|
|
return r;
|
|
// return num * factorial(num - 1);
|
|
}
|
|
}
|
|
//补位 当某个字段不是两位数时补0
|
|
function fnW(str){
|
|
var num;
|
|
str>=10?num=str:num="0"+str;
|
|
return num;
|
|
}
|
|
|
|
function fnDate(){
|
|
var date=new Date();
|
|
var year=date.getFullYear();//当前年份
|
|
var month=date.getMonth();//当前月份
|
|
var data=date.getDate();//天
|
|
var hours=date.getHours();//小时
|
|
var minute=date.getMinutes();//分
|
|
var second=date.getSeconds();//秒
|
|
var time=year+"-"+fnW((month+1))+"-"+fnW(data)+" "+fnW(hours)+":"+fnW(minute)+":"+fnW(second);
|
|
return time;
|
|
}
|
|
function sleep(time) {
|
|
return new Promise(resolve => setTimeout(resolve, time));
|
|
}
|
|
|