354 Commits

Author SHA1 Message Date
shakesoda
eb5eaf6961
Merge pull request #68 from idbrii/nan
vec: Add nan checking functions
2022-03-27 03:47:08 -07:00
shakesoda
6b526d53c4
Merge pull request #70 from idbrii/comment-vec
(minor) vec: Add more comments to clarify operations
2022-03-27 03:46:06 -07:00
shakesoda
1da3e99eb7
Merge pull request #71 from idbrii/badge
Switch build badge to github actions
2022-03-27 03:45:50 -07:00
David Briscoe
b793d24e52 Switch build badge to github actions
We don't use travis anymore, so point the readme to the right badge.

(Missed in 84ff1b315e691069389ebbd7e1abcc054e1987ab.)
2022-03-27 01:11:29 -07:00
David Briscoe
320f895759 mat4: minor cleanup of globals and unused variables
forward, side, new_up are unused but are shadowed in many functions.
Doesn't seem like they're intended to be used.

No reason for variables in CreateNDCScaleAndOffsetFromFov to be global.
Don't try running this change, but I'm just making them local.
2022-03-26 23:35:04 -07:00
David Briscoe
e245f24ca1 vec: Add more comments to clarify operations
Clarify order and behaviour so you can use these functions without
looking up the meaning of vector arithmetic.
2022-03-26 23:34:38 -07:00
David Briscoe
29954aa60e vec: Add nan checking functions
Add:
* vec2.has_nan + test
* vec3.has_nan + test
* quat.has_nan
* mat4.has_nan
* utils.is_nan + test
2022-03-26 23:33:13 -07:00
aki-cat
d7c257387d Implement scale to mat4.from_transform method 2021-12-10 00:31:57 -03:00
shakesoda
a3aacc354c
Merge pull request #65 from idbrii/fix-round
Fix index nil error in private.round
2021-11-24 12:08:57 -08:00
David Briscoe
4dc773865e Reference private.round instead of util.round
Fix "Error: src/lib/cpml/modules/_private_utils.lua:8: attempt to index
    global 'utils' (a nil value)"

Looks like when round was moved to _private_utils, this didn't get
replaced. There is no utils defined and utils.round just points to
private.round.

Add a test. This never triggered test failures because test don't pass
precision.

Test
A love2d program with main.lua:
    local Vec2 = require "cpml.modules.vec2"
    local v = Vec2(1.234, 3.5326)
    print(v:round(0.1))
