LibJuno 1.0.4
LibJuno is a lightweight C11 library designed specifically for embedded systems.
Loading...
Searching...
No Matches
juno_vec.h
Go to the documentation of this file.
1/*
2 MIT License
3
4 Copyright (c) 2025 Robin A. Onsay
5
6 Permission is hereby granted, free of charge, to any person obtaining
7 a copy of this software and associated documentation files
8 (the "Software"), to deal in the Software without restriction,
9 including without limitation the rights to use, copy, modify, merge,
10 publish, distribute, sublicense, and/or sell copies of the Software,
11 and to permit persons to whom the Software is furnished to do so,
12 subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be
15 included in all copies or substantial portions of the Software.
16*/
17
29#ifndef JUNO_VEC_H
30#define JUNO_VEC_H
31
33#include <stdint.h>
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
45#define Juno_Pow2(d) (d*d)
52#define Juno_Pow3(d) (d*d*d)
59#define Juno_Pow4(d) (d*d*d*d)
60
67// @{"req": ["REQ-MATH-005"]}
69{
70 tVec0.arr[0] += tVec1.arr[0];
71 tVec0.arr[1] += tVec1.arr[1];
72 return tVec0;
73}
74
75
82// @{"req": ["REQ-MATH-006"]}
84{
85 tVec0.arr[0] -= tVec1.arr[0];
86 tVec0.arr[1] -= tVec1.arr[1];
87 return tVec0;
88}
89
96// @{"req": ["REQ-MATH-007"]}
97static inline JUNO_VEC2_F64_T Juno_Vec2_F64_Mult(JUNO_VEC2_F64_T tVec0, double dScalar)
98{
99 tVec0.arr[0] *= dScalar;
100 tVec0.arr[1] *= dScalar;
101 return tVec0;
102}
103
108// @{"req": ["REQ-MATH-008"]}
109static inline double Juno_Vec2_F64_Dot(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
110{
111 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1];
112}
113
119// @{"req": ["REQ-MATH-009"]}
120static inline double Juno_Vec2_F64_Cross(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
121{
122 return tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0];
123}
124
129// @{"req": ["REQ-MATH-011"]}
130static inline double Juno_Vec2_F64_L2Norm2(JUNO_VEC2_F64_T tVec0)
131{
132
133 return Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]);
134}
135
139// @{"req": ["REQ-MATH-005"]}
141{
142 tVec0.arr[0] += tVec1.arr[0];
143 tVec0.arr[1] += tVec1.arr[1];
144 return tVec0;
145}
146
147
151// @{"req": ["REQ-MATH-006"]}
153{
154 tVec0.arr[0] -= tVec1.arr[0];
155 tVec0.arr[1] -= tVec1.arr[1];
156 return tVec0;
157}
158
162// @{"req": ["REQ-MATH-007"]}
163static inline JUNO_VEC2_F32_T Juno_Vec2_F32_Mult(JUNO_VEC2_F32_T tVec0, float dScalar)
164{
165 tVec0.arr[0] *= dScalar;
166 tVec0.arr[1] *= dScalar;
167 return tVec0;
168}
169
173// @{"req": ["REQ-MATH-008"]}
174static inline float Juno_Vec2_F32_Dot(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
175{
176 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1];
177}
178
182// @{"req": ["REQ-MATH-009"]}
183static inline float Juno_Vec2_F32_Cross(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
184{
185 return tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0];
186}
187
191// @{"req": ["REQ-MATH-011"]}
192static inline float Juno_Vec2_F32_L2Norm2(JUNO_VEC2_F32_T tVec0)
193{
194
195 return Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]);
196}
197
201// @{"req": ["REQ-MATH-005"]}
203{
204 tVec0.arr[0] += tVec1.arr[0];
205 tVec0.arr[1] += tVec1.arr[1];
206 return tVec0;
207}
208
209
213// @{"req": ["REQ-MATH-006"]}
215{
216 tVec0.arr[0] -= tVec1.arr[0];
217 tVec0.arr[1] -= tVec1.arr[1];
218 return tVec0;
219}
220
224// @{"req": ["REQ-MATH-007"]}
225static inline JUNO_VEC2_I32_T Juno_Vec2_I32_Mult(JUNO_VEC2_I32_T tVec0, int32_t dScalar)
226{
227 tVec0.arr[0] *= dScalar;
228 tVec0.arr[1] *= dScalar;
229 return tVec0;
230}
231
235// @{"req": ["REQ-MATH-008"]}
236static inline int32_t Juno_Vec2_I32_Dot(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
237{
238 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1];
239}
240
244// @{"req": ["REQ-MATH-009"]}
245static inline int32_t Juno_Vec2_I32_Cross(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
246{
247 return tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0];
248}
249
254// @{"req": ["REQ-MATH-011"]}
255static inline float Juno_Vec2_I32_L2Norm2(JUNO_VEC2_I32_T tVec0)
256{
257
258 return Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]);
259}
260
264// @{"req": ["REQ-MATH-005"]}
266{
267 tVec0.arr[0] += tVec1.arr[0];
268 tVec0.arr[1] += tVec1.arr[1];
269 tVec0.arr[2] += tVec1.arr[2];
270 return tVec0;
271}
272
273
277// @{"req": ["REQ-MATH-006"]}
279{
280 tVec0.arr[0] -= tVec1.arr[0];
281 tVec0.arr[1] -= tVec1.arr[1];
282 tVec0.arr[2] -= tVec1.arr[2];
283 return tVec0;
284}
285
289// @{"req": ["REQ-MATH-007"]}
290static inline JUNO_VEC3_F64_T Juno_Vec3_F64_Mult(JUNO_VEC3_F64_T tVec0, double dScalar)
291{
292 tVec0.arr[0] *= dScalar;
293 tVec0.arr[1] *= dScalar;
294 tVec0.arr[2] *= dScalar;
295 return tVec0;
296}
297
301// @{"req": ["REQ-MATH-008"]}
302static inline double Juno_Vec3_F64_Dot(JUNO_VEC3_F64_T tVec0, JUNO_VEC3_F64_T tVec1)
303{
304 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1] + tVec0.arr[2] * tVec1.arr[2];
305}
306
311// @{"req": ["REQ-MATH-010"]}
313{
314 JUNO_VEC3_F64_T tRes = {{
315 tVec0.arr[1] * tVec1.arr[2] - tVec0.arr[2] * tVec1.arr[1],
316 tVec0.arr[2] * tVec1.arr[0] - tVec0.arr[0] * tVec1.arr[2],
317 tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0]
318 }};
319 return tRes;
320}
321
325// @{"req": ["REQ-MATH-011"]}
326static inline double Juno_Vec3_F64_L2Norm2(JUNO_VEC3_F64_T tVec0)
327{
328
329 return Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]) + Juno_Pow2(tVec0.arr[2]);
330}
331
335// @{"req": ["REQ-MATH-005"]}
337{
338 tVec0.arr[0] += tVec1.arr[0];
339 tVec0.arr[1] += tVec1.arr[1];
340 tVec0.arr[2] += tVec1.arr[2];
341 return tVec0;
342}
343
344
348// @{"req": ["REQ-MATH-006"]}
350{
351 tVec0.arr[0] -= tVec1.arr[0];
352 tVec0.arr[1] -= tVec1.arr[1];
353 tVec0.arr[2] -= tVec1.arr[2];
354 return tVec0;
355}
356
360// @{"req": ["REQ-MATH-007"]}
361static inline JUNO_VEC3_F32_T Juno_Vec3_F32_Mult(JUNO_VEC3_F32_T tVec0, float dScalar)
362{
363 tVec0.arr[0] *= dScalar;
364 tVec0.arr[1] *= dScalar;
365 tVec0.arr[2] *= dScalar;
366 return tVec0;
367}
368
372// @{"req": ["REQ-MATH-008"]}
373static inline float Juno_Vec3_F32_Dot(JUNO_VEC3_F32_T tVec0, JUNO_VEC3_F32_T tVec1)
374{
375 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1] + tVec0.arr[2] * tVec1.arr[2];
376}
377
381// @{"req": ["REQ-MATH-010"]}
383{
384 JUNO_VEC3_F32_T tRes = {{
385 tVec0.arr[1] * tVec1.arr[2] - tVec0.arr[2] * tVec1.arr[1],
386 tVec0.arr[2] * tVec1.arr[0] - tVec0.arr[0] * tVec1.arr[2],
387 tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0]
388 }};
389 return tRes;
390}
391
395// @{"req": ["REQ-MATH-011"]}
396static inline float Juno_Vec3_F32_L2Norm2(JUNO_VEC3_F32_T tVec0)
397{
398
399 return (Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]) + Juno_Pow2(tVec0.arr[2]));
400}
401
405// @{"req": ["REQ-MATH-005"]}
407{
408 tVec0.arr[0] += tVec1.arr[0];
409 tVec0.arr[1] += tVec1.arr[1];
410 tVec0.arr[2] += tVec1.arr[2];
411 return tVec0;
412}
413
414
418// @{"req": ["REQ-MATH-006"]}
420{
421 tVec0.arr[0] -= tVec1.arr[0];
422 tVec0.arr[1] -= tVec1.arr[1];
423 tVec0.arr[2] -= tVec1.arr[2];
424 return tVec0;
425}
426
430// @{"req": ["REQ-MATH-007"]}
431static inline JUNO_VEC3_I32_T Juno_Vec3_I32_Mult(JUNO_VEC3_I32_T tVec0, int32_t dScalar)
432{
433 tVec0.arr[0] *= dScalar;
434 tVec0.arr[1] *= dScalar;
435 tVec0.arr[2] *= dScalar;
436 return tVec0;
437}
438
442// @{"req": ["REQ-MATH-008"]}
443static inline int32_t Juno_Vec3_I32_Dot(JUNO_VEC3_I32_T tVec0, JUNO_VEC3_I32_T tVec1)
444{
445 return tVec0.arr[0] * tVec1.arr[0] + tVec0.arr[1] * tVec1.arr[1] + tVec0.arr[2] * tVec1.arr[2];
446}
447
451// @{"req": ["REQ-MATH-010"]}
453{
454 JUNO_VEC3_I32_T tRes = {{
455 tVec0.arr[1] * tVec1.arr[2] - tVec0.arr[2] * tVec1.arr[1],
456 tVec0.arr[2] * tVec1.arr[0] - tVec0.arr[0] * tVec1.arr[2],
457 tVec0.arr[0] * tVec1.arr[1] - tVec0.arr[1] * tVec1.arr[0]
458 }};
459 return tRes;
460}
461
465// @{"req": ["REQ-MATH-011"]}
466static inline float Juno_Vec3_I32_L2Norm2(JUNO_VEC3_I32_T tVec0)
467{
468
469 return (Juno_Pow2(tVec0.arr[0]) + Juno_Pow2(tVec0.arr[1]) + Juno_Pow2(tVec0.arr[2]));
470}
471
476// @{"req": ["REQ-MATH-012"]}
478{
479 q0.arr[0] += q1.arr[0];
480 q0.arr[1] += q1.arr[1];
481 q0.arr[2] += q1.arr[2];
482 q0.arr[3] += q1.arr[3];
483 return q0;
484}
485
486
490// @{"req": ["REQ-MATH-013"]}
492{
493 q0.arr[0] -= q1.arr[0];
494 q0.arr[1] -= q1.arr[1];
495 q0.arr[2] -= q1.arr[2];
496 q0.arr[3] -= q1.arr[3];
497 return q0;
498}
499
503// @{"req": ["REQ-MATH-014"]}
505{
506 q0.arr[0] *= dScalar;
507 q0.arr[1] *= dScalar;
508 q0.arr[2] *= dScalar;
509 q0.arr[3] *= dScalar;
510 return q0;
511}
512
523// @{"req": ["REQ-MATH-015"]}
525{
526 JUNO_RQUAT_F64_T tRes = {{
527 q0.tQuat.s * q1.tQuat.s - q0.tQuat.i * q1.tQuat.i - q0.tQuat.j * q1.tQuat.j - q0.tQuat.k * q1.tQuat.k,
528 q0.tQuat.s * q1.tQuat.i + q0.tQuat.i * q1.tQuat.s + q0.tQuat.j * q1.tQuat.k - q0.tQuat.k * q1.tQuat.j,
529 q0.tQuat.s * q1.tQuat.j - q0.tQuat.i * q1.tQuat.k + q0.tQuat.j * q1.tQuat.s + q0.tQuat.k * q1.tQuat.i,
530 q0.tQuat.s * q1.tQuat.k + q0.tQuat.i * q1.tQuat.j - q0.tQuat.j * q1.tQuat.i + q0.tQuat.k * q1.tQuat.s
531 }};
532 return tRes;
533}
534
539// @{"req": ["REQ-MATH-016"]}
541{
542 q0.tQuat.i = -q0.tQuat.i;
543 q0.tQuat.j = -q0.tQuat.j;
544 q0.tQuat.k = -q0.tQuat.k;
545 return q0;
546}
547
551// @{"req": ["REQ-MATH-018"]}
553{
554 return Juno_Pow2(q0.arr[0]) + Juno_Pow2(q0.arr[1]) + Juno_Pow2(q0.arr[2]) + Juno_Pow2(q0.arr[3]);
555}
556
557
562// @{"req": ["REQ-MATH-017"]}
567
568#ifdef __cplusplus
569}
570#endif
571#endif
static JUNO_VEC2_F64_T Juno_Vec2_F64_Sub(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
Subtract two 2D vectors (double).
Definition juno_vec.h:83
static JUNO_VEC3_I32_T Juno_Vec3_I32_Cross(JUNO_VEC3_I32_T tVec0, JUNO_VEC3_I32_T tVec1)
3D cross product (int32).
Definition juno_vec.h:452
static float Juno_Vec2_F32_L2Norm2(JUNO_VEC2_F32_T tVec0)
Squared L2 norm of a 2D vector (float).
Definition juno_vec.h:192
static double Juno_Vec3_F64_Dot(JUNO_VEC3_F64_T tVec0, JUNO_VEC3_F64_T tVec1)
Dot product of two 3D vectors (double).
Definition juno_vec.h:302
static JUNO_VEC2_F32_T Juno_Vec2_F32_Mult(JUNO_VEC2_F32_T tVec0, float dScalar)
Scale a 2D vector by a scalar (float).
Definition juno_vec.h:163
static JUNO_VEC2_F64_T Juno_Vec2_F64_Mult(JUNO_VEC2_F64_T tVec0, double dScalar)
Scale a 2D vector by a scalar (double).
Definition juno_vec.h:97
static JUNO_VEC3_I32_T Juno_Vec3_I32_Add(JUNO_VEC3_I32_T tVec0, JUNO_VEC3_I32_T tVec1)
Add two 3D vectors (int32).
Definition juno_vec.h:406
static JUNO_RQUAT_F64_T Juno_RQuat_F64_Recip(JUNO_RQUAT_F64_T q0)
Multiplicative inverse (reciprocal) of a quaternion (double).
Definition juno_vec.h:563
static float Juno_Vec2_F32_Dot(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
Dot product of two 2D vectors (float).
Definition juno_vec.h:174
static double Juno_Vec2_F64_Cross(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
2D cross product (double).
Definition juno_vec.h:120
static JUNO_RQUAT_F64_T Juno_RQuat_F64_Add(JUNO_RQUAT_F64_T q0, JUNO_RQUAT_F64_T q1)
Add two real quaternions (double).
Definition juno_vec.h:477
static float Juno_Vec3_F32_L2Norm2(JUNO_VEC3_F32_T tVec0)
Squared L2 norm of a 3D vector (float).
Definition juno_vec.h:396
static double Juno_RQuat_F64_L2Norm2(JUNO_RQUAT_F64_T q0)
Squared L2 norm of a quaternion (double).
Definition juno_vec.h:552
static double Juno_Vec2_F64_L2Norm2(JUNO_VEC2_F64_T tVec0)
Squared L2 norm of a 2D vector (double).
Definition juno_vec.h:130
static float Juno_Vec2_I32_L2Norm2(JUNO_VEC2_I32_T tVec0)
Squared L2 norm of a 2D vector (int32 inputs; float return).
Definition juno_vec.h:255
static float Juno_Vec3_I32_L2Norm2(JUNO_VEC3_I32_T tVec0)
Squared L2 norm of a 3D vector (int32 inputs; float return).
Definition juno_vec.h:466
static JUNO_VEC2_I32_T Juno_Vec2_I32_Sub(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
Subtract two 2D vectors (int32).
Definition juno_vec.h:214
static JUNO_VEC3_F32_T Juno_Vec3_F32_Add(JUNO_VEC3_F32_T tVec0, JUNO_VEC3_F32_T tVec1)
Add two 3D vectors (float).
Definition juno_vec.h:336
static JUNO_RQUAT_F64_T Juno_RQuat_F64_Sub(JUNO_RQUAT_F64_T q0, JUNO_RQUAT_F64_T q1)
Subtract two real quaternions (double).
Definition juno_vec.h:491
static JUNO_RQUAT_F64_T Juno_RQuat_F64_Conj(JUNO_RQUAT_F64_T q0)
Conjugate of a right-handed real quaternion (double).
Definition juno_vec.h:540
static double Juno_Vec2_F64_Dot(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
Dot product of two 2D vectors (double).
Definition juno_vec.h:109
static JUNO_VEC3_F32_T Juno_Vec3_F32_Mult(JUNO_VEC3_F32_T tVec0, float dScalar)
Scale a 3D vector by a scalar (float).
Definition juno_vec.h:361
static JUNO_VEC2_F64_T Juno_Vec2_F64_Add(JUNO_VEC2_F64_T tVec0, JUNO_VEC2_F64_T tVec1)
Add two 2D vectors (double).
Definition juno_vec.h:68
static JUNO_VEC3_F64_T Juno_Vec3_F64_Sub(JUNO_VEC3_F64_T tVec0, JUNO_VEC3_F64_T tVec1)
Subtract two 3D vectors (double).
Definition juno_vec.h:278
static JUNO_VEC2_I32_T Juno_Vec2_I32_Mult(JUNO_VEC2_I32_T tVec0, int32_t dScalar)
Scale a 2D vector by a scalar (int32).
Definition juno_vec.h:225
static JUNO_VEC2_F32_T Juno_Vec2_F32_Add(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
Add two 2D vectors (float).
Definition juno_vec.h:140
static JUNO_RQUAT_F64_T Juno_RQuat_F64_Mult(JUNO_RQUAT_F64_T q0, double dScalar)
Scale a real quaternion by a scalar (double).
Definition juno_vec.h:504
static JUNO_RQUAT_F64_T Juno_RQuat_F64_HamProd(JUNO_RQUAT_F64_T q0, JUNO_RQUAT_F64_T q1)
Hamilton product of two right-handed real quaternions (double).
Definition juno_vec.h:524
static JUNO_VEC2_F32_T Juno_Vec2_F32_Sub(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
Subtract two 2D vectors (float).
Definition juno_vec.h:152
static float Juno_Vec2_F32_Cross(JUNO_VEC2_F32_T tVec0, JUNO_VEC2_F32_T tVec1)
2D cross product (float); returns pseudoscalar z-component.
Definition juno_vec.h:183
static JUNO_VEC3_I32_T Juno_Vec3_I32_Mult(JUNO_VEC3_I32_T tVec0, int32_t dScalar)
Scale a 3D vector by a scalar (int32).
Definition juno_vec.h:431
static JUNO_VEC3_F32_T Juno_Vec3_F32_Cross(JUNO_VEC3_F32_T tVec0, JUNO_VEC3_F32_T tVec1)
3D cross product (float).
Definition juno_vec.h:382
static int32_t Juno_Vec3_I32_Dot(JUNO_VEC3_I32_T tVec0, JUNO_VEC3_I32_T tVec1)
Dot product of two 3D vectors (int32).
Definition juno_vec.h:443
#define Juno_Pow2(d)
Square of a value.
Definition juno_vec.h:45
static JUNO_VEC2_I32_T Juno_Vec2_I32_Add(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
Add two 2D vectors (int32).
Definition juno_vec.h:202
static JUNO_VEC3_F32_T Juno_Vec3_F32_Sub(JUNO_VEC3_F32_T tVec0, JUNO_VEC3_F32_T tVec1)
Subtract two 3D vectors (float).
Definition juno_vec.h:349
static JUNO_VEC3_I32_T Juno_Vec3_I32_Sub(JUNO_VEC3_I32_T tVec0, JUNO_VEC3_I32_T tVec1)
Subtract two 3D vectors (int32).
Definition juno_vec.h:419
static JUNO_VEC3_F64_T Juno_Vec3_F64_Mult(JUNO_VEC3_F64_T tVec0, double dScalar)
Scale a 3D vector by a scalar (double).
Definition juno_vec.h:290
static JUNO_VEC3_F64_T Juno_Vec3_F64_Cross(JUNO_VEC3_F64_T tVec0, JUNO_VEC3_F64_T tVec1)
3D cross product (double).
Definition juno_vec.h:312
static int32_t Juno_Vec2_I32_Dot(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
Dot product of two 2D vectors (int32).
Definition juno_vec.h:236
static JUNO_VEC3_F64_T Juno_Vec3_F64_Add(JUNO_VEC3_F64_T tVec0, JUNO_VEC3_F64_T tVec1)
Add two 3D vectors (double).
Definition juno_vec.h:265
static float Juno_Vec3_F32_Dot(JUNO_VEC3_F32_T tVec0, JUNO_VEC3_F32_T tVec1)
Dot product of two 3D vectors (float).
Definition juno_vec.h:373
static int32_t Juno_Vec2_I32_Cross(JUNO_VEC2_I32_T tVec0, JUNO_VEC2_I32_T tVec1)
2D cross product (int32); returns pseudoscalar z-component.
Definition juno_vec.h:245
static double Juno_Vec3_F64_L2Norm2(JUNO_VEC3_F64_T tVec0)
Squared L2 norm of a 3D vector (double).
Definition juno_vec.h:326
Vector, matrix, and quaternion types and common result aliases.
Right-handed quaternion (double precision).
Definition juno_vec_types.h:676
double arr[4]
Definition juno_vec_types.h:683
double k
Definition juno_vec_types.h:681
struct JUNO_RQUAT_F64_TAG::@0 tQuat
double j
Definition juno_vec_types.h:680
double s
Definition juno_vec_types.h:678
double i
Definition juno_vec_types.h:679
2D vector union supporting Cartesian, polar, and array access (float32 precision).
Definition juno_vec_types.h:149
float arr[2]
Definition juno_vec_types.h:152
2D vector union supporting Cartesian, polar, and array access (double precision).
Definition juno_vec_types.h:92
double arr[2]
Definition juno_vec_types.h:95
2D vector union supporting Cartesian, polar, and array access (32-bit integer).
Definition juno_vec_types.h:206
int32_t arr[2]
Definition juno_vec_types.h:209
3D vector union supporting Cartesian, spherical, and array access (float32 precision).
Definition juno_vec_types.h:324
float arr[3]
Definition juno_vec_types.h:327
3D vector union supporting Cartesian, spherical, and array access (double precision).
Definition juno_vec_types.h:265
double arr[3]
Definition juno_vec_types.h:268
3D vector union supporting Cartesian, spherical, and array access (32-bit integer).
Definition juno_vec_types.h:383
int32_t arr[3]
Definition juno_vec_types.h:386