From 9abe2af7aafc55377dde73b4fff278043c7274f6 Mon Sep 17 00:00:00 2001 From: ywang Date: Thu, 5 Dec 2019 22:23:13 +0100 Subject: More accurate train logic, but still buggy --- advtrains/helpers.lua | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'advtrains/helpers.lua') diff --git a/advtrains/helpers.lua b/advtrains/helpers.lua index e04991e..a2eabb5 100644 --- a/advtrains/helpers.lua +++ b/advtrains/helpers.lua @@ -79,7 +79,7 @@ function advtrains.yawToDirection(yaw, conn1, conn2) local yaw2 = advtrains.dir_to_angle(conn2) local adiff1 = advtrains.minAngleDiffRad(yaw, yaw1) local adiff2 = advtrains.minAngleDiffRad(yaw, yaw2) - + if math.abs(adiff2)=1 do conn_y = conn_y - 1 adj_pos.y = adj_pos.y + 1 end - + local nextnode_ok, nextconns, nextrail_y=advtrains.get_rail_info_at(adj_pos, drives_on) if not nextnode_ok then adj_pos.y = adj_pos.y - 1 @@ -398,6 +398,13 @@ function advtrains.decode_pos(pts) return vector.new(dec(strx), dec(stry), dec(strz)) end +function advtrains.solve_quadratic_equation(a, b, c) + if not (a and b and c) then return nil end + local delta = (b*b - 4*a*c) + if delta < 0 then return nil end + return {((-b+math.sqrt(delta))/2/a),((-b-math.sqrt(delta))/2/a)} +end + --[[ Benchmarking code local tdt = {} local tlt = {} @@ -435,8 +442,6 @@ end atdebug("pts",os.clock()-t1,"s") --Results: ---2018-11-29 16:57:08: ACTION[Main]: [advtrains]endec 1.786451 s ---2018-11-29 16:57:10: ACTION[Main]: [advtrains]pts 2.566377 s +--2018-11-29 16:57:08: ACTION[Main]: [advtrains]endec 1.786451 s +--2018-11-29 16:57:10: ACTION[Main]: [advtrains]pts 2.566377 s ]] - - -- cgit v1.2.3