Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef rs_mx_t_H_INCLUDED
  2. #define rs_mx_t_H_INCLUDED
  3.  
  4. // Some matrix and vector stuff
  5. // by Roman Shuvalov
  6.  
  7. #define RS_SQR(x) ((x)*(x))
  8.  
  9.  
  10. // actual period is 1024 ms (1.024 sec)
  11. #define RS_TIME_KOEF_SEC (M_PI * 2.0 * 64.0 / 65536.0)
  12.  
  13.  
  14.  
  15. typedef struct {
  16.     union {
  17.         struct {
  18.             float x;
  19.             float y;
  20.             float z;
  21.         };
  22.         float v[3];
  23.     };
  24.  
  25. } rs_vec3_t;
  26.  
  27.  
  28. typedef struct {
  29.     union {
  30.         struct {
  31.             float x;
  32.             float y;
  33.             float z;
  34.             float w;
  35.         };
  36.         float v[4];
  37.     };
  38.  
  39. } rs_vec4_t;
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. rs_vec3_t rs_vec3_sub(rs_vec3_t v1, rs_vec3_t v2);
  47.  
  48. rs_vec3_t rs_vec3_add(rs_vec3_t v1, rs_vec3_t v2);
  49.  
  50. rs_vec3_t rs_vec3_mult(rs_vec3_t v, float s);
  51.  
  52.  
  53. rs_vec4_t rs_vec4_sub(rs_vec4_t v1, rs_vec4_t v2);
  54.  
  55. void rs_vec4_add(rs_vec4_t dest, rs_vec4_t v1, rs_vec4_t v2);
  56.  
  57. rs_vec4_t rs_vec4(float x, float y, float z, float w);
  58.  
  59. rs_vec3_t rs_vec3(float x, float y, float z);
  60.  
  61.  
  62.  
  63.  
  64. float rs_vec4_length_sqr(rs_vec4_t src);
  65. float rs_vec3_length_sqr(rs_vec3_t src);
  66.  
  67.  
  68.  
  69. float rs_vec4_length(rs_vec4_t v);
  70. float rs_vec3_length(rs_vec3_t v);
  71.  
  72. float rs_vec4_dot(rs_vec4_t v1, rs_vec4_t v2);
  73. float rs_vec3_dot(rs_vec3_t v1, rs_vec3_t v2);
  74.  
  75.  
  76. rs_vec3_t rs_vec3_cross(rs_vec3_t u, rs_vec3_t v);
  77.  
  78. rs_vec3_t rs_vec3_normalize(rs_vec3_t v);
  79.  
  80. float rs_vec4_angle(rs_vec4_t u, rs_vec4_t v);
  81.  
  82. float rs_vec3_cos_angle(rs_vec3_t u, rs_vec3_t v);
  83.  
  84.  
  85.  
  86. float rs_vec3_distance_sqr(rs_vec3_t u, rs_vec3_t v);
  87.  
  88. float rs_clamp(float x, float min1, float max1);
  89. int rs_clamp_i(int x, int min1, int max1);
  90.  
  91. float rs_max(float x, float y);
  92. float rs_min(float x, float y);
  93.  
  94. float rs_sign(float f);
  95. float rs_pow(float f, float p);
  96. float rs_fract(float f);
  97.  
  98. float rs_exp_interpolate(float v_from, float v_to, float dt);
  99. float rs_linear_interpolate(float v_from, float v_to, float t);
  100.  
  101.  
  102. float rs_clamp_angle(float f);
  103.  
  104. #endif // rs_mx_t_H_INCLUDED
  105.