reference-libobs-graphics-quat.rst 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. Quaternion
  2. ==========
  3. .. code:: cpp
  4. #include <graphics/quat.h>
  5. .. struct:: quat
  6. Two component quaternion structure.
  7. .. member:: float quat.x
  8. X component
  9. .. member:: float quat.y
  10. Y component
  11. .. member:: float quat.z
  12. Z component
  13. .. member:: float quat.w
  14. W component
  15. .. member:: float quat.ptr[4]
  16. Unioned array of all components
  17. ---------------------
  18. .. function:: void quat_identity(struct quat *dst)
  19. Sets a quaternion to {0.0f, 0.0f, 0.0f, 1.0f}.
  20. :param dst: Destination
  21. ---------------------
  22. .. function:: void quat_set(struct quat *dst, float x, float y)
  23. Sets the individual components of a quaternion.
  24. :param dst: Destination
  25. :param x: X component
  26. :param y: Y component
  27. :param y: Z component
  28. :param w: W component
  29. ---------------------
  30. .. function:: void quat_copy(struct quat *dst, const struct quat *v)
  31. Copies a quaternion
  32. :param dst: Destination
  33. :param v: Quaternion to copy
  34. ---------------------
  35. .. function:: void quat_add(struct quat *dst, const struct quat *v1, const struct quat *v2)
  36. Adds two quaternions
  37. :param dst: Destination
  38. :param v1: Quaternion 1
  39. :param v2: Quaternion 2
  40. ---------------------
  41. .. function:: void quat_sub(struct quat *dst, const struct quat *v1, const struct quat *v2)
  42. Subtracts two quaternions
  43. :param dst: Destination
  44. :param v1: Quaternion being subtracted from
  45. :param v2: Quaternion being subtracted
  46. ---------------------
  47. .. function:: void quat_mul(struct quat *dst, const struct quat *v1, const struct quat *v2)
  48. Multiplies two quaternions
  49. :param dst: Destination
  50. :param v1: Quaternion 1
  51. :param v2: Quaternion 2
  52. ---------------------
  53. .. function:: void quat_addf(struct quat *dst, const struct quat *v, float f)
  54. Adds a floating point to all components
  55. :param dst: Destination
  56. :param dst: Quaternion
  57. :param f: Floating point
  58. ---------------------
  59. .. function:: void quat_subf(struct quat *dst, const struct quat *v, float f)
  60. Subtracts a floating point from all components
  61. :param dst: Destination
  62. :param v: Quaternion being subtracted from
  63. :param f: Floating point being subtracted
  64. ---------------------
  65. .. function:: void quat_mulf(struct quat *dst, const struct quat *v, float f)
  66. Multiplies a floating point with all components
  67. :param dst: Destination
  68. :param dst: Quaternion
  69. :param f: Floating point
  70. ---------------------
  71. .. function:: void quat_inv(struct quat *dst, const struct quat *v)
  72. Inverts a quaternion
  73. :param dst: Destination
  74. :param v: Quaternion to invert
  75. ---------------------
  76. .. function:: float quat_dot(const struct quat *v1, const struct quat *v2)
  77. Performs a dot product between two quaternions
  78. :param v1: Quaternion 1
  79. :param v2: Quaternion 2
  80. :return: Result of the dot product
  81. ---------------------
  82. .. function:: float quat_len(const struct quat *v)
  83. Gets the length of a quaternion
  84. :param v: Quaternion
  85. :return: The quaternion's length
  86. ---------------------
  87. .. function:: float quat_dist(const struct quat *v1, const struct quat *v2)
  88. Gets the distance between two quaternions
  89. :param v1: Quaternion 1
  90. :param v2: Quaternion 2
  91. :return: Distance between the two quaternions
  92. ---------------------
  93. .. function:: void quat_from_axisang(struct quat *dst, const struct axisang *aa)
  94. Converts an axis angle to a quaternion
  95. :param dst: Destination quaternion
  96. :param aa: Axis angle
  97. ---------------------
  98. .. function:: void quat_from_matrix4(struct quat *dst, const struct matrix4 *m)
  99. Converts the rotational properties of a matrix to a quaternion
  100. :param dst: Destination quaternion
  101. :param m: Matrix to convert
  102. ---------------------
  103. .. function:: void quat_get_dir(struct vec3 *dst, const struct quat *q)
  104. Converts a quaternion to a directional vector
  105. :param dst: Destination 3-component vector
  106. :param q: Quaternion
  107. ---------------------
  108. .. function:: void quat_set_look_dir(struct quat *dst, const struct vec3 *dir)
  109. Creates a quaternion from a specific "look" direction
  110. :param dst: Destination quaternion
  111. :param dir: 3-component vector representing the look direction
  112. ---------------------
  113. .. function:: void quat_interpolate(struct quat *dst, const struct quat *q1, const struct quat *q2, float t)
  114. Linearly interpolates two quaternions
  115. :param dst: Destination quaternion
  116. :param q1: Quaternion 1
  117. :param q2: Quaternion 2
  118. :param t: Time value (0.0f..1.0f)
  119. ---------------------
  120. .. function:: void quat_get_tangent(struct quat *dst, const struct quat *prev, const struct quat *q, const struct quat *next)
  121. Gets a tangent value for the center of three rotational values
  122. :param dst: Destination quaternion
  123. :param prev: Previous rotation
  124. :param q: Rotation to get tangent for
  125. :param next: Next rotation
  126. ---------------------
  127. .. function:: void quat_interpolate_cubic(struct quat *dst, const struct quat *q1, const struct quat *q2, const struct quat *m1, const struct quat *m2, float t)
  128. Performs cubic interpolation between two quaternions
  129. :param dst: Destination quaternion
  130. :param q1: Quaternion 1
  131. :param q2: Quaternion 2
  132. :param m1: Tangent 1
  133. :param m2: Tangent 2
  134. :param t: Time value (0.0f..1.0f)