mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	Optimize vector length calculations (#11549)
This commit is contained in:
		@@ -209,14 +209,7 @@ end
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
function math.hypot(x, y)
 | 
			
		||||
	local t
 | 
			
		||||
	x = math.abs(x)
 | 
			
		||||
	y = math.abs(y)
 | 
			
		||||
	t = math.min(x, y)
 | 
			
		||||
	x = math.max(x, y)
 | 
			
		||||
	if x == 0 then return 0 end
 | 
			
		||||
	t = t / x
 | 
			
		||||
	return x * math.sqrt(1 + t * t)
 | 
			
		||||
	return math.sqrt(x * x + y * y)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
@@ -67,7 +67,7 @@ metatable.__eq = vector.equals
 | 
			
		||||
-- unary operations
 | 
			
		||||
 | 
			
		||||
function vector.length(v)
 | 
			
		||||
	return math.hypot(v.x, math.hypot(v.y, v.z))
 | 
			
		||||
	return math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z)
 | 
			
		||||
end
 | 
			
		||||
-- Note: we can not use __len because it is already used for primitive table length
 | 
			
		||||
 | 
			
		||||
@@ -104,7 +104,7 @@ function vector.distance(a, b)
 | 
			
		||||
	local x = a.x - b.x
 | 
			
		||||
	local y = a.y - b.y
 | 
			
		||||
	local z = a.z - b.z
 | 
			
		||||
	return math.hypot(x, math.hypot(y, z))
 | 
			
		||||
	return math.sqrt(x * x + y * y + z * z)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function vector.direction(pos1, pos2)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user