Skip to content

[Lua]vector and matrix operator overloading#641

Open
TheGondos wants to merge 2 commits into
orbitersim:mainfrom
TheGondos:lua_math
Open

[Lua]vector and matrix operator overloading#641
TheGondos wants to merge 2 commits into
orbitersim:mainfrom
TheGondos:lua_math

Conversation

@TheGondos
Copy link
Copy Markdown
Contributor

This PR reworks the Lua vector and matrix types to add support for operator overloading.
It tries as much as possible to stay compatible with the older way of using tables as vectors/matrices, and as a result is a bit complicated (the lua_tovector and lua_tomatrix functions now return a pointer to the userdata, but need an additional buffer parameter as a fallback in case they are called on an older table representation).
Even if the vec/mat libraries can take both types as parameters, they now always return a userdata.
To construct a vector, the easiest way is to use the existing _V function, similar as the C++ API: vec = _V(x,y,z)
Similarly for matrices, there is an existing _M function that's been upgraded.
You can now enjoy using operator overloads to simplify you programs :

  • before : M = vec.add (M, vec.crossp(vec.mul(dir,maxth0), ref))
  • after : M = M + (dir * maxth0):crossp(ref)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant