chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] new egg: glm


From: Kristian Lein-Mathisen
Subject: [Chicken-users] new egg: glm
Date: Mon, 15 Apr 2013 19:04:02 +0200


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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]