Monado OpenXR Runtime
m_vec2.h
Go to the documentation of this file.
1 // Copyright 2019, Collabora, Ltd.
2 // SPDX-License-Identifier: BSL-1.0
3 /*!
4  * @file
5  * @brief C vec2 math library.
6  * @author Jakob Bornecrantz <jakob@collabora.com>
7  *
8  * @see xrt_vec2
9  * @ingroup aux_math
10  */
11 
12 #pragma once
13 
14 #include "xrt/xrt_defines.h"
15 
16 #include <math.h>
17 
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 
24 /*!
25  * @ingroup aux_math
26  * @{
27  */
28 
29 static inline struct xrt_vec2
30 m_vec2_mul(struct xrt_vec2 l, struct xrt_vec2 r)
31 {
32  struct xrt_vec2 ret = {l.x * r.x, l.y * r.y};
33  return ret;
34 }
35 
36 static inline struct xrt_vec2
37 m_vec2_mul_scalar(struct xrt_vec2 l, float r)
38 {
39  struct xrt_vec2 ret = {l.x * r, l.y * r};
40  return ret;
41 }
42 
43 static inline struct xrt_vec2
44 m_vec2_add(struct xrt_vec2 l, struct xrt_vec2 r)
45 {
46  struct xrt_vec2 ret = {l.x + r.x, l.y + r.y};
47  return ret;
48 }
49 
50 static inline struct xrt_vec2
51 m_vec2_sub(struct xrt_vec2 l, struct xrt_vec2 r)
52 {
53  struct xrt_vec2 ret = {l.x - r.x, l.y - r.y};
54  return ret;
55 }
56 
57 static inline struct xrt_vec2
58 m_vec2_div(struct xrt_vec2 l, struct xrt_vec2 r)
59 {
60  struct xrt_vec2 ret = {l.x / r.x, l.y / r.y};
61  return ret;
62 }
63 
64 static inline struct xrt_vec2
65 m_vec2_div_scalar(struct xrt_vec2 l, float r)
66 {
67  struct xrt_vec2 ret = {l.x / r, l.y / r};
68  return ret;
69 }
70 
71 static inline float
72 m_vec2_len_sqrd(struct xrt_vec2 l)
73 {
74  return l.x * l.x + l.y * l.y;
75 }
76 
77 
78 static inline float
79 m_vec2_len(struct xrt_vec2 l)
80 {
81  return sqrtf(m_vec2_len_sqrd(l));
82 }
83 
84 /*!
85  * @}
86  */
87 
88 
89 #ifdef __cplusplus
90 }
91 #endif
A 2 element vector with single floats.
Definition: xrt_defines.h:122
Common defines and enums for XRT.
float x
Definition: xrt_defines.h:124
float y
Definition: xrt_defines.h:125