28 struct xrt_vec2 ret = {l.x * r.x, l.y * r.y};
33m_vec2_mul_scalar(struct
xrt_vec2 l, float r)
35 struct xrt_vec2 ret = {l.x * r, l.y * r};
42 struct xrt_vec2 ret = {l.x + r.x, l.y + r.y};
47m_vec2_add_scalar(struct
xrt_vec2 l, float r)
49 struct xrt_vec2 ret = {l.x + r, l.y + r};
56 struct xrt_vec2 ret = {l.x - r.x, l.y - r.y};
61m_vec2_sub_scalar(struct
xrt_vec2 l, float r)
63 struct xrt_vec2 ret = {l.x - r, l.y - r};
70 struct xrt_vec2 ret = {l.x / r.x, l.y / r.y};
75m_vec2_div_scalar(struct
xrt_vec2 l, float r)
77 struct xrt_vec2 ret = {l.x / r, l.y / r};
84 return l.x * l.x + l.y * l.y;
91 return sqrtf(m_vec2_len_sqrd(l));
95m_vec2_normalize(
struct xrt_vec2 *inout)
97 *inout = m_vec2_div_scalar(*inout, m_vec2_len(*inout));
103 return l.x * r.y - r.x * l.y;
109 return l.x * r.x + l.y * r.y;
116 return m_vec2_add(m_vec2_mul_scalar(from, 1.0f - amount), m_vec2_mul_scalar(to, amount));
120m_vec2_clamp_scalar(struct
xrt_vec2 in, float min, float max)
122 return XRT_C11_COMPOUND(
struct xrt_vec2){
123 .x =
CLAMP(in.x, min, max),
124 .y =
CLAMP(in.y, min, max),
128typedef float m_vec2_float_arr[2];
130static inline m_vec2_float_arr *
131m_vec2_ptr_to_float_arr_ptr(
struct xrt_vec2 *ptr)
133 return (m_vec2_float_arr *)ptr;
144 return m_vec2_add(a, b);
150 return m_vec2_sub(a, b);
156 return m_vec2_mul(a, b);
162 return m_vec2_div(a, b);
#define CLAMP(X, A, B)
X clamped to the range [A, B].
Definition m_api.h:78
C interface to math library.
Wrapper header for <math.h> to ensure pi-related math constants are defined.
A 2 element vector with single floats.
Definition xrt_defines.h:268
Common defines and enums for XRT.