MathDefs.h
上传用户:owen_mei
上传日期:2022-08-09
资源大小:2263k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // MathDefs.h: interface for the CMathDefs class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_MATHDEFS_H__AACDDD61_CE32_485C_BD07_07442B0568B7__INCLUDED_)
  5. #define AFX_MATHDEFS_H__AACDDD61_CE32_485C_BD07_07442B0568B7__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #define M_PI        3.14159265358979323846f
  10. #define HALF_PI     1.57079632679489661923f
  11. //  有关角度换算的宏定义
  12. #define DEGTORAD(A) ((A * M_PI) / 180.0f)
  13. #define RADTODEG(A) ((A * 180.0f) / M_PI)
  14. #define MAKEVECTOR(a,vx,vy,vz) a.x = vx; a.y = vy; a.z = vz;
  15. typedef unsigned char uchar;
  16. typedef int BOOL;
  17. typedef unsigned int uint;
  18. typedef unsigned short  ushort;
  19. typedef unsigned char byte;
  20. typedef struct
  21. {
  22. float u,v;
  23. } t2DCoord;
  24. typedef struct
  25. {
  26. union 
  27. {
  28. float x;
  29. float u;
  30. float r;
  31. };
  32. union 
  33. {
  34. float y;
  35. float v;
  36. float g;
  37. };
  38. union 
  39. {
  40. float z;
  41. float w;
  42. float b;
  43. };
  44. } tVector;
  45. // 矩阵定义的数据结构
  46. typedef struct
  47. {
  48. float m[16];
  49. } tMatrix;
  50. // 顶点数据结构(包括顶点坐标和顶点颜色)
  51. typedef struct
  52. {
  53. float r,g,b;
  54. float x,y,z;
  55. } tColoredVertex;
  56. typedef struct
  57. {
  58. float u,v;
  59. float x,y,z;
  60. } tTexturedVertex;
  61. typedef struct
  62. {
  63. float u,v;
  64. float r,g,b;
  65. float x,y,z;
  66. } tTexturedColoredVertex;
  67. //  四元数结构定义
  68. typedef struct
  69. {
  70. float x,y,z,w;
  71. } tQuaternion;
  72. class CMathDefs  
  73. {
  74. public:
  75. CMathDefs();
  76. virtual ~CMathDefs();
  77. void MultVectorByMatrix(tMatrix *mat, tVector *v,tVector *result);
  78. void MultVectorByRotMatrix(tMatrix *mat, tVector *v,tVector *result);
  79. double VectorSquaredLength(tVector *v); 
  80. double VectorLength(tVector *v); 
  81. void NormalizeVector(tVector *v); 
  82. double DotProduct(tVector *v1, tVector *v2);
  83. void CrossProduct(tVector *v1, tVector *v2, tVector *result);
  84. double VectorSquaredDistance(tVector *v1, tVector *v2);
  85. void ScaleVector(tVector *v, float scale, tVector *result);
  86. void VectorSum(tVector *v1, tVector *v2, tVector *result);
  87. void VectorDifference(tVector *v1, tVector *v2, tVector *result);
  88. void IdentityMatrix(tMatrix *mat);
  89. };
  90. #endif // !defined(AFX_MATHDEFS_H__AACDDD61_CE32_485C_BD07_07442B0568B7__INCLUDED_)