1 /* 2 * triangle.h 3 * 4 * Copyright (C) 1989, 1991, Craig E. Kolb 5 * All rights reserved. 6 * 7 * This software may be freely copied, modified, and redistributed 8 * provided that this copyright notice is preserved on all copies. 9 * 10 * You may not distribute this software, in whole or in part, as part of 11 * any commercial product without the express consent of the authors. 12 * 13 * There is no warranty or other guarantee of fitness of this software 14 * for any purpose. It is provided solely "as is". 15 * 16 * $Id: triangle.h,v 4.0 91/07/17 14:39:43 kolb Exp Locker: kolb $ 17 * 18 * $Log: triangle.h,v $ 19 * Revision 4.0 91/07/17 14:39:43 kolb 20 * Initial version. 21 * 22 */ 23 #ifndef TRIANGLE_H 24 #define TRIANGLE_H 25 26 #define FLATTRI 0 27 #define PHONGTRI 1 28 29 #define GeomTriangleCreate(t,a,b,c,d,e,f,g,h,i,s) GeomCreate( \ 30 (GeomRef)TriangleCreate(t,a,b,c,d,e,f,g,h,i,s), TriangleMethods()) 31 32 /* 33 * Triangle 34 */ 35 typedef struct { 36 Vector nrm, /* triangle normal */ 37 p[3], /* vertices */ 38 e[3], /* "edge" vectors (scaled) */ 39 *vnorm, /* Array of vertex normals */ 40 *dpdu, *dpdv; /* U and V direction vectors */ 41 Float d, /* plane constant */ 42 b[3]; /* Array of barycentric coordinates */ 43 Vec2d *uv; /* Array of UV coordinates of vertices */ 44 char index, /* Flag used for shading/intersection test. */ 45 type; /* type (to detect if phong or flat) */ 46 } Triangle; 47 48 extern Triangle *TriangleCreate(); 49 extern int TriangleIntersect(), TriangleNormal(); 50 extern void TriangleBounds(), TriangleUV(), 51 TriangleStats(); 52 extern Methods *TriangleMethods(); 53 char *TriangleName(); 54 #endif /* TRIANGLE_H */ 55