Files
apt-nl-map/static/Magic4/Lu_Math_Driver.js

181 lines
4.1 KiB
JavaScript
Raw Normal View History

2024-12-03 16:40:54 +08:00
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));
}