Lua 获取零点时间差

--获取零点时间差
function GetLeroLeadTime()
    -- 获取当前时间
   local now_date = os.date("*t",now)  
   -- 当天的最后时间
   local Today_End_Time = os.time{year=now_date.year, month=now_date.month, day=now_date.day, hour=23,min=59,sec=59}
   -- 当前时间与零点的时间差
   local Lero_Time = (Today_End_Time - os.time()) +1
   return nLero_Time
end

-这个接口也可以修改通用点,比如获取

--获取某时间的时间差: 未来时间
function GetTime()
    -- 获取当前时间
   local now_date = os.date("*t",now)  
   -- 当天的最后时间
   local Today_End_Time = os.time{year=now_date.year, month=now_date.month, day=now_date.day, hour=23,min=59,sec=59}
   -- 当前时间与零点的时间差
   local Lero_Time = (Today_End_Time - os.time()) +1
   return nLero_Time
end

 

local function params_calculate_y(x, t, n, k, g, drag) local time = 0 local radian = math.rad(t) local drag_factor = 1 - drag -- 炮口坐标偏移修正 local BASE_OFFSET_Y = 2 -- 底座坐标系Y轴偏移 -- 初始速度计算(单位:米/tick) local Xspeed = math.cos(radian) * n * 2 local Yspeed = math.sin(radian) * n * 2 -- 初始位置计算(包含底座偏移) local Xpos = k * math.cos(radian) local Ypos = k * math.sin(radian) + BASE_OFFSET_Y -- 关键修正点 for i = 1, 3000 do time = time + 1 local old_Xspeed = Xspeed local old_Yspeed = Yspeed Xspeed = old_Xspeed * drag_factor Yspeed = (old_Yspeed * drag_factor) + g Xpos = Xpos + old_Xspeed Ypos = Ypos + old_Yspeed if Xpos > x then local prev_X = Xpos - old_Xspeed local delta_distance = x - prev_X local delta_time = delta_distance / old_Xspeed local partial_Y = old_Yspeed + (old_Yspeed * drag_factor + g) * delta_time / 2 Ypos = Ypos - old_Yspeed + partial_Y return Ypos end end return Ypos end local function offset_y( t , x , n , k , g , drag , t_y) --对目标Y进行一个偏移 return params_calculate_y( x , t , n , k , g , drag ) - t_y end local function calc( x, n , k , g , drag , t_y, a, b, tol) --[计算正常弹道]第一项为距离,第二项为装药量*2,第三项为炮管(不含炮闩)长度,第四项为目标的高度 , 第五项为俯角,第六项为仰角,第七项为目标精度(默认最多只计算30次) local time = 0 local g_a = offset_y( a , x , n , k , g , drag , t_y ) local g_b = offset_y( b , x , n , k , g , drag , t_y ) if g_a * g_b > 0 then return a end local c = (a + b) / 2 local g_c = offset_y(c , x , n , k , g , drag , t_y ) while math.abs(g_c) > tol and time < 30 do --二分法的循环,如果超过30个循环则返回当前解 if g_a * g_c < 0 then b = c g_b = g_c else a = c g_a = g_c end c = (a + b) / 2 g_c = offset_y(c , x , n , k , g , drag , t_y ) time = time + 1 end print(time) return c end calc( 100 , 4 , 7 , -0.025 , 0.01 , 18.69 , -15 , 80 , 30 )为什么当这么计算的时候,他只计算一次就退出了?
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值