home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1996 / ARCHIVE_96.iso / discs / shareware / share_43 / source / h / DKBPROTO < prev    next >
Text File  |  1991-08-22  |  18KB  |  346 lines

  1. /*****************************************************************************
  2. *
  3. *                                  dkbproto.h
  4. *
  5. *   from DKBTrace (c) 1990  David Buck
  6. *
  7. *  This module defines the prototypes for all system-independent functions.
  8. *
  9. * This software is freely distributable. The source and/or object code may be
  10. * copied or uploaded to communications services so long as this notice remains
  11. * at the top of each file.  If any changes are made to the program, you must
  12. * clearly indicate in the documentation and in the programs startup message
  13. * who it was who made the changes. The documentation should also describe what
  14. * those changes were. This software may not be included in whole or in
  15. * part into any commercial package without the express written consent of the
  16. * author.  It may, however, be included in other public domain or freely
  17. * distributed software so long as the proper credit for the software is given.
  18. *
  19. * This software is provided as is without any guarantees or warranty. Although
  20. * the author has attempted to find and correct any bugs in the software, he
  21. * is not responsible for any damage caused by the use of the software.  The
  22. * author is under no obligation to provide service, corrections, or upgrades
  23. * to this package.
  24. *
  25. * Despite all the legal stuff above, if you do find bugs, I would like to hear
  26. * about them.  Also, if you have any comments or questions, you may contact me
  27. * at the following address:
  28. *
  29. *     David Buck
  30. *     22C Sonnet Cres.
  31. *     Nepean Ontario
  32. *     Canada, K2H 8W7
  33. *
  34. *  I can also be reached on the following bulleton boards:
  35. *
  36. *     ATX              (613) 526-4141
  37. *     OMX              (613) 731-3419
  38. *     Mystic           (613) 731-0088 or (613) 731-6698
  39. *
  40. *  Fidonet:   1:163/109.9
  41. *  Internet:  David_Buck@Carleton.CA
  42. *
  43. *  IBM Port by Aaron A. Collins. Aaron may be reached on the following BBS'es:
  44. *
  45. *     Lattice BBS                      (708) 916-1200
  46. *     The Information Exchange BBS     (708) 945-5575
  47. *     Stillwaters BBS                  (708) 403-2826
  48. *
  49. *****************************************************************************/
  50.  
  51.  
  52. /* Prototypes for functions defined in trace.c */
  53. void usage PARAMS((void));
  54. void init_vars PARAMS((void));
  55. void close_all PARAMS((void));
  56. void get_defaults PARAMS((void));
  57. void read_options PARAMS((char *file_name));
  58. void parse_option PARAMS((char *Option_String));
  59. void parse_file_name PARAMS((char *File_Name));
  60. void Print_Options PARAMS((void));
  61. void print_stats PARAMS((void));
  62.  
  63. /* Prototypes for functions defined in render.c */
  64. void Create_Ray PARAMS((RAY *ray, int width, int height, DBL x, DBL y));
  65. void Write_Line PARAMS((COLOUR *Line, int y));
  66. void Supersample PARAMS((COLOUR *result, int x, int y, int Width,int Height));
  67. void Start_Tracing PARAMS((void));
  68. void Trace PARAMS((RAY *Ray, COLOUR *Colour));
  69. void check_stats PARAMS((register int y));
  70. void allocate_lines PARAMS((COLOUR **Previous_Line, COLOUR **Current_Line, char **Previous_Line_Antialiased_Flags, char **Current_Line_Antialiased_Flags, RAY *Ray));
  71. void output PARAMS((register int y, COLOUR **Previous_Line, COLOUR **Current_Line, char **Previous_Line_Antialiased_Flags, char **Current_Line_Antialiased_Flags));
  72.  
  73. /* Prototypes for functions defined in tokenize.c */
  74. void Tokenize PARAMS((char *name, FILE *in, FILE *symbol, FILE *out));
  75. int Process_Token PARAMS((void));
  76. int Skip_Spaces PARAMS((void));
  77. int Parse_Comments PARAMS((void));
  78. void Begin_String PARAMS((void));
  79. void Stuff_Character PARAMS((int c));
  80. void End_String PARAMS((void));
  81. int Read_Float PARAMS((void));
  82. int Parse_String PARAMS((void));
  83. int Read_Include PARAMS((void));
  84. int Read_Symbol PARAMS((void));
  85. int Find_Reserved PARAMS((void));
  86. int Find_Symbol PARAMS((void));
  87. void Write_Token PARAMS((enum Token_Type Token_Id));
  88. void Token_Error PARAMS((char *str));
  89.  
  90. /* Prototypes for functions defined in parse.c */
  91. void Parse PARAMS((FILE *File, FRAME *Frame_Ptr));
  92. void Token_Init PARAMS((void));
  93. int Get_Token PARAMS((void));
  94. void Unget_Token PARAMS((void));
  95. void Frame_Init PARAMS((void));
  96. COMPOSITE *Get_Composite_Object PARAMS((void));
  97. SPHERE *Get_Sphere_Shape PARAMS((void));
  98. QUADRIC *Get_Quadric_Shape PARAMS((void));
  99. PLANE *Get_Plane_Shape PARAMS((void));
  100. TRIANGLE *Get_Triangle_Shape PARAMS((void));
  101. SMOOTH_TRIANGLE *Get_Smooth_Triangle_Shape PARAMS((void));
  102. CSG_SHAPE *Get_CSG_Shape PARAMS((void));
  103. CSG_SHAPE *Get_CSG_Union PARAMS((void));
  104. CSG_SHAPE *Get_CSG_Intersection PARAMS((void));
  105. CSG_SHAPE *Get_CSG_Difference PARAMS((void));
  106. void Set_CSG_Parents PARAMS((CSG_SHAPE *, OBJECT *));
  107. OBJECT *Get_Object PARAMS((void));
  108. TEXTURE *Get_Texture PARAMS((void));
  109. VIEWPOINT *Get_Viewpoint PARAMS((void));
  110. COLOUR *Get_Colour PARAMS((void));
  111. VECTOR *Get_Vector PARAMS((void));
  112. DBL *Get_Float PARAMS((void));
  113. TRANSFORMATION *Get_Transformation PARAMS((void));
  114. DBL Parse_Float PARAMS((void));
  115. void Parse_Vector PARAMS((VECTOR *Given_Vector));
  116. void Parse_Colour PARAMS((COLOUR *Given_Colour));
  117. COLOUR_MAP *Parse_Colour_Map PARAMS((void));
  118. TEXTURE *Copy_Texture PARAMS((TEXTURE *Texture));
  119. TEXTURE *Parse_Texture PARAMS((TEXTURE *Old_Texture));
  120. SHAPE *Parse_Sphere PARAMS((void));
  121. SHAPE *Parse_Plane PARAMS((void));
  122. SHAPE *Parse_Triangle PARAMS((void));
  123. SHAPE *Parse_Smooth_Triangle PARAMS((void));
  124. SHAPE *Parse_Quadric PARAMS((void));
  125. CSG_SHAPE *Parse_CSG PARAMS((int type, OBJECT *Parent_Object));
  126. SHAPE *Parse_Shape PARAMS((OBJECT *Object));
  127. OBJECT *Parse_Object PARAMS((void));
  128. OBJECT *Parse_Composite PARAMS((void));
  129. void Parse_Fog PARAMS((void));
  130. void Parse_Frame PARAMS((void));
  131. void Parse_Viewpoint PARAMS((VIEWPOINT *Given_Vp));
  132. void Parse_Declare PARAMS((void));
  133. void Init_Viewpoint PARAMS((VIEWPOINT *vp));
  134. void Link PARAMS((OBJECT *New_Object,
  135.           OBJECT **Field,
  136.           OBJECT **Old_Object_List));
  137. CONSTANT Find_Constant PARAMS((void));
  138. char *Get_Token_String PARAMS((TOKEN Token_Id));
  139. void Parse_Error PARAMS((TOKEN Token_Id));
  140. void Type_Error PARAMS((void));
  141. void Undeclared PARAMS((void));
  142. void Error PARAMS((char *str));
  143.  
  144. /* Prototypes for functions defined in objects.c */
  145. INTERSECTION *Object_Intersect PARAMS((OBJECT *Object, RAY *Ray));
  146. int All_Composite_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  147. int All_Object_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  148. int Inside_Basic_Object PARAMS((VECTOR *Point, OBJECT *Object)); 
  149. int Inside_Composite_Object PARAMS((VECTOR *Point, OBJECT *Object));
  150. void *Copy_Basic_Object PARAMS((OBJECT *Object));
  151. void *Copy_Composite_Object PARAMS((OBJECT *Object));
  152. void Translate_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  153. void Rotate_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  154. void Scale_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  155. void Translate_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  156. void Rotate_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  157. void Scale_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
  158. void Invert_Basic_Object PARAMS((OBJECT *Object));
  159. void Invert_Composite_Object PARAMS((OBJECT *Object));
  160.  
  161. /* Prototypes for functions defined in spheres.c */
  162. int All_Sphere_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  163. int Intersect_Sphere PARAMS((RAY *Ray, SPHERE *Sphere, DBL *Depth1, DBL *Depth2));
  164. int Inside_Sphere PARAMS((VECTOR *Point, OBJECT *Object));
  165. void Sphere_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
  166. void *Copy_Sphere PARAMS((OBJECT *Object));
  167. void Translate_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
  168. void Rotate_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
  169. void Scale_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
  170. void Invert_Sphere PARAMS((OBJECT *Object));
  171.  
  172. /* Prototypes for functions defined in quadrics.c */
  173. int All_Quadric_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  174. int Intersect_Quadric PARAMS((RAY *Ray, QUADRIC *Shape, DBL *Depth1, DBL *Depth2));
  175. int Inside_Quadric PARAMS((VECTOR *Point, OBJECT *Object));
  176. void Quadric_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
  177. void *Copy_Quadric PARAMS((OBJECT *Object));
  178. void Transform_Quadric PARAMS((QUADRIC *Shape, TRANSFORMATION *Transformation));
  179. void Quadric_To_Matrix PARAMS((QUADRIC *Quadric, MATRIX *Matrix));
  180. void Matrix_To_Quadric PARAMS((MATRIX *Matrix, QUADRIC *Quadric));
  181. void Translate_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
  182. void Rotate_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
  183. void Scale_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
  184. void Invert_Quadric PARAMS((OBJECT *Object));
  185.  
  186. /* Prototypes for functions defined in triangle.c */
  187. void Find_Triangle_Dominant_Axis PARAMS((TRIANGLE *Triangle));
  188. int Compute_Triangle  PARAMS((TRIANGLE *Triangle));
  189. void Compute_Smooth_Triangle  PARAMS((SMOOTH_TRIANGLE *Triangle));
  190. int All_Triangle_Intersections  PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  191. int Intersect_Triangle  PARAMS((RAY *Ray, TRIANGLE *Triangle, DBL *Depth));
  192. int Inside_Triangle  PARAMS((VECTOR *Point, OBJECT *Object));
  193. void Triangle_Normal  PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
  194. void *Copy_Triangle  PARAMS((OBJECT *Object));
  195. void Translate_Triangle  PARAMS((OBJECT *Object, VECTOR *Vector));
  196. void Rotate_Triangle  PARAMS((OBJECT *Object, VECTOR *Vector));
  197. void Scale_Triangle  PARAMS((OBJECT *Object, VECTOR *Vector));
  198. void Invert_Triangle  PARAMS((OBJECT *Object));
  199. void Smooth_Triangle_Normal  PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
  200. void *Copy_Smooth_Triangle PARAMS((OBJECT *Object));
  201. void Rotate_Smooth_Triangle  PARAMS((OBJECT *Object, VECTOR *Vector));
  202.  
  203.  
  204. /* Prototypes for functions defined in lighting.c */
  205. void Colour_At PARAMS((COLOUR *Colour, OBJECT *Object, VECTOR *Intersection_Point));
  206. void Perturb_Normal PARAMS((VECTOR *New_Normal, OBJECT *Object, VECTOR *Intersection_Point, VECTOR *Surface_Normal));
  207. void Ambient PARAMS((OBJECT *Object, VECTOR *Intersection_Point, COLOUR *Surface_Colour, COLOUR *Colour));
  208. void Diffuse PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Eye, VECTOR *Surface_Normal, COLOUR *Surface_Colour, COLOUR *Colour));
  209. void do_light PARAMS((OBJECT *Light_Source, DBL *Light_Source_Depth, RAY *Light_Source_Ray, VECTOR *Intersection_Point));
  210. void do_blocking PARAMS((OBJECT *Blocking_Object, COLOUR *Blocking_Colour, INTERSECTION *Local_Intersection, COLOUR *Light_Colour));
  211. void do_phong PARAMS((OBJECT *Object, RAY *Light_Source_Ray, RAY *Eye, VECTOR *Surface_Normal, COLOUR *Colour, COLOUR *Light_Colour));
  212. void do_specular PARAMS((OBJECT *Object, RAY *Light_Source_Ray, VECTOR *REye, VECTOR *Surface_Normal, COLOUR *Colour, COLOUR *Light_Colour));
  213. void do_diffuse PARAMS((OBJECT *Object, RAY *Light_Source_Ray, VECTOR *Surface_Normal, COLOUR *Colour, COLOUR *Light_Colour, COLOUR *Surface_Colour));
  214. void Transmit PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray, VECTOR *Surface_Normal, COLOUR *Surface_Colour, COLOUR *Colour));
  215. void Reflect PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray, VECTOR *Surface_Normal, COLOUR *Colour));
  216. void Refract PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray, VECTOR *Surface_Normal, COLOUR *Colour));
  217. void Fog PARAMS((DBL Distance, COLOUR *Fog_Colour, DBL Fog_Distance, COLOUR *Colour));
  218.  
  219. /* Prototypes for functions defined in prioq.c */
  220. void pq_init PARAMS((void));
  221. PRIOQ *pq_alloc PARAMS((void));
  222. void pq_free PARAMS((PRIOQ *pq));
  223. PRIOQ *pq_new PARAMS((int index_size));
  224. void pq_balance PARAMS((PRIOQ *q, unsigned int entry_pos1));
  225. void pq_add PARAMS((PRIOQ *q, INTERSECTION *entry));
  226. INTERSECTION *pq_get_highest PARAMS((PRIOQ *q));
  227. int pq_is_empty PARAMS((PRIOQ *q));
  228. void pq_delete_highest PARAMS((PRIOQ *q));
  229.  
  230. /* Prototypes for functions defined in texture.c */
  231. void Compute_Colour PARAMS((COLOUR *Colour,COLOUR_MAP *Colour_Map,DBL value));
  232. void Initialize_Noise PARAMS((void));
  233. void InitTextureTable PARAMS((void));
  234. void InitRTable PARAMS((void));
  235. int R PARAMS((VECTOR *v));
  236. int Crc16 PARAMS((char *buf, int count));
  237. void setup_lattice PARAMS((DBL *x, DBL *y, DBL *z, long *ix, long *iy, long *iz, long *jx, long *jy, long *jz, DBL *sx, DBL *sy, DBL *sz, DBL *tx, DBL *ty, DBL *tz));
  238. DBL Noise PARAMS((DBL x, DBL y, DBL z));
  239. void DNoise PARAMS((VECTOR *result, DBL x, DBL y, DBL z));
  240. DBL cycloidal PARAMS((DBL value));
  241. DBL Triangle_Wave PARAMS((DBL value));
  242. DBL Turbulence PARAMS((DBL x, DBL y, DBL z));
  243. void DTurbulence PARAMS((VECTOR *result, DBL x, DBL y, DBL z));
  244. int Bozo PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
  245. int marble PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
  246. void ripples PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *Vector));
  247. void waves PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *Vector));
  248. int wood PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
  249. void checker PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
  250. void spotted PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
  251. void bumps PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
  252. void dents PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
  253. void agate PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
  254. void wrinkles PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
  255. void granite PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
  256. void gradient PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
  257. void texture_map PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
  258.  
  259. /* Prototypes for functions defined in csg.c */
  260. int All_CSG_Union_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  261. int All_CSG_Intersection_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue)); 
  262. int All_CSG_Difference_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  263. int Inside_CSG_Union PARAMS((VECTOR *Point, OBJECT *Object));
  264. int Inside_CSG_Intersection PARAMS((VECTOR *Point, OBJECT *Object));
  265. void *Copy_CSG PARAMS((OBJECT *Object));
  266. void Translate_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
  267. void Rotate_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
  268. void Scale_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
  269. void Invert_CSG PARAMS((OBJECT *Object)); 
  270.  
  271. /* Prototypes for functions defined in colour.c */
  272. DBL Colour_Distance PARAMS((COLOUR *colour1, COLOUR *colour2));
  273. void Add_Colour PARAMS((COLOUR *result, COLOUR *colour1, COLOUR *colour2));
  274. void Scale_Colour PARAMS((COLOUR *result, COLOUR *colour, DBL factor));
  275. void Clip_Colour PARAMS((COLOUR *result, COLOUR *colour)); 
  276.  
  277. /* Prototypes for functions defined in viewpnt.c */
  278. void *Copy_Viewpoint PARAMS((OBJECT *Object));
  279. void Translate_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
  280. void Rotate_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
  281. void Scale_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
  282.  
  283. /* Prototypes for functions defined in ray.c */
  284. void Make_Ray PARAMS((RAY *r));
  285. void Initialize_Ray_Containers PARAMS((RAY *Ray));
  286. void Copy_Ray_Containers PARAMS((RAY *Dest_Ray, RAY *Source_Ray));
  287. void Ray_Enter PARAMS((RAY *ray, OBJECT *object));
  288. void Ray_Exit PARAMS((RAY *ray));
  289.  
  290. /* Prototypes for functions defined in planes.c */
  291. int All_Plane_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
  292. int Intersect_Plane PARAMS((RAY *Ray, PLANE *Plane, DBL *Depth));
  293. int Inside_Plane PARAMS((VECTOR *Point, OBJECT *Object));
  294. void Plane_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
  295. void *Copy_Plane PARAMS((OBJECT *Object));
  296. void Translate_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
  297. void Rotate_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
  298. void Scale_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
  299. void Invert_Plane PARAMS((OBJECT *Object));
  300.  
  301. /* Prototypes for functions defined in raw.c */
  302. int read_raw_byte PARAMS((FILE *f));
  303. int read_raw_word PARAMS((FILE *f));
  304. void read_raw_image PARAMS((IMAGE *Image, char *filename));
  305.  
  306. /* Prototypes for functions defined in iff.c */
  307. void iff_error PARAMS((void));
  308. int read_byte PARAMS((FILE *f));
  309. int read_word PARAMS((FILE *f));
  310. long read_long PARAMS((FILE *f));
  311. void Read_Chunk_Header PARAMS((FILE *f, CHUNK_HEADER *dest)); 
  312. void read_iff_image PARAMS((IMAGE *Image, char *filename));
  313.  
  314. /* Prototypes for functions defined in gif.c */
  315. int out_line PARAMS((unsigned char *pixels, int linelen));
  316. int get_byte PARAMS((void));
  317. void read_gif_image PARAMS((IMAGE *Image, char *filename));
  318.  
  319. /* Prototypes for functions defined in gifdecod.c */
  320. short init_exp PARAMS((short size));
  321. short get_next_code PARAMS((void));
  322. short decoder PARAMS((short linewidth));
  323.  
  324. /* Prototypes for functions defined in amiga.c */
  325. void display_finished PARAMS((void));
  326. void display_init PARAMS((void));
  327. void display_close PARAMS((void));
  328. void display_plot PARAMS((int x, int y, char Red, char Green, char Blue));
  329.  
  330. /* Prototypes for functions defined in matrices.c */
  331. void MZero PARAMS((MATRIX *result));
  332. void MIdentity PARAMS((MATRIX *result));
  333. void MTimes PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
  334. void MAdd PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
  335. void MSub PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
  336. void MScale PARAMS((MATRIX *result, MATRIX *matrix1, DBL amount));
  337. void MTranspose PARAMS((MATRIX *result, MATRIX *matrix1));
  338. void MTransformVector PARAMS((VECTOR *result, VECTOR *vector, TRANSFORMATION *transformation));
  339. void MInverseTransformVector PARAMS((VECTOR *result, VECTOR *vector, TRANSFORMATION *transformation));
  340. void Get_Scaling_Transformation PARAMS((TRANSFORMATION *result, VECTOR *vector));
  341. void Get_Inversion_Transformation PARAMS((TRANSFORMATION *result));
  342. void Get_Translation_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *vector));
  343. void Get_Rotation_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *vector));
  344. void Get_Look_At_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *Look_At, VECTOR *Up, VECTOR *Right));
  345. void Compose_Transformations PARAMS((TRANSFORMATION *Original_Transformation, TRANSFORMATION *New_Transformation));
  346.