function Spring.new(F,c)local b=F or 0 c=c or tick return setmetatable({_clock=c;_time0=c(),_position0=b,_velocity0=0*b,_target=b,_damper=1,_speed=1},Spring)end
--- Creates a new spring
-- @param initial A number or Vector3 (anything with * number and addition/subtraction defined)
-- @param[opt=tick] clock function to use to update spring
function Spring.new(initial, clock)
	local target = initial or 0
	clock = clock or tick
	return setmetatable({
		_clock = clock,
		_time0 = clock(),
		_position0 = target,
		_velocity0 = 0 * target,
		_target = target,
		_damper = 1,
		_speed = 1,
	}, Spring)
end
