📄 poly.h
字号:
/* poly.h: definitions for polygon package */#ifndef POLY_HDR#define POLY_HDR#define POLY_NMAX 10 /* max #sides to a polygon; change if needed *//* note that poly_clip, given an n-gon as input, might output an (n+6)gon *//* POLY_NMAX=10 is thus appropriate if input polygons are triangles or quads */typedef struct { /* A POLYGON VERTEX */ double sx, sy, sz, sw; /* screen space position (sometimes homo.) */ double x, y, z; /* world space position */ double u, v, q; /* texture position (sometimes homogeneous) */ double r, g, b; /* (red,green,blue) color */ double nx, ny, nz; /* world space normal vector */} Poly_vert;/* update poly.c if you change this structure *//* note: don't put > 32 doubles in Poly_vert struct, or mask will overflow */typedef struct { /* A POLYGON */ int n; /* number of sides */ unsigned long mask; /* interpolation mask for vertex elems */ Poly_vert vert[POLY_NMAX]; /* vertices */} Poly;/* * mask is an interpolation mask whose kth bit indicates whether the kth * double in a Poly_vert is relevant. * For example, if the valid attributes are sx, sy, and sz, then set * mask = POLY_MASK(sx) | POLY_MASK(sy) | POLY_MASK(sz); */typedef struct { /* A BOX (TYPICALLY IN SCREEN SPACE) */ double x0, x1; /* left and right */ double y0, y1; /* top and bottom */ double z0, z1; /* near and far */} Poly_box;typedef struct { /* WINDOW: A DISCRETE 2-D RECTANGLE */ int x0, y0; /* xmin and ymin */ int x1, y1; /* xmax and ymax (inclusive) */} Window;#define POLY_MASK(elem) (1 << (&poly_dummy->elem - (double *)poly_dummy))#define POLY_CLIP_OUT 0 /* polygon entirely outside box */#define POLY_CLIP_PARTIAL 1 /* polygon partially inside */#define POLY_CLIP_IN 2 /* polygon entirely inside box */extern Poly_vert *poly_dummy; /* used superficially by POLY_MASK macro */void poly_print(/* str, p */);void poly_vert_label(/* str, mask */);void poly_vert_print(/* str, v, mask */);int poly_clip_to_box(/* p1, box */);void poly_clip_to_halfspace(/* p, q, index, sign, k, name */);void poly_scan(/* p, win, pixelproc */);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -