--- ray/src/common/view.h 1989/12/10 13:41:08 1.2 +++ ray/src/common/view.h 1990/10/13 20:56:04 1.6 @@ -11,6 +11,8 @@ /* view types */ #define VT_PER 'v' /* perspective */ #define VT_PAR 'l' /* parallel */ +#define VT_ANG 'a' /* angular fisheye */ +#define VT_HEM 'h' /* hemispherical fisheye */ typedef struct { int type; /* view type */ @@ -19,18 +21,22 @@ typedef struct { FVECT vup; /* view up */ double horiz; /* horizontal view size */ double vert; /* vertical view size */ - int hresolu; /* horizontal resolution */ - int vresolu; /* vertical resolution */ - FVECT vhinc; /* computed horizontal increment */ - FVECT vvinc; /* computed vertical increment */ - double vhs2; /* 1.0/DOT(vhinc,vhinc) */ - double vvs2; /* 1.0/DOT(vvinc,vvinc) */ + double hoff; /* horizontal image offset */ + double voff; /* vertical image offset */ + FVECT hvec; /* computed horizontal image vector */ + FVECT vvec; /* computed vertical image vector */ + double hn2; /* DOT(hvec,hvec) */ + double vn2; /* DOT(vvec,vvec) */ } VIEW; /* view parameters */ extern VIEW stdview; extern char *setview(); -#define STDVIEW(h) {VT_PER,0.,0.,0.,0.,1.,0.,0.,0.,1.,45.,45.,h,h} +extern double sqrt(); + +#define viewaspect(v) sqrt((v)->vn2/(v)->hn2) + +#define STDVIEW {VT_PER,0.,0.,0.,0.,1.,0.,0.,0.,1.,45.,45.,0.,0.} #define VIEWSTR "VIEW="