tuned ray-triangle intersection, now there are three algorithms to choose from:
Plucker, Barycentric and Barycentric with preprocessing (Wald)
methods in Vector and Shape (and derivates) made const
#ifndef IMAGE_H
#define IMAGE_H
#define IMG_GRAYSCALE 1
#define IMG_RGB 3
/* raw image */
struct image {
int pixel_size; /* should be 1 for grayscale and 3 for RGB*/
int width;
int height;
char *data;
};
int new_image(struct image **img, int width, int height, int pixelsize);
int destroy_image(struct image **img);
int save_png(const char *fname, struct image *img);
#endif