Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

new math functions

lua has added math.sign and math.clamp functions, and maybe others. would be nice to have.

more tricky might be to add the ability to use a quart to rotate a vector, though there is probably a roundabout way to o it.

thanks!

Comments

  • dave1707dave1707 Mod
    Posts: 8,193

    @RonJeffries Those functions are easy to duplicate.

    function sign(val)
        if val<0 then
            return -1
        elseif val==0 then
            return 0
        else
            return 1
        end
    end
    
    function clamp(val,min,max)
        if val<= min then
            return min
        elseif val>= max then
            return max
        else
            return val
        end
    end
    
  • Posts: 480

    clamp is quicker as math.min(max,math.max(min,val))

    Applying a quat to a vec3 is available via my quat extension library: https://github.com/loopspace/Codea-Library-Maths/blob/master/VecExt.lua

  • dave1707dave1707 Mod
    Posts: 8,193

    @LoopSpace Thanks for that. I knew there was a way to do it like that, but I didn’t want to spend the time trying to get it right.

  • Posts: 496

    oh yes, can dup ... builtins be nice tho ... thanks!
    will check out the lib, @LoopSpace thanks!

  • SimeonSimeon Admin Mod
    Posts: 5,202

    The plan is to update to Lua 5.4 as soon as it's ready, so I'll definitely integrate these new math functions

  • Posts: 471

    @Simeon while on the subject of missing functions...as i mentioned in a previous post, i was surprised there is no angleBetween() for vec3.

  • Posts: 480

    @piinthesky Mathematically, angleBetween for vec3s should return a quat. This is implemented in my library as `u:rotateTo(v)’

  • Posts: 471

    @LoopSpace surely i can calculate a space angle between two 3d vectors, no? A dot product would give it?

  • Posts: 496

    axis-angle between two vec3 is what one generally wants, or "rotation between" which is the quat from one to the other.

  • Posts: 496

    @LoopSpace your library is ... daunting. i suppose one can just use it. folding it inside Codea-lua would make that more palatable for the likes of me, though i'm enjoying figuring out its inner workings. really good stuff!

  • Posts: 480

    @piinthesky Yes, you can calculate the angle via the dot product. But as @RonJeffries says, most of the time you want to know how to rotate one vector onto the other and for that you need a quaternion.

    @RonJeffries It's a library that has grown, and grown! I should probably document it a bit better than it is. Feel free to ask about anything that isn't clear.

  • Posts: 496

    thanks! from my short look, using it will be straightforward. understanding how to set up all the metatables will be ... interesting.

    i suspect it might be better organized to put usage "at the top" somehow, but it's not clear how. ideally, it'd be folded into Codea, but since most folks don't need it, it might be bloaty if bloaty is a word.

Sign In or Register to comment.