2021-11-24 09:55:57 -08:00
semyon422
f22c9e09cc Fix incorrect out of mat4.invert when out = a 2021-08-11 18:12:58 +05:00
semyon422
54d9a578e1 Use local variables 2021-08-11 17:08:30 +05:00
Colby Klein
002fabb6bb
Merge pull request #62 from idbrii/actions-busted
Run tests on gh actions
2021-06-23 16:35:33 -07:00
David Briscoe
84ff1b315e Remove travis
Testing setup is now on github actions (which works) instead of travis
(which mysteriously isn't building anything).
2021-06-23 16:33:04 -07:00
David Briscoe
1b2aeffe00 Allow coveralls failure
Fails like this even though we explicitly pass the token:
```
Upload error: Couldn't find a repository matching this job.
Upload error: Couldn't find a repository matching this job.
Upload error: Couldn't find a repository matching this job.
Error: Process completed with exit code 255.
```
2021-06-23 16:28:47 -07:00
David Briscoe
dbc8d7cf85 Add coveralls repo token to gh action 2021-06-23 16:25:21 -07:00
David Briscoe
6bc8193a5a Run tests on gh actions
Related #60.

Can't figure out what's wrong with travis, but gh actions seem to work.
Migrated travis.yml to runtest.yml.

coveralls fails for me because I don't have the account there, but it's
reporting coverage amounts before it fails to upload.

Tests against multiple versions of lua using leafo's matrix.luaversion
with roughly the same versions as travis.yml.

What's missing
==============

Notification setup from travis is missing. Github sends email
notifications. You can choose:
 * Email
 * Web
 * Send notifications for failed workflows only
There are third-party irc gh actions, but I don't see how you'd do
`on_success: change` in an action.

luacheck was disabled in travis.yml, so it's disabled here too.
2021-06-23 16:21:21 -07:00
Colby Klein
7a7e748430
Merge pull request #61 from idbrii/automate-docs
Automate ldoc generation
2021-06-23 15:49:44 -07:00
David Briscoe
5d303a22e2 Automate ldoc generation
Related #11.

Builds docs to the gh-pages branch on every push to master. Also updates
all dead links to point to live ones (or ones that will be live after
this is merged).

Uses three third-party gh actions:

* leafo/gh-actions-lua@v8
* leafo/gh-actions-luarocks@v4
* peaceiris/actions-gh-pages@v3
 * This receives secrets.GITHUB_TOKEN

Also switches to the new ldoc css and moves doc output folder to
./doc/out which is less confusing when configuring than ./doc/doc.

Once merged, docs will be available on https://excessive.github.io/cpml/

Currently, you can see the built docs on https://idbrii.github.io/love-cpml/
2021-06-23 14:33:46 -07:00
Colby Klein
ff8ba77b7a
Update README.md
arbitrary change to kick travis separate from the build trigger
2021-06-17 11:44:37 -07:00
Colby Klein
43f100a12d
Update README.md 2021-06-17 11:26:25 -07:00
mcclure
85988fc7c6
Merge pull request #59 from idbrii/fix-angleto
Fix angle_to to produce signed angle instead of incorrect results
2021-06-17 11:25:16 -04:00
David Briscoe
39aee9a421 Fix angle_to to produce signed angle
angle_to was producing the angle from +x to the difference between a,b
which is unexpected. Instead, it should produce the smallest absolute
angle between the two vectors and be signed to indicate the direction of
rotation.

By using the old angle_to implementation and modifying equal() to print
out the failures, you can see the numbers that it was producing before
didn't make much sense:

    right:angle_to(down) = 45.0
    right:angle_to(left) = 0.0
    right:angle_to(up)   = -45.0
    down:angle_to(right) = -135.0
    down:angle_to(left)  = -45.0
    down:angle_to(up)    = -90.0
    left:angle_to(down)  = 135.0
    left:angle_to(up)    = -135.0
    up:angle_to(right)   = 135.0
    up:angle_to(down)    = 90.0
    up:angle_to(left)    = 45.0

Now it produces numbers you'd expect:

    right:angle_to(down) = -90.0
    right:angle_to(left) = 180.0
    right:angle_to(up)   = 90.0
    down:angle_to(right) = 90.0
    down:angle_to(left)  = -90.0
    down:angle_to(up)    = 180.0
    left:angle_to(down)  = 90.0
    left:angle_to(up)    = -90.0
    up:angle_to(right)   = -90.0
    up:angle_to(down)    = 180.0
    up:angle_to(left)    = 90.0

See also https://stackoverflow.com/questions/21483999/using-atan2-to-find-angle-between-two-vectors

Also added tests for angle_between.
2021-06-15 11:56:04 -07:00
mcc
0d8daf0536 Fix typo breaking round() calls 2020-05-21 23:39:14 -04:00
mcc
ddb80f48e6 Compatibility note for 1.0 release and PR#48 test 2020-05-03 13:36:26 -04:00
mcclure
1000f1d6e5
Merge pull request #48 from mcclure/mat4-reverse
Consistency: mat4 multiply in wrong order
2020-05-03 13:13:11 -04:00
mcc
4319828b4c Compatibility note for 0.10 release 2020-05-03 13:08:24 -04:00
mcc
3490d04ac1 Fix breaking test 2020-05-03 13:00:22 -04:00
mcclure
61affeb669
Merge pull request #56 from mcclure/identity-quat
Fix for issue #55 (quat():to_angle_axis() returns gibberish)
2020-05-03 12:54:47 -04:00
mcc
336f416f29 Manual merge PR#53 2020-05-03 12:52:17 -04:00
mcc
f7497b9bf7 Manual merge PR#52 2020-05-03 12:50:42 -04:00
mcc
6e1cf4be56 Manual merge PR#51 2020-05-03 12:46:30 -04:00
mcclure
9155efb4b9
Merge pull request #54 from mcclure/bsd-2
Include BSD-2-clause text in LICENSE.md
2020-05-03 12:39:22 -04:00
mcclure
d4f7cd1280
Merge pull request #50 from mcclure/master
:round(precision) methods for vec2, vec3, bound2, bound3
2020-05-03 12:37:58 -04:00
mcclure
5601094c04
Merge pull request #49 from mcclure/vec4_cols
Column version of to_vec4s (to_vec4s_cols)
2020-05-03 12:37:22 -04:00
mcc
9cd858a0ef Add tests to identity-quat patch and also take an axis not a full value for the identity fallback 2020-04-25 18:32:48 -04:00
mcc
f27f5520b1 Fix for issue #55 (quat():to_angle_axis() returns gibberish) 2020-04-25 18:06:09 -04:00
mcclure
86f0056397
Merge pull request #47 from mcclure/master-test-failures
Fix failing tests
2019-11-30 17:37:03 -05:00
mcc
4cb051614d Include BSD-2-clause text in LICENSE.md 2019-11-30 11:41:48 -05:00
mcc
185b19d766 vec2.to_vec3(z) creates a vec3 with the given z (or 0) 2019-11-30 11:31:22 -05:00
mcc
7452cc0c6c Simple methods for flipping a vector on exactly 1 axis 2019-11-30 11:25:00 -05:00
mcc
e3f817bf7e extend(vec) and extend_bound(bound) for bounds
expands bounds to cover new points
2019-11-30 01:24:48 -05:00
mcc
8e65db07ce :round(precision) methods for vec2, vec3, bound2, bound3
Uses utils.lua, which requires moving utils.round to a new _private_utils.lua
2019-11-30 00:03:55 -05:00
mcc
13cc666232 Column version of to_vec4s (to_vec4s_cols) for issue #32 2019-11-29 22:24:47 -05:00
mcc
d51a930e4a Consistency (issue #33): mat4 multiply in wrong order
This is a breaking change.
2019-11-29 22:12:22 -05:00
mcclure
00126f19c9
Merge pull request #46 from mcclure/vec-constructor-clone
Make vec2(vec2(1,2)) and vec3(vec3(1,2,3)) consistent between lua/luajit
2019-11-29 21:21:12 -05:00
mcclure
3e94b3abd8
Merge pull request #45 from mcclure/bound-to-string
to_string methods for bound2 and bound3
2019-11-29 21:20:48 -05:00
mcc
a86935a39b Allow ffi.metatype to fail so that "busted" unit tests work
On Github we run unit tests inside "busted". At the start of each test "busted" does some sort of trick (clearing package.loaded)? Which causes "require" to run again for all lua files. This breaks ffi.metatype with error "cannot change a protected metatable" if it is called twice with a single type name, since this is true global state. To work around this this patch wraps ffi.metatype calls in a xpcall() so that failure is silently ignored.
2019-11-29 21:13:30 -05:00
mcc
d845a479ac Fix typo in bound3 test which was breaking under LuaJIT 2019-11-29 21:08:04 -05:00
mcc
7667ea9a3d Fix typo in bound2 test which was breaking under LuaJIT 2019-11-29 17:55:03 -05:00