gutil.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:3k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /*
  2.  * gutil.h
  3.  *
  4.  * FUNCTION:
  5.  * Provide utilities that allow rotation to occur 
  6.  * around any axis.
  7.  * 
  8.  * HISTORY:
  9.  * created by Linas Vepstas  1990
  10.  * added single & double precision, June 1991, Linas Vepstas
  11.  */
  12. #ifndef __GUTIL_H__
  13. #define __GUTIL_H__
  14. #define __GUTIL_DOUBLE
  15. #ifdef __GUTIL_DOUBLE
  16. #define gutDouble double
  17. #else
  18. #define gutDouble float  
  19. #endif
  20. #ifdef _NO_PROTO /* NO ANSI C PROTOTYPING */
  21. /* Rotation Utilities */
  22. extern void rot_axis_f ();
  23. extern void rot_about_axis_f ();
  24. extern void rot_omega_f ();
  25. extern void urot_axis_f ();
  26. extern void urot_about_axis_f ();
  27. extern void urot_omega_f ();
  28. /* double-precision versions */
  29. extern void rot_axis_d ();
  30. extern void rot_about_axis_d ();
  31. extern void rot_omega_d ();
  32. extern void urot_axis_d ();
  33. extern void urot_about_axis_d ();
  34. extern void urot_omega_d ();
  35. /* viewpoint functions */
  36. extern void uview_direction_d ();
  37. extern void uview_direction_f ();
  38. extern void uviewpoint_d ();
  39. extern void uviewpoint_f ();
  40. #else /* _NO_PROTO */ /* ANSI C PROTOTYPING */
  41. /* Rotation Utilities */
  42. extern void rot_axis_f (float omega, float axis[3]);
  43. extern void rot_about_axis_f (float angle, float axis[3]);
  44. extern void rot_omega_f (float axis[3]);
  45. extern void urot_axis_f (float m[4][4], float omega, float axis[3]);
  46. extern void urot_about_axis_f (float m[4][4], float angle, float axis[3]);
  47. extern void urot_omega_f (float m[4][4], float axis[3]);
  48. /* double-precision versions */
  49. extern void rot_axis_d (double omega, double axis[3]);
  50. extern void rot_about_axis_d (double angle, double axis[3]);
  51. extern void rot_omega_d (double axis[3]);
  52. extern void urot_axis_d (double m[4][4], double omega, double axis[3]);
  53. extern void urot_about_axis_d (double m[4][4], double angle, double axis[3]);
  54. extern void urot_omega_d (double m[4][4], double axis[3]);
  55. /* viewpoint functions */
  56. extern void uview_direction_d (double m[4][4], /* returned */
  57.                         double v21[3], /* input */
  58.                         double up[3]); /* input */
  59. extern void uview_direction_f (float m[4][4], /* returned */
  60.                         float v21[3], /* input */
  61.                         float up[3]); /* input */
  62. extern void uviewpoint_d (double m[4][4], /* returned */
  63.                    double v1[3], /* input */
  64.                    double v2[3], /* input */
  65.                    double up[3]); /* input */
  66. extern void uviewpoint_f (float m[4][4], /* returned */
  67.                    float v1[3], /* input */
  68.                    float v2[3], /* input */
  69.                    float up[3]); /* input */
  70. #endif /* _NO_PROTO */
  71. #endif /* _GUTIL_H__ */
  72. /* ------------------- end of file ---------------------- */