not working FUCK YOU MATH
This commit is contained in:
@ -65,4 +65,21 @@ function AABB:draw()
|
||||
draw_line_3d{start = Vector3(self.min.x, self.min.y, max.z), finish = Vector3(self.min.x, max.y, self.min.z), color = RED}
|
||||
end
|
||||
|
||||
---returns true if the point is inside this aabb
|
||||
---@param point Vector3
|
||||
---@return boolean
|
||||
function AABB:has_point(point)
|
||||
local max = self:get_max()
|
||||
return point > self.min and point < max
|
||||
end
|
||||
|
||||
---returns true if `other` intersects this AABB
|
||||
---@param other AABB
|
||||
---@return boolean
|
||||
function AABB:intersects(other)
|
||||
local my_max = self:get_max()
|
||||
local other_max = other:get_max()
|
||||
return self.min <= other_max and my_max >= other.min
|
||||
end
|
||||
|
||||
return AABB
|
||||
|
@ -155,6 +155,20 @@ function Vector3:__tostring()
|
||||
return "Vector3(" .. tostring(self.x) .. ", " .. tostring(self.y) .. ", " .. tostring(self.z) .. ")"
|
||||
end
|
||||
|
||||
-- note: the < and <= operators of this class are component-wise rather than lexicographic (that is, htey are useful for bounds checking but are not suitable for sorting.)
|
||||
|
||||
function Vector3:__lt(b)
|
||||
local err, other = coerce(b, true)
|
||||
if err then return nil end
|
||||
return self.x < other.x and self.y < other.y and self.z < other.z
|
||||
end
|
||||
|
||||
function Vector3:__le(b)
|
||||
local err, other = coerce(b, true)
|
||||
if err then return nil end
|
||||
return self.x <= other.x and self.y <= other.y and self.z <= other.z
|
||||
end
|
||||
|
||||
Vector3.__index = Vector3
|
||||
|
||||
--------API--------
|
||||
@ -246,6 +260,24 @@ function Vector3:rotate(axis, angle)
|
||||
return self
|
||||
end
|
||||
|
||||
---In place set.
|
||||
---@param x number
|
||||
---@param y number
|
||||
---@param z number
|
||||
---@return Vector3
|
||||
function Vector3:set(x, y, z)
|
||||
self.x, self.y, self.z = x, y, z
|
||||
return self
|
||||
end
|
||||
|
||||
---In place set.
|
||||
---@param t vectorlike
|
||||
---@return Vector3
|
||||
function Vector3:sett(t)
|
||||
self.x, self.y, self.z = t.x, t.y, t.z
|
||||
return self
|
||||
end
|
||||
|
||||
---Returns a copy of this vector.
|
||||
---@return Vector3
|
||||
function Vector3:copy()
|
||||
|
Reference in New Issue
Block a user