LibJuno 0.42.0
LibJuno is a lightweight C99 library designed specifically for embedded systems.
Loading...
Searching...
No Matches
juno_vec_types.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
18#ifndef JUNO_VEC_TYPES_H
19#define JUNO_VEC_TYPES_H
20
21#include "juno/module.h"
22#include <stddef.h>
23#ifdef __cplusplus
24extern "C" {
25#endif
26#include <stdint.h>
27
28#ifndef JUNO_INT_TYPE
29#define JUNO_INT_TYPE int64_t
30#endif
31
32#ifndef JUNO_FLOAT_TYPE
33#define JUNO_FLOAT_TYPE double
34#endif
42{
43 double r;
44 double phi;
46
54{
55 double x;
56 double y;
58
73
78JUNO_MODULE_RESULT(JUNO_VEC2_F64_SPH_RESULT_T, JUNO_VEC2_F64_SPH_T);
79
84JUNO_MODULE_RESULT(JUNO_VEC2_F64_CART_RESULT_T, JUNO_VEC2_F64_CART_T);
85
90JUNO_MODULE_RESULT(JUNO_VEC2_F64_RESULT_T, JUNO_VEC2_F64_T);
91
103
111{
112 float x;
113 float y;
115
130
135JUNO_MODULE_RESULT(JUNO_VEC2_F32_SPH_RESULT_T, JUNO_VEC2_F32_SPH_T);
136
141JUNO_MODULE_RESULT(JUNO_VEC2_F32_CART_RESULT_T, JUNO_VEC2_F32_CART_T);
142
147JUNO_MODULE_RESULT(JUNO_VEC2_F32_RESULT_T, JUNO_VEC2_F32_T);
148
156{
157 int32_t r;
158 int32_t phi;
160
168{
169 int32_t x;
170 int32_t y;
172
187
192JUNO_MODULE_RESULT(JUNO_VEC2_I32_SPH_RESULT_T, JUNO_VEC2_I32_SPH_T);
193
198JUNO_MODULE_RESULT(JUNO_VEC2_I32_CART_RESULT_T, JUNO_VEC2_I32_CART_T);
199
204JUNO_MODULE_RESULT(JUNO_VEC2_I32_RESULT_T, JUNO_VEC2_I32_T);
205
213{
214 double r;
215 double phi;
216 double theta;
218
226{
227 double x;
228 double y;
229 double z;
231
246
251JUNO_MODULE_RESULT(JUNO_VEC3_F64_SPH_RESULT_T, JUNO_VEC3_F64_SPH_T);
252
257JUNO_MODULE_RESULT(JUNO_VEC3_F64_CART_RESULT_T, JUNO_VEC3_F64_CART_T);
258
263JUNO_MODULE_RESULT(JUNO_VEC3_F64_RESULT_T, JUNO_VEC3_F64_T);
264
272{
273 float r;
274 float phi;
275 float theta;
277
285{
286 float x;
287 float y;
288 float z;
290
305
310JUNO_MODULE_RESULT(JUNO_VEC3_F32_SPH_RESULT_T, JUNO_VEC3_F32_SPH_T);
311
316JUNO_MODULE_RESULT(JUNO_VEC3_F32_CART_RESULT_T, JUNO_VEC3_F32_CART_T);
317
322JUNO_MODULE_RESULT(JUNO_VEC3_F32_RESULT_T, JUNO_VEC3_F32_T);
323
331{
332 int32_t r;
333 int32_t phi;
334 int32_t theta;
336
344{
345 int32_t x;
346 int32_t y;
347 int32_t z;
349
364
369JUNO_MODULE_RESULT(JUNO_VEC3_I32_SPH_RESULT_T, JUNO_VEC3_I32_SPH_T);
370
375JUNO_MODULE_RESULT(JUNO_VEC3_I32_CART_RESULT_T, JUNO_VEC3_I32_CART_T);
376
381JUNO_MODULE_RESULT(JUNO_VEC3_I32_RESULT_T, JUNO_VEC3_I32_T);
382
390{
391 double r;
392 double phi;
393 double theta;
394 double rho;
396
404{
405 double x;
406 double y;
407 double z;
408 double w;
410
425
431
439{
440 float r;
441 float phi;
442 float theta;
443 float rho;
445
453{
454 float x;
455 float y;
456 float z;
457 float w;
459
474
479JUNO_MODULE_RESULT(JUNO_VEC4_F32_SPH_RESULT_T, JUNO_VEC4_F32_SPH_T);
480
485JUNO_MODULE_RESULT(JUNO_VEC4_F32_CART_RESULT_T, JUNO_VEC4_F32_CART_T);
486
491JUNO_MODULE_RESULT(JUNO_VEC4_F32_RESULT_T, JUNO_VEC4_F32_T);
492
500{
501 int32_t r;
502 int32_t phi;
503 int32_t theta;
504 int32_t rho;
506
514{
515 int32_t x;
516 int32_t y;
517 int32_t z;
518 int32_t w;
520
535
540JUNO_MODULE_RESULT(JUNO_VEC4_I32_SPH_RESULT_T, JUNO_VEC4_I32_SPH_T);
541
546JUNO_MODULE_RESULT(JUNO_VEC4_I32_CART_RESULT_T, JUNO_VEC4_I32_CART_T);
547
552JUNO_MODULE_RESULT(JUNO_VEC4_I32_RESULT_T, JUNO_VEC4_I32_T);
553
558typedef struct JUNO_M3X3_F64_TAG
559{
560 double mat[3][3];
562
567JUNO_MODULE_RESULT(JUNO_M3X3_F64_RESULT_T, JUNO_M3X3_F64_T);
568
573typedef struct JUNO_M3X3_F32_TAG
574{
575 float mat[3][3];
577
582JUNO_MODULE_RESULT(JUNO_M3X3_F32_RESULT_T, JUNO_M3X3_F32_T);
583
588typedef struct JUNO_M4X4_F64_TAG
589{
590 double mat[4][4];
592
598
603typedef struct JUNO_M4X4_F32_TAG
604{
605 float mat[4][4];
607
612JUNO_MODULE_RESULT(JUNO_M4X4_F32_RESULT_T, JUNO_M4X4_F32_T);
613
618typedef struct JUNO_M3X3_I32_TAG
619{
620 int32_t mat[3][3];
622
628
633typedef struct JUNO_M4X4_I32_TAG
634{
635 int32_t mat[4][4];
637
643
651{
652 struct {
653 double s;
654 double i;
655 double j;
656 double k;
658 double arr[4];
660
668{
669 struct {
670 float s;
671 float i;
672 float j;
673 float k;
675 float arr[4];
677
683
691{
692 struct {
693 int32_t s;
694 int32_t i;
695 int32_t j;
696 int32_t k;
698 int32_t arr[4];
700
706
707#ifdef __cplusplus
708}
709#endif
710#endif
struct JUNO_VEC4_I32_CART_TAG JUNO_VEC4_I32_CART_T
struct JUNO_VEC2_F64_CART_TAG JUNO_VEC2_F64_CART_T
struct JUNO_VEC2_F32_CART_TAG JUNO_VEC2_F32_CART_T
struct JUNO_VEC2_F32_SPH_TAG JUNO_VEC2_F32_SPH_T
union JUNO_VEC4_I32_TAG JUNO_VEC4_I32_T
union JUNO_RQUAT_F32_TAG JUNO_RQUAT_F32_T
struct JUNO_M4X4_I32_TAG JUNO_M4X4_I32_T
struct JUNO_M3X3_I32_TAG JUNO_M3X3_I32_T
struct JUNO_M3X3_F32_TAG JUNO_M3X3_F32_T
struct JUNO_VEC2_I32_SPH_TAG JUNO_VEC2_I32_SPH_T
struct JUNO_VEC4_F32_CART_TAG JUNO_VEC4_F32_CART_T
struct JUNO_VEC4_F64_CART_TAG JUNO_VEC4_F64_CART_T
struct JUNO_VEC3_I32_SPH_TAG JUNO_VEC3_I32_SPH_T
struct JUNO_VEC4_F64_SPH_TAG JUNO_VEC4_F64_SPH_T
struct JUNO_M4X4_F32_TAG JUNO_M4X4_F32_T
struct JUNO_VEC4_I32_SPH_TAG JUNO_VEC4_I32_SPH_T
struct JUNO_M3X3_F64_TAG JUNO_M3X3_F64_T
union JUNO_VEC3_F64_TAG JUNO_VEC3_F64_T
union JUNO_VEC3_I32_TAG JUNO_VEC3_I32_T
struct JUNO_VEC2_I32_CART_TAG JUNO_VEC2_I32_CART_T
struct JUNO_VEC3_F32_CART_TAG JUNO_VEC3_F32_CART_T
union JUNO_VEC4_F32_TAG JUNO_VEC4_F32_T
union JUNO_VEC3_F32_TAG JUNO_VEC3_F32_T
union JUNO_RQUAT_I32_TAG JUNO_RQUAT_I32_T
struct JUNO_VEC4_F32_SPH_TAG JUNO_VEC4_F32_SPH_T
union JUNO_VEC2_I32_TAG JUNO_VEC2_I32_T
struct JUNO_VEC3_F64_SPH_TAG JUNO_VEC3_F64_SPH_T
struct JUNO_VEC2_F64_SPH_TAG JUNO_VEC2_F64_SPH_T
struct JUNO_M4X4_F64_TAG JUNO_M4X4_F64_T
struct JUNO_VEC3_F64_CART_TAG JUNO_VEC3_F64_CART_T
struct JUNO_VEC3_I32_CART_TAG JUNO_VEC3_I32_CART_T
union JUNO_VEC4_F64_TAG JUNO_VEC4_F64_T
union JUNO_VEC2_F64_TAG JUNO_VEC2_F64_T
struct JUNO_VEC3_F32_SPH_TAG JUNO_VEC3_F32_SPH_T
union JUNO_VEC2_F32_TAG JUNO_VEC2_F32_T
union JUNO_RQUAT_F64_TAG JUNO_RQUAT_F64_T
#define JUNO_MODULE_RESULT(NAME_T, OK_T)
Defines a result type combining a status and a success payload.
Definition module.h:223
Definition juno_vec_types.h:574
float mat[3][3]
Definition juno_vec_types.h:575
3×3 matrix of double-precision values.
Definition juno_vec_types.h:559
double mat[3][3]
Definition juno_vec_types.h:560
3×3 matrix of 32-bit integers.
Definition juno_vec_types.h:619
int32_t mat[3][3]
Definition juno_vec_types.h:620
Definition juno_vec_types.h:604
float mat[4][4]
Definition juno_vec_types.h:605
4×4 matrix of double-precision values.
Definition juno_vec_types.h:589
double mat[4][4]
Definition juno_vec_types.h:590
4×4 matrix of 32-bit integers.
Definition juno_vec_types.h:634
int32_t mat[4][4]
Definition juno_vec_types.h:635
Definition juno_vec_types.h:111
float y
Definition juno_vec_types.h:113
float x
Definition juno_vec_types.h:112
Definition juno_vec_types.h:99
float phi
Definition juno_vec_types.h:101
float r
Definition juno_vec_types.h:100
2D vector in Cartesian coordinates (double precision).
Definition juno_vec_types.h:54
double y
Definition juno_vec_types.h:56
double x
Definition juno_vec_types.h:55
2D vector in polar coordinates (double precision).
Definition juno_vec_types.h:42
double phi
Definition juno_vec_types.h:44
double r
Definition juno_vec_types.h:43
2D vector in Cartesian coordinates (32-bit integer).
Definition juno_vec_types.h:168
int32_t x
Definition juno_vec_types.h:169
int32_t y
Definition juno_vec_types.h:170
2D vector in polar coordinates (32-bit integer).
Definition juno_vec_types.h:156
int32_t phi
Definition juno_vec_types.h:158
int32_t r
Definition juno_vec_types.h:157
3D vector in Cartesian coordinates (float precision).
Definition juno_vec_types.h:285
float z
Definition juno_vec_types.h:288
float x
Definition juno_vec_types.h:286
float y
Definition juno_vec_types.h:287
3D vector in spherical coordinates (double precision).
Definition juno_vec_types.h:272
float r
Definition juno_vec_types.h:273
float theta
Definition juno_vec_types.h:275
float phi
Definition juno_vec_types.h:274
3D vector in Cartesian coordinates (double precision).
Definition juno_vec_types.h:226
double x
Definition juno_vec_types.h:227
double z
Definition juno_vec_types.h:229
double y
Definition juno_vec_types.h:228
3D vector in spherical coordinates (double precision).
Definition juno_vec_types.h:213
double phi
Definition juno_vec_types.h:215
double r
Definition juno_vec_types.h:214
double theta
Definition juno_vec_types.h:216
3D vector in Cartesian coordinates (32-bit integer).
Definition juno_vec_types.h:344
int32_t z
Definition juno_vec_types.h:347
int32_t y
Definition juno_vec_types.h:346
int32_t x
Definition juno_vec_types.h:345
3D vector in spherical coordinates (32-bit integer).
Definition juno_vec_types.h:331
int32_t theta
Definition juno_vec_types.h:334
int32_t phi
Definition juno_vec_types.h:333
int32_t r
Definition juno_vec_types.h:332
Definition juno_vec_types.h:453
float x
Definition juno_vec_types.h:454
float w
Definition juno_vec_types.h:457
float z
Definition juno_vec_types.h:456
float y
Definition juno_vec_types.h:455
Definition juno_vec_types.h:439
float theta
Definition juno_vec_types.h:442
float phi
Definition juno_vec_types.h:441
float rho
Definition juno_vec_types.h:443
float r
Definition juno_vec_types.h:440
4D vector in Cartesian coordinates (double precision).
Definition juno_vec_types.h:404
double x
Definition juno_vec_types.h:405
double w
Definition juno_vec_types.h:408
double y
Definition juno_vec_types.h:406
double z
Definition juno_vec_types.h:407
4D vector in hyperspherical coordinates (double precision).
Definition juno_vec_types.h:390
double r
Definition juno_vec_types.h:391
double rho
Definition juno_vec_types.h:394
double theta
Definition juno_vec_types.h:393
double phi
Definition juno_vec_types.h:392
4D vector in Cartesian coordinates (32-bit integer).
Definition juno_vec_types.h:514
int32_t w
Definition juno_vec_types.h:518
int32_t y
Definition juno_vec_types.h:516
int32_t x
Definition juno_vec_types.h:515
int32_t z
Definition juno_vec_types.h:517
4D vector in hyperspherical coordinates (32-bit integer).
Definition juno_vec_types.h:500
int32_t rho
Definition juno_vec_types.h:504
int32_t theta
Definition juno_vec_types.h:503
int32_t r
Definition juno_vec_types.h:501
int32_t phi
Definition juno_vec_types.h:502
Definition juno_vec_types.h:668
float k
Definition juno_vec_types.h:673
float s
Definition juno_vec_types.h:670
float i
Definition juno_vec_types.h:671
float j
Definition juno_vec_types.h:672
float arr[4]
Definition juno_vec_types.h:675
struct JUNO_RQUAT_F32_TAG::@1 tQuat
Right-handed quaternion (double precision).
Definition juno_vec_types.h:651
double arr[4]
Definition juno_vec_types.h:658
double k
Definition juno_vec_types.h:656
struct JUNO_RQUAT_F64_TAG::@0 tQuat
double j
Definition juno_vec_types.h:655
double s
Definition juno_vec_types.h:653
double i
Definition juno_vec_types.h:654
Right-handed quaternion (32-bit integer).
Definition juno_vec_types.h:691
int32_t arr[4]
Definition juno_vec_types.h:698
int32_t j
Definition juno_vec_types.h:695
int32_t i
Definition juno_vec_types.h:694
int32_t k
Definition juno_vec_types.h:696
struct JUNO_RQUAT_I32_TAG::@2 tQuat
int32_t s
Definition juno_vec_types.h:693
Definition juno_vec_types.h:125
JUNO_VEC2_F32_CART_T tCart
Definition juno_vec_types.h:126
JUNO_VEC2_F32_SPH_T tSph
Definition juno_vec_types.h:127
float arr[2]
Definition juno_vec_types.h:128
2D vector union supporting Cartesian, polar, and array access (double precision).
Definition juno_vec_types.h:68
JUNO_VEC2_F64_CART_T tCart
Definition juno_vec_types.h:69
JUNO_VEC2_F64_SPH_T tSph
Definition juno_vec_types.h:70
double arr[2]
Definition juno_vec_types.h:71
2D vector union supporting Cartesian, polar, and array access (32-bit integer).
Definition juno_vec_types.h:182
JUNO_VEC2_I32_CART_T tCart
Definition juno_vec_types.h:183
int32_t arr[2]
Definition juno_vec_types.h:185
JUNO_VEC2_I32_SPH_T tSph
Definition juno_vec_types.h:184
3D vector union supporting Cartesian, spherical, and array access (float32 precision).
Definition juno_vec_types.h:300
float arr[3]
Definition juno_vec_types.h:303
JUNO_VEC3_F32_SPH_T tSph
Definition juno_vec_types.h:302
JUNO_VEC3_F32_CART_T tCart
Definition juno_vec_types.h:301
3D vector union supporting Cartesian, spherical, and array access (double precision).
Definition juno_vec_types.h:241
double arr[3]
Definition juno_vec_types.h:244
JUNO_VEC3_F64_SPH_T tSph
Definition juno_vec_types.h:243
JUNO_VEC3_F64_CART_T tCart
Definition juno_vec_types.h:242
3D vector union supporting Cartesian, spherical, and array access (32-bit integer).
Definition juno_vec_types.h:359
int32_t arr[3]
Definition juno_vec_types.h:362
JUNO_VEC3_I32_CART_T tCart
Definition juno_vec_types.h:360
JUNO_VEC3_I32_SPH_T tSph
Definition juno_vec_types.h:361
Definition juno_vec_types.h:469
float arr[4]
Definition juno_vec_types.h:472
JUNO_VEC4_F32_CART_T tCart
Definition juno_vec_types.h:470
JUNO_VEC4_F32_SPH_T tSph
Definition juno_vec_types.h:471
4D vector union supporting Cartesian, hyperspherical, and array access (double precision).
Definition juno_vec_types.h:420
JUNO_VEC4_F64_SPH_T tSph
Definition juno_vec_types.h:422
double arr[4]
Definition juno_vec_types.h:423
JUNO_VEC4_F64_CART_T tCart
Definition juno_vec_types.h:421
4D vector union supporting Cartesian, hyperspherical, and array access (32-bit integer).
Definition juno_vec_types.h:530
JUNO_VEC4_I32_CART_T tCart
Definition juno_vec_types.h:531
JUNO_VEC4_I32_SPH_T tSph
Definition juno_vec_types.h:532
int32_t arr[4]
Definition juno_vec_types.h:533