|
|
1.1 ! root 1: /* Simple 3D graphics routines */ ! 2: ! 3: /* Written by Bernie Roehl, November 1994 for VictorMaxx Technologies */ ! 4: ! 5: /* Redistribute at will, but charge nothing */ ! 6: ! 7: typedef struct { float x, y, z; } Vector; ! 8: ! 9: typedef float Matrix[3][3]; ! 10: ! 11: typedef struct ! 12: { ! 13: int start; /* index into vertex array of start of edge */ ! 14: int end; /* index into vertex array of end of edge */ ! 15: int color; /* color to draw this edge in */ ! 16: } Edge; ! 17: ! 18: typedef struct ! 19: { ! 20: Vector location; /* location of object in the world */ ! 21: Matrix orientation; /* orientation matrix for the object */ ! 22: int nvertices; /* number of vertices in the object */ ! 23: Vector *vertices; /* array of vertices */ ! 24: int nedges; /* number of edges in the object */ ! 25: Edge *edges; /* array of edges */ ! 26: } Object; ! 27: ! 28: /* Math routines */ ! 29: ! 30: void BuildTrigTables(void); /* called once at start of application */ ! 31: float sine(int angle); ! 32: float cosine(int angle); ! 33: ! 34: /* Vector operations */ ! 35: ! 36: void VectorAdd(Vector *result, Vector *a, Vector *b); ! 37: void VectorSubtract(Vector *result, Vector *a, Vector *b); ! 38: void VectorRotate(Vector *result, Matrix rotmat, Vector *v); ! 39: ! 40: /* Matrix operations */ ! 41: ! 42: void MatrixIdentity(Matrix result); ! 43: void MatrixMultiply(Matrix result, Matrix a, Matrix b); ! 44: void MatrixMakeXrot(Matrix result, int angle); ! 45: void MatrixMakeYrot(Matrix result, int angle); ! 46: void MatrixMakeZrot(Matrix result, int angle); ! 47: ! 48: /* Low-level screen operations */ ! 49: ! 50: int DisplayInitialize(int ntsc); ! 51: void DisplayUninitialize(void); ! 52: void DisplayClear(int color); ! 53: void DisplayLine(int x1, int y1, int x2, int y2, int color); ! 54: void DisplayCopyLine(unsigned char far *data, unsigned int line, int length); ! 55: void DisplaySetPalette(unsigned char *palette); ! 56: void DisplayUpdate(void); ! 57: void DisplaySetEye(int eye); /* eye is zero for left, non-zero for right */ ! 58: extern int DisplayWidth, DisplayHeight; ! 59: ! 60: /* CTM support */ ! 61: ! 62: int CTM_initialize(int port); ! 63: void CTM_uninitialize(void); ! 64: void CTM_read(int *yaw, int *pitch, int *roll); ! 65: void CTM_float_read(float *yaw, float *pitch, float *roll); ! 66: ! 67: /* Renderer */ ! 68: ! 69: void Render(Object *object, Matrix eye_matrix, float eye_offset, int x_shift); ! 70: void RenderSetZoom(float value); ! 71: ! 72: /* End of 3d.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.