CMSC 435 Autumn 1996 Some Additional Things For Lab4


Matrices for Easy.dat

3 of the 5 matrices come out to be identity: T(-VRP), R, SH.
Scale values are: .41667, .833333, .0166667
T(-COP) = 0,0, -50

Zproj = -.83333


#Include for vector operations


#define XYZ_ADD(c,a,b)   { (c).x = (a).x + (b).x; (c).y = (a).y + (b).y;\
                           (c).z = (a).z + (b).z;}
#define XYZ_SUB(c,a,b)   { (c).x = (a).x - (b).x; (c).y = (a).y - (b).y; \
                           (c).z = (a).z - (b).z;}
#define XYZ_MULT(c,a,b)  { (c).x = (a).x * (b).x; (c).y = (a).y * (b).y; \
                           (c).z = (a).z * (b).z;}
#define XYZ_DIV(c,a,b)   { (c).x = (a).x / (b).x; (c).y = (a).y / (b).y; \
                           (c).z = (a).z / (b).z;}

#define XYZ_INC(c,a)     { (c).x += (a).x; (c).y += (a).y;\
                           (c).z += (a).z;}
#define XYZ_DEC(c,a)     { (c).x -= (a).x; (c).y -= (a).y;\
                           (c).z -= (a).z;}
#define XYZ_ADDC(c,a,b)  { (c).x = (a).x + (b); (c).y = (a).y + (b);\
                           (c).z = (a).z + (b);}
#define XYZ_SUBC(c,a,b)  { (c).x = (a).x - (b); (c).y = (a).y - (b); \
                           (c).z = (a).z - (b);}
#define XYZ_MULTC(c,a,b) { (c).x = (a).x * (b); (c).y = (a).y * (b);\
                           (c).z = (a).z * (b);}
#define XYZ_DIVC(c,a,b)  { (c).x = (a).x / (b); (c).y = (a).y / (b);\
                           (c).z = (a).z / (b);}
#define XYZ_COPY(b,a)    { (b).x = (a).x; (b).y = (a).y; (b).z = (a).z; }
#define XYZ_COPYC(b,a)   { (b).x = (a); (b).y = (a); (b).z = (a); }
#define CROSS_XYZ(c,a,b) { (c).x = (a).y * (b).z - (a).z * (b).y; \
			   (c).y = (a).z * (b).x - (a).x * (b).z; \
			   (c).z = (a).x * (b).y - (a).y * (b).x; }
#define CROSS_3(c,a,b)   { (c)[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1]; \
			   (c)[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2]; \
			   (c)[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0]; }

#define NORMALIZE_XYZ(v)  { float __tmpnormval; \
			    __tmpnormval = (double)sqrt((v).x*(v).x +  \
					    (v).y*(v).y + (v).z*(v).z); \
			      (v).x /= __tmpnormval; \
			      (v).y /= __tmpnormval;  \
			      (v).z /= __tmpnormval;}
#define R_NORMALIZE_XYZ(v)  { float __tmpnormval; \
			    (((__tmpnormval = (double)sqrt((v).x*(v).x +  \
					    (v).y*(v).y + (v).z*(v).z)) \
			      == 0.0) ? FALSE : ((v).x /= __tmpnormval,  \
						 (v).y /= __tmpnormval,  \
						 (v).z /= __tmpnormval,TRUE));}
#define R_NORMALIZE_XYZ_P(v)  { float __tmpnormval; \
			    (((__tmpnormval = (double)sqrt((v)->x*(v)->x +  \
					    (v)->y*(v)->y + (v)->z*(v)->z)) \
			      == 0.0) ? FALSE :((v)->x /= __tmpnormval,  \
						(v)->y /= __tmpnormval,  \
						(v)->z /= __tmpnormval,TRUE));}

#define RGB_ADD(c,a,e)   { (c).r = (a).r + (e).r; (c).g = (a).g + (e).g; \
                           (c).b = (a).b + (e).b; }
#define RGB_SUB(c,a,e)   { (c).r = (a).r - (e).r; (c).g = (a).g - (e).g; \
                           (c).b = (a).b - (e).b; }
#define RGB_MULT(c,a,e)  { (c).r = (a).r * (e).r; (c).g = (a).g * (e).g; \
                           (c).b = (a).b * (e).b; }
#define RGB_ADDC(c,a,e)  { (c).r = (a).r + (e); (c).g = (a).g + (e); \
                           (c).b = (a).b + (e); }
#define RGB_SUBC(c,a,e)  { (c).r = (a).r - (e); (c).g = (a).g - (e); \
                           (c).b = (a).b - (e); }
#define RGB_MULTC(c,a,e) { (c).r = (a).r * (e); (c).g = (a).g * (e); \
                           (c).b = (a).b * (e); }
#define RGB_DIVC(c,a,e)  { (c).r = (a).r / (e); (c).g = (a).g / (e); \
                           (c).b = (a).b / (e); }
#define RGB_COPY(c,a)    { (c).r = (a).r; (c).g = (a).g; (c).b = (a).b; }
#define RGB_COPYC(c,a)   { (c).r = (a); (c).g = (a); (c).b = (a); }