hello, here are some code I made for gem : http://drpichon.free.fr/gem/
as usual, it's only proposition submited to your critisism.
description :
gemlist_info : --------------- this object get a gemlist and decompose the transformation matrix in basic transformations : translation, rotation, scale and shear. very usful for video -> audio interaction while using iterative process in the gem render chain (this object was made using cut/past from Iohannes code and Chris sugestion)
ShearXY, shearXZ ... ------------------ a collection of transformation objects that shear the deformation matrix. shear can be created with rotation and scale, but it's easier to use this specifics objects. this objects are also usefull to create a specific transformation matrix using gemlist_info output.
newWave : --------- newWave has a big problem : it is sensitive to denormal bug. (newWave deformation can become very small after some time, and denormal can apear in both position and forces.) adding some very low ampliture (about 1e-20) random noise to a node fix the problem : the noise does propagate in the all structure avoiding denormal. maybe some ifdef could be add for this procedure, but it is fast enough to leave it like this.
I just copy the random() procedure from randF object. maybee someone can tell me how to use the original one (sorry, it's a newbee question, but I never had time to learn C++ !)
I also found that newWave share it's dimension on all instances of this object : it was not possible to have a "newWave 5" and a "newWave 23" in the same time. While fixing this I made the X/Y dimention independant to be able to create rectangular newWave.
I fixed also a X/Y texturing inversion and I limited Z position of points to prevent instability of the system.
tube : ------ just a small modification in order to be able to change the number of faces used to draw the shape.
You'll find gem help file for all of this.
Hope you'll like them.
Cyrille