glMath.h
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // glMath.h : Header file; Defines the class definitions
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #ifndef __GLMATH__
  20. #define __GLMATH__
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // glMath Definitions:
  26. //
  27. #define Pi 3.14159265
  28. #define PiOver180 1.74532925199433E-002
  29. #define PiUnder180 5.72957795130823E+001
  30. #define SMALL_NUMBER 0.00001
  31. #define LARGE_NUMBER 1E20
  32. #define X 0 // Used for array index
  33. #define Y 1
  34. #define Z 2
  35. #define W 3
  36. /////////////////////////////////////////////////////////////////////////////
  37. // Type Definitions:
  38. //
  39. typedef GLfloat VECTORF[4];
  40. typedef GLdouble Matx4x4[4][4];
  41. /////////////////////////////////////////////////////////////////////////////
  42. // External function prototypes:
  43. //
  44. // Misc Math Functions
  45. extern GLfloat Radiansf(GLfloat Angle);
  46. extern GLfloat Degreesf(GLfloat Angle);
  47. extern GLfloat Cosf(GLfloat Angle);
  48. extern GLfloat Sinf(GLfloat Angle);
  49. extern GLfloat Powerf(GLfloat Base, int Exponent);
  50. extern GLfloat Sqrf(GLfloat x);
  51. extern int Roundf(GLfloat x);
  52. extern GLdouble Radiansd(GLdouble Angle);
  53. extern GLdouble Degreesd(GLdouble Angle);
  54. extern GLdouble Cosd(GLdouble Angle);
  55. extern GLdouble Sind(GLdouble Angle);
  56. // Vector Functions
  57. extern void VecClear3f(VECTORF A);
  58. extern void VecClear4f(VECTORF A);
  59. extern void Vec3f(GLfloat r, GLfloat s, GLfloat t, VECTORF A);
  60. extern void UnVec3f(VECTORF A, GLfloat *r, GLfloat *s, GLfloat *t);
  61. extern void Vec4f(GLfloat r, GLfloat s, GLfloat t, GLfloat u, VECTORF A);
  62. extern void UnVec4f(VECTORF A, GLfloat *r, GLfloat *s, GLfloat *t, GLfloat *u);
  63. extern void VecCopy3f(VECTORF A, VECTORF B);
  64. extern void VecCopy4f(VECTORF A, VECTORF B);
  65. extern void VecSubf(VECTORF A, VECTORF B, VECTORF C);
  66. extern void VecAddf(VECTORF A, VECTORF B, VECTORF C);
  67. extern void VecAdd3f(VECTORF A, VECTORF B, VECTORF C, VECTORF D);
  68. extern GLfloat VecDiFFf(VECTORF A, VECTORF B);
  69. extern GLfloat VecDotf(VECTORF A, VECTORF B);
  70. extern void VecCrossf(VECTORF A, VECTORF B, VECTORF C);
  71. extern GLfloat VecLenf(VECTORF A);
  72. extern void VecNormalizef(VECTORF A);
  73. extern void CalNormalf(VECTORF A, VECTORF B, VECTORF C, VECTORF N);
  74. // Affine Matrix Transformation Funcitons
  75. extern void ZeroMatrix(Matx4x4 A);
  76. extern void Translate3D(float tx, float ty, float tz, Matx4x4 A);
  77. extern void Scale3D(float sx, float sy, float sz, Matx4x4 A);
  78. extern void Rotate3D(int m, float Theta, Matx4x4 A);
  79. extern void MultiplyMatricies(Matx4x4 A, Matx4x4 B, Matx4x4 C);
  80. extern void MatrixCopy(Matx4x4 A, Matx4x4 B);
  81. extern void TransposeMatrix(Matx4x4 A);
  82. extern void PrepareMatrix(float Px, float Py, float Pz,
  83.   float Sx, float Sy, float Sz,
  84.   float Rx, float Ry, float Rz,
  85.   float Tx, float Ty, float Tz,
  86.   Matx4x4 XForm);
  87. extern void PrepareInvMatrix(float Px, float Py, float Pz,
  88.  float Sx, float Sy, float Sz,
  89.  float Rx, float Ry, float Rz,
  90.  float Tx, float Ty, float Tz,
  91.  Matx4x4 XForm);
  92. extern void VecTransformf(VECTORF sx, VECTORF dx, Matx4x4 M);
  93. // Misc OpenGL Related Functions
  94. extern void glMatrixTo4x4(GLdouble M[16], Matx4x4 A);
  95. extern void Matx4x4ToglMatrix(Matx4x4 A, GLdouble M[16]);
  96. extern void Transformf(VECTORF sx, VECTORF dx, GLdouble M[16]);
  97. #ifdef __cplusplus
  98. }
  99. #endif
  100. #endif // Include/Define