From 285f5bec5bb03d4e825e5d866e94008088dd6155 Mon Sep 17 00:00:00 2001 From: xleroy Date: Sat, 9 Aug 2008 08:06:33 +0000 Subject: Ajout nouveaux tests git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@708 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- test/raytracer/object.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test/raytracer/object.h (limited to 'test/raytracer/object.h') diff --git a/test/raytracer/object.h b/test/raytracer/object.h new file mode 100644 index 00000000..d890bda8 --- /dev/null +++ b/test/raytracer/object.h @@ -0,0 +1,36 @@ +struct object { + enum { Cone, Cube, Cylinder, Plane, Sphere, + Union, Intersection, Difference } kind; + /* For base objects: Cone, Cube, Cylinder, Plane, Sphere */ + struct closure surf; /* surface function */ + struct matrix * world2obj, * obj2world; + flt max_scale_applied; + /* For compound objects: Union, Intersection, Difference */ + struct object * o1, * o2; + /* For all objects: bounding sphere (center and radius) */ + struct point center; + flt radius; +}; + +struct object * cone(struct closure * c); +struct object * cube(struct closure * c); +struct object * cylinder(struct closure * c); +struct object * plane(struct closure * c); +struct object * sphere(struct closure * c); + +struct object * orotatex(struct object * o1, flt a); +struct object * orotatey(struct object * o1, flt a); +struct object * orotatez(struct object * o1, flt a); +struct object * oscale(struct object * o1, flt sx, flt sy, flt sz); +struct object * otranslate(struct object * o1, + flt tx, flt ty, flt tz); +struct object * ouscale(struct object * o1, flt s); + +struct object * odifference(struct object * o1, struct object * o2); +struct object * ointersect(struct object * o1, struct object * o2); +struct object * ounion(struct object * o1, struct object * o2); + +void normal_vector(struct object * obj, struct point * p, int face, + /*out*/ struct vector * n); + +#define BS_NOT_COMPUTED (-1.0) -- cgit