local d=.5 local F=.9 local function a(a)a=math.clamp(a,-1,1)if a>=0 then return(d*a)/((d-a)+1)end return-((F*-a)/((F+a)+1))end local D=.25 local function b(d)return(1+D)*(2*math.abs(d)-1)-D end local function p(d)return d/2+.5 end

local k = 0.5
local lowerK = 0.9
local function SCurveTransform(t)
	t = math.clamp(t, -1,1)
	if t >= 0 then
		return (k*t) / (k - t + 1)
	end
	return -((lowerK*-t) / (lowerK + t + 1))
end

local DEADZONE = 0.25
local function toSCurveSpace(t)
	return (1 + DEADZONE) * (2*math.abs(t) - 1) - DEADZONE
end

local function fromSCurveSpace(t)
	return t/2 + 0.5
end
