mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-21 19:45:10 +00:00
Add more vec3f functions to Lua
This commit is contained in:
parent
369a7cd7e5
commit
7aab694743
2 changed files with 54 additions and 0 deletions
|
@ -80,6 +80,36 @@ function vec3f_mul(dest, a)
|
||||||
return dest
|
return dest
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function vec3f_normalize(dest)
|
||||||
|
local invsqrt = 1.0 / math.sqrt(dest.x * dest.x + dest.y * dest.y + dest.z * dest.z)
|
||||||
|
if invsqrt == 0 then
|
||||||
|
return dest
|
||||||
|
end
|
||||||
|
|
||||||
|
dest.x = dest.x * invsqrt
|
||||||
|
dest.y = dest.y * invsqrt
|
||||||
|
dest.z = dest.z * invsqrt
|
||||||
|
|
||||||
|
return dest
|
||||||
|
end
|
||||||
|
|
||||||
|
function vec3f_length(a)
|
||||||
|
return math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z)
|
||||||
|
end
|
||||||
|
|
||||||
|
function vec3f_dot(a, b)
|
||||||
|
return a.x * b.x + a.y * b.y + a.z * b.z
|
||||||
|
end
|
||||||
|
|
||||||
|
function vec3f_project(vec, onto)
|
||||||
|
local numerator = vec3f_dot(vec, onto)
|
||||||
|
local denominator = vec3f_dot(onto, onto)
|
||||||
|
local out = {}
|
||||||
|
vec3f_copy(out, onto)
|
||||||
|
vec3f_mul(out, numerator / denominator)
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
|
||||||
function vec3f_dist(v1, v2)
|
function vec3f_dist(v1, v2)
|
||||||
dx = v1.x - v2.x
|
dx = v1.x - v2.x
|
||||||
dy = v1.y - v2.y
|
dy = v1.y - v2.y
|
||||||
|
|
|
@ -72,6 +72,30 @@ char gSmluaConstants[] = ""
|
||||||
" dest.z = dest.z * a\n"
|
" dest.z = dest.z * a\n"
|
||||||
" return dest\n"
|
" return dest\n"
|
||||||
"end\n"
|
"end\n"
|
||||||
|
"function vec3f_normalize(dest)\n"
|
||||||
|
" local invsqrt = 1.0 / math.sqrt(dest.x * dest.x + dest.y * dest.y + dest.z * dest.z)\n"
|
||||||
|
" if invsqrt == 0 then\n"
|
||||||
|
" return dest\n"
|
||||||
|
" end\n"
|
||||||
|
" dest.x = dest.x * invsqrt\n"
|
||||||
|
" dest.y = dest.y * invsqrt\n"
|
||||||
|
" dest.z = dest.z * invsqrt\n"
|
||||||
|
" return dest\n"
|
||||||
|
"end\n"
|
||||||
|
"function vec3f_length(a)\n"
|
||||||
|
" return math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z)\n"
|
||||||
|
"end\n"
|
||||||
|
"function vec3f_dot(a, b)\n"
|
||||||
|
" return a.x * b.x + a.y * b.y + a.z * b.z\n"
|
||||||
|
"end\n"
|
||||||
|
"function vec3f_project(vec, onto)\n"
|
||||||
|
" local numerator = vec3f_dot(vec, onto)\n"
|
||||||
|
" local denominator = vec3f_dot(onto, onto)\n"
|
||||||
|
" local out = {}\n"
|
||||||
|
" vec3f_copy(out, onto)\n"
|
||||||
|
" vec3f_mul(out, numerator / denominator)\n"
|
||||||
|
" return out\n"
|
||||||
|
"end\n"
|
||||||
"function vec3f_dist(v1, v2)\n"
|
"function vec3f_dist(v1, v2)\n"
|
||||||
" dx = v1.x - v2.x\n"
|
" dx = v1.x - v2.x\n"
|
||||||
" dy = v1.y - v2.y\n"
|
" dy = v1.y - v2.y\n"
|
||||||
|
|
Loading…
Reference in a new issue