Dear Chickeners!

In my OpenGL and physics-simulation adventures I have fequently come across
the need for a small math library in Chicken. I spent some time looking at
the eggs out there, but some of them seemed a little overkill for my needs,
so I decided to roll my own.

I was looking for:
- binary compatible with C/OpenGL/GLSL data-storage (f32vectors and friends)
- simple to use and short naming/syntax
- can multiply/add etc vector/matrix
- includes some transformation helpers like translate, rotate and scale
- not a lot of dependencies

In C++ land, it seems like GLM math library is popular, and it matches the
criteria above (except language). A few days in, I've got a fairly
functional math util egg:

https://github.com/Adellica/chicken-glm

Feedback is very welcome! In particular, because of all the different types
(vec2, vec3, ivec2 etc), I wrote a template macro which does basic
substring substitution:

(template
 `((D 2 3 4))
 (define (make-vecD  fill) (make-f32vector D fill))
 (define (make-dvecD fill) (make-f64vector D fill))
 (define (make-ivecD fill) (make-s32vector D fill))
 (define (make-uvecD fill) (make-u32vector D fill))
 (define (make-bvecD fill) (make-u8vector D fill)))

That will expand the body three times, each time substituting D with 2~4.
This works quite nicely and saves me a lot of copy-paste, but I don't know
if it's in the Scheme spirit. Any thoughts?

Vectors use structures from srfi-4, and matrices get their own record
(storing column-count along with its srfi-4 vector).

Once chicken-glm stabelizes a little, I'd like to make it reachable from
chicken-install.
K.
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to