1 // $Header: x:/prj/tech/libsrc/r3d/RCS/xform.h 1.9 1998/06/18 11:27:29 JAEMZ Exp $
2 // Transform and projection definitions
10 // define to dereference global f pointer
11 #define R3_XFORM(x) (*((r3d_glob.xform_tab).x))
13 // The basic set of transformers and projectors are as follows. The
14 // project class of functions just projects, stuffing the sx,sy, and w
15 // values into the 2d part of the point. The rotate class of functions
18 // some of these will be function pointers
19 EXTERN
void r3_transform_block(int n
,r3s_point dst
[],mxs_vector src
[]);
20 #define r3_rotate_block(n,dst,src) (R3_XFORM(rotate_block)((n),(dst),(src)))
21 #define r3_project_block(n,p) (R3_XFORM(project_block)((n),(p)))
22 #define r3_transform_block_func R3_XFORM(transform_block)
24 EXTERN
void r3_transform_list(int n
,r3s_phandle dst
[],mxs_vector
*src
[]);
25 EXTERN
void r3_rotate_list(int n
,r3s_phandle dst
[],mxs_vector
*src
[]);
26 EXTERN
void r3_project_list(int n
,r3s_phandle p
[]);
28 #define r3_transform_point(dst,src) r3_transform_block(1,(dst),(src))
29 #define r3_rotate_point(dst,src) (R3_XFORM(rotate_block)(1,(dst),(src)))
30 #define r3_project_point(p) (R3_XFORM(project_block)(1,(p)))
32 // This is the preferred model, especially since every tile renderer is
33 // fixed anyway it gets you the delta to add to your transformed points.
34 // It stuffs the delta into dst.
36 EXTERN
void r3_get_delta(mxs_vector
*dst
,mxs_vector
*src
);
37 EXTERN
void r3_copy_add_delta(r3s_point
*dst
,r3s_point
*src
,mxs_vector
*delta
);