iron_math.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #pragma once
  2. #include <iron_global.h>
  3. #include <stdint.h>
  4. #define IRON_PI 3.141592654
  5. #define IRON_TAU 6.283185307
  6. float iron_cot(float x);
  7. float iron_round(float value);
  8. float iron_abs(float value);
  9. float iron_min(float a, float b);
  10. float iron_max(float a, float b);
  11. int iron_mini(int a, int b);
  12. int iron_maxi(int a, int b);
  13. float iron_clamp(float value, float minValue, float maxValue);
  14. typedef struct iron_vector2 {
  15. float x;
  16. float y;
  17. } iron_vector2_t;
  18. typedef struct iron_vector3 {
  19. float x;
  20. float y;
  21. float z;
  22. } iron_vector3_t;
  23. typedef struct iron_vector4 {
  24. float x;
  25. float y;
  26. float z;
  27. float w;
  28. } iron_vector4_t;
  29. typedef struct iron_quaternion {
  30. float x;
  31. float y;
  32. float z;
  33. float w;
  34. } iron_quaternion_t;
  35. typedef union iron_matrix3x3 {
  36. float m[3 * 3];
  37. struct {
  38. float m00;
  39. float m01;
  40. float m02;
  41. float m10;
  42. float m11;
  43. float m12;
  44. float m20;
  45. float m21;
  46. float m22;
  47. };
  48. } iron_matrix3x3_t;
  49. float iron_matrix3x3_get(iron_matrix3x3_t *matrix, int x, int y);
  50. void iron_matrix3x3_set(iron_matrix3x3_t *matrix, int x, int y, float value);
  51. void iron_matrix3x3_transpose(iron_matrix3x3_t *matrix);
  52. iron_matrix3x3_t iron_matrix3x3_identity(void);
  53. iron_matrix3x3_t iron_matrix3x3_rotation_x(float alpha);
  54. iron_matrix3x3_t iron_matrix3x3_rotation_y(float alpha);
  55. iron_matrix3x3_t iron_matrix3x3_rotation_z(float alpha);
  56. iron_matrix3x3_t iron_matrix3x3_translation(float x, float y);
  57. iron_matrix3x3_t iron_matrix3x3_multiply(iron_matrix3x3_t *a, iron_matrix3x3_t *b);
  58. iron_vector3_t iron_matrix3x3_multiply_vector(iron_matrix3x3_t *a, iron_vector3_t b);
  59. typedef union iron_matrix4x4 {
  60. float m[4 * 4];
  61. struct {
  62. float m00;
  63. float m01;
  64. float m02;
  65. float m03;
  66. float m10;
  67. float m11;
  68. float m12;
  69. float m13;
  70. float m20;
  71. float m21;
  72. float m22;
  73. float m23;
  74. float m30;
  75. float m31;
  76. float m32;
  77. float m33;
  78. };
  79. } iron_matrix4x4_t;
  80. float iron_matrix4x4_get(iron_matrix4x4_t *matrix, int x, int y);
  81. void iron_matrix4x4_set(iron_matrix4x4_t *matrix, int x, int y, float value);
  82. void iron_matrix4x4_transpose(iron_matrix4x4_t *matrix);
  83. iron_matrix4x4_t iron_matrix4x4_multiply(iron_matrix4x4_t *a, iron_matrix4x4_t *b);
  84. void iron_color_components(uint32_t color, float *red, float *green, float *blue, float *alpha);
  85. void iron_random_init(int64_t seed);
  86. int64_t iron_random_get(void);
  87. int64_t iron_random_get_max(int64_t max);
  88. int64_t iron_random_get_in(int64_t min, int64_t max);
  89. uint32_t iron_hash_djb2(unsigned char *str);