From 10f472771b00b79a479ab54c879f10d234197166 Mon Sep 17 00:00:00 2001 From: Landon Manning Date: Sun, 20 Dec 2015 22:35:06 -0400 Subject: [PATCH] Added simple object and shape constructors ray, aabb, obb, plane, sphere, line, triangle --- modules/utils.lua | 73 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/modules/utils.lua b/modules/utils.lua index 27262d3..3bd0b59 100644 --- a/modules/utils.lua +++ b/modules/utils.lua @@ -104,4 +104,77 @@ function utils.is_pot(value) return (frexp(value)) == 0.5 end +--- Simple ray constructor. +-- @param position +-- @param direction +-- @return table +function utils.ray(position, direction) + return { + position = position, + direction = direction + } +end + +--- Simple aabb constructor. +-- @param min +-- @param max +-- @return table +function utils.aabb(min, max) + return { + min = min, + max = max +end + +--- Simple obb constructor. +-- @param min +-- @param max +-- @param rotation +-- @return table +function utils.obb(min, max, rotation) + return { + min = min, + max = max, + rotation = rotation + } +end + +--- Simple plane constructor. +-- @param position +-- @param normal +-- @return table +function utils.plane(position, normal) + return { + position = position, + normal = normal + } +end + +--- Simple sphere/circle constructor. +-- @param position +-- @param radius +-- @return table +function utils.sphere(position, radius) + return { + position = position, + radius = radius + } +end + +--- Simple line/segment constructor. +-- @param v1 +-- @param v2 +-- @return table +function utils.line(v1, v2) + return { v1, v2 } +end + +--- Simple triangle constructor. +-- @param v1 +-- @param v2 +-- @param v3 +-- @return table +function utils.triangle(v1, v2, v3) + return { v1, v2, v3 } +end + return utils