2
3
4
5
6
7
8
9
10
11
12
24
25
26
27
28
33
34
35
36
37
52
53
54
55
56
77
78
79
80
81
108
109
110
119SHZ_INLINE shz_vec4_t
shz_vec4_init(
float x,
float y,
float z,
float w) SHZ_NOEXCEPT;
133
134
135
183SHZ_INLINE shz_vec2_t
shz_vec2_clamp(shz_vec2_t vec,
float min,
float max) SHZ_NOEXCEPT;
186SHZ_INLINE shz_vec3_t
shz_vec3_clamp(shz_vec3_t vec,
float min,
float max) SHZ_NOEXCEPT;
189SHZ_INLINE shz_vec4_t
shz_vec4_clamp(shz_vec4_t vec,
float min,
float max) SHZ_NOEXCEPT;
246SHZ_INLINE shz_vec2_t
shz_vec2_minv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT;
249SHZ_INLINE shz_vec3_t
shz_vec3_minv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT;
252SHZ_INLINE shz_vec4_t
shz_vec4_minv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT;
255SHZ_INLINE shz_vec2_t
shz_vec2_maxv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT;
258SHZ_INLINE shz_vec3_t
shz_vec3_maxv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT;
261SHZ_INLINE shz_vec4_t
shz_vec4_maxv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT;
273SHZ_INLINE shz_vec2_t
shz_vec2_stepv( shz_vec2_t vec, shz_vec2_t edge) SHZ_NOEXCEPT;
276SHZ_INLINE shz_vec3_t
shz_vec3_stepv(shz_vec3_t vec, shz_vec3_t edge) SHZ_NOEXCEPT;
279SHZ_INLINE shz_vec4_t
shz_vec4_stepv(shz_vec4_t vec, shz_vec4_t edge) SHZ_NOEXCEPT;
282SHZ_INLINE shz_vec2_t
shz_vec2_step(shz_vec2_t vec,
float edge) SHZ_NOEXCEPT;
285SHZ_INLINE shz_vec3_t
shz_vec3_step(shz_vec3_t vec,
float edge) SHZ_NOEXCEPT;
288SHZ_INLINE shz_vec4_t
shz_vec4_step(shz_vec4_t vec,
float edge) SHZ_NOEXCEPT;
330
331
332
335SHZ_INLINE shz_vec2_t
shz_vec2_add(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
338SHZ_INLINE shz_vec3_t
shz_vec3_add(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
341SHZ_INLINE shz_vec4_t
shz_vec4_add(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
344SHZ_INLINE shz_vec2_t
shz_vec2_sub(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
347SHZ_INLINE shz_vec3_t
shz_vec3_sub(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
350SHZ_INLINE shz_vec4_t
shz_vec4_sub(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
353SHZ_INLINE shz_vec2_t
shz_vec2_mul(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
356SHZ_INLINE shz_vec3_t
shz_vec3_mul(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
359SHZ_INLINE shz_vec4_t
shz_vec4_mul(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
362SHZ_INLINE shz_vec2_t
shz_vec2_div(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
365SHZ_INLINE shz_vec3_t
shz_vec3_div(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
368SHZ_INLINE shz_vec4_t
shz_vec4_div(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
382
383
384
423
424
425
429
430
431
435
436
437
443
444
445
448SHZ_INLINE
float shz_vec2_dot(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
451SHZ_INLINE shz_vec2_t
shz_vec2_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) SHZ_NOEXCEPT;
454SHZ_INLINE shz_vec3_t
shz_vec2_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) SHZ_NOEXCEPT;
457SHZ_INLINE
float shz_vec3_dot(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
460SHZ_INLINE shz_vec2_t
shz_vec3_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) SHZ_NOEXCEPT;
463SHZ_INLINE shz_vec3_t
shz_vec3_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) SHZ_NOEXCEPT;
466SHZ_INLINE
float shz_vec4_dot(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
469SHZ_INLINE shz_vec2_t
shz_vec4_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) SHZ_NOEXCEPT;
472SHZ_INLINE shz_vec3_t
shz_vec4_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) SHZ_NOEXCEPT;
493SHZ_INLINE shz_vec2_t
shz_vec2_move(shz_vec2_t vec, shz_vec2_t target,
float max_distance) SHZ_NOEXCEPT;
496SHZ_INLINE shz_vec3_t
shz_vec3_move(shz_vec3_t vec, shz_vec3_t target,
float max_distance) SHZ_NOEXCEPT;
499SHZ_INLINE shz_vec4_t
shz_vec4_move(shz_vec4_t vec, shz_vec4_t target,
float max_distance) SHZ_NOEXCEPT;
502SHZ_INLINE shz_vec2_t
shz_vec2_lerp(shz_vec2_t a, shz_vec2_t b,
float t) SHZ_NOEXCEPT;
505SHZ_INLINE shz_vec3_t
shz_vec3_lerp(shz_vec3_t a, shz_vec3_t b,
float t) SHZ_NOEXCEPT;
508SHZ_INLINE shz_vec4_t
shz_vec4_lerp(shz_vec4_t a, shz_vec4_t b,
float t) SHZ_NOEXCEPT;
511SHZ_INLINE shz_vec2_t
shz_vec2_reflect(shz_vec2_t incidence, shz_vec2_t normal) SHZ_NOEXCEPT;
514SHZ_INLINE shz_vec3_t
shz_vec3_reflect(shz_vec3_t incidence, shz_vec3_t normal) SHZ_NOEXCEPT;
517SHZ_INLINE shz_vec4_t
shz_vec4_reflect(shz_vec4_t incidence, shz_vec4_t normal) SHZ_NOEXCEPT;
520SHZ_INLINE shz_vec2_t
shz_vec2_refract(shz_vec2_t incidence, shz_vec2_t normal,
float eta) SHZ_NOEXCEPT;
523SHZ_INLINE shz_vec3_t
shz_vec3_refract(shz_vec3_t incidence, shz_vec3_t normal,
float eta) SHZ_NOEXCEPT;
526SHZ_INLINE shz_vec4_t
shz_vec4_refract(shz_vec4_t incidence, shz_vec4_t normal,
float eta) SHZ_NOEXCEPT;
529
530
531
532
533
534
538SHZ_INLINE shz_vec3_t
shz_vec3_cross(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
550
551
552
553
557
558
559
560
564
565
566
567
576
577
578
581SHZ_INLINE
float shz_vec3_triple(shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT;
587SHZ_INLINE shz_vec3_t
shz_vec3_barycenter(shz_vec3_t p, shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT;
593SHZ_INLINE shz_vec3_t
shz_vec3_cubic_hermite(shz_vec3_t vec, shz_vec3_t tangent1, shz_vec3_t vec2, shz_vec3_t tangent2,
float amounht) SHZ_NOEXCEPT;
598
599
600
638
639
640
646SHZ_INLINE shz_vec4_t
shz_vec2_vec4(shz_vec2_t vec,
float z,
float w) SHZ_NOEXCEPT;
654
655
656
659 SHZ_INLINE shz_vec2_t
shz_vec2_swizzle(shz_vec2_t vec,
unsigned x_idx,
unsigned y_idx) SHZ_NOEXCEPT;
662 SHZ_INLINE shz_vec3_t
shz_vec3_swizzle(shz_vec3_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx) SHZ_NOEXCEPT;
665 SHZ_INLINE shz_vec4_t
shz_vec4_swizzle(shz_vec4_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx,
unsigned w_idx) SHZ_NOEXCEPT;
672
673
674
677#define shz_vec2_deref(ptr) (*((SHZ_ALIASING
shz_vec2_t*)(ptr)))
680#define shz_vec3_deref(ptr) (*((SHZ_ALIASING
shz_vec3_t*)(ptr)))
683#define shz_vec4_deref(ptr) (*((SHZ_ALIASING
shz_vec4_t*)(ptr)))
686#define shz_vec2_from(value) SHZ_CONVERT
(shz_vec2_t, value)
689#define shz_vec3_from(value) SHZ_CONVERT
(shz_vec3_t, value)
692#define shz_vec4_from(value) SHZ_CONVERT
(shz_vec4_t, value)
695#define shz_vec2_to(type, vector) SHZ_CONVERT
(type, vector)
698#define shz_vec3_to(type, vector) SHZ_CONVERT
(type, vector)
701#define shz_vec4_to(type, vector) SHZ_CONVERT
(type, vector)
706
707
708
713# define shz_vec_abs(vec)
715 shz_vec2_t: shz_vec2_abs,
716 shz_vec3_t: shz_vec3_abs,
717 shz_vec4_t: shz_vec4_abs)(vec)
720# define shz_vec_neg(vec)
722 shz_vec2_t: shz_vec2_neg,
723 shz_vec3_t: shz_vec3_neg,
724 shz_vec4_t: shz_vec4_neg)(vec)
727# define shz_vec_inv(vec)
729 shz_vec2_t: shz_vec2_inv,
730 shz_vec3_t: shz_vec3_inv,
731 shz_vec4_t: shz_vec4_inv)(vec)
734# define shz_vec_max(vec)
736 shz_vec2_t: shz_vec2_max,
737 shz_vec3_t: shz_vec3_max,
738 shz_vec4_t: shz_vec4_max)(vec)
741# define shz_vec_min(vec)
743 shz_vec2_t: shz_vec2_min,
744 shz_vec3_t: shz_vec3_min,
745 shz_vec4_t: shz_vec4_min)(vec)
748# define shz_vec_clamp(vec, min, max)
750 shz_vec2_t: shz_vec2_clamp,
751 shz_vec3_t: shz_vec3_clamp,
752 shz_vec4_t: shz_vec4_clamp)(vec, min, max)
755# define shz_vec_equal(vec1, vec2)
757 shz_vec2_t: shz_vec2_equal,
758 shz_vec3_t: shz_vec3_equal,
759 shz_vec4_t: shz_vec4_equal)(vec1, vec2)
762# define shz_vec_add(vec1, vec2)
764 shz_vec2_t: shz_vec2_add,
765 shz_vec3_t: shz_vec3_add,
766 shz_vec4_t: shz_vec4_add)(vec1, vec2)
769# define shz_vec_sub(vec1, vec2)
771 shz_vec2_t: shz_vec2_sub,
772 shz_vec3_t: shz_vec3_sub,
773 shz_vec4_t: shz_vec4_sub)(vec1, vec2)
776# define shz_vec_mul(vec1, vec2)
778 shz_vec2_t: shz_vec2_mul,
779 shz_vec3_t: shz_vec3_mul,
780 shz_vec4_t: shz_vec4_mul)(vec1, vec2)
783# define shz_vec_div(vec1, vec2)
785 shz_vec2_t: shz_vec2_div,
786 shz_vec3_t: shz_vec3_div,
787 shz_vec4_t: shz_vec4_div)(vec1, vec2)
790# define shz_vec_scale(vec, factor)
792 shz_vec2_t: shz_vec2_scale,
793 shz_vec3_t: shz_vec3_scale,
794 shz_vec4_t: shz_vec4_scale)(vec, factor)
797# define shz_vec_dot(vec1, vec2)
799 shz_vec2_t: shz_vec2_dot,
800 shz_vec3_t: shz_vec3_dot,
801 shz_vec4_t: shz_vec4_dot)(vec1, vec2)
804# define shz_vec_dot2(l, r1, r2)
806 shz_vec2_t: shz_vec2_dot2,
807 shz_vec3_t: shz_vec3_dot2,
808 shz_vec4_t: shz_vec4_dot2)(l, r1, r2)
811# define shz_vec_dot3(l, r1, r2, r3)
813 shz_vec2_t: shz_vec2_dot3,
814 shz_vec3_t: shz_vec3_dot3,
815 shz_vec4_t: shz_vec4_dot3)(l, r1, r2, r3)
818# define shz_vec_magnitude_sqr(vec)
820 shz_vec2_t: shz_vec2_magnitude_sqr,
821 shz_vec3_t: shz_vec3_magnitude_sqr,
822 shz_vec4_t: shz_vec4_magnitude_sqr)(vec)
825# define shz_vec_magnitude(vec)
827 shz_vec2_t: shz_vec2_magnitude,
828 shz_vec3_t: shz_vec3_magnitude,
829 shz_vec4_t: shz_vec4_magnitude)(vec)
832# define shz_vec_magnitude_inv(vec)
834 shz_vec2_t: shz_vec2_magnitude_inv,
835 shz_vec3_t: shz_vec3_magnitude_inv,
836 shz_vec4_t: shz_vec4_magnitude_inv)(vec)
839# define shz_vec_normalize(vec)
841 shz_vec2_t: shz_vec2_normalize,
842 shz_vec3_t: shz_vec3_normalize,
843 shz_vec4_t: shz_vec4_normalize)(vec)
846# define shz_vec_normalize_safe(vec)
848 shz_vec2_t: shz_vec2_normalize_safe,
849 shz_vec3_t: shz_vec3_normalize_safe,
850 shz_vec4_t: shz_vec4_normalize_safe)(vec)
853# define shz_vec_distance(vec1, vec2)
855 shz_vec2_t: shz_vec2_distance,
856 shz_vec3_t: shz_vec3_distance,
857 shz_vec4_t: shz_vec4_distance)(vec1, vec2)
860# define shz_vec_move(vec, target, maxdist)
862 shz_vec2_t: shz_vec2_move,
863 shz_vec3_t: shz_vec3_move,
864 shz_vec4_t: shz_vec4_move)(vec, target, maxdist)
867# define shz_vec_distance_sqr(vec1, vec2)
869 shz_vec2_t: shz_vec2_distance_sqr,
870 shz_vec3_t: shz_vec3_distance_sqr,
871 shz_vec4_t: shz_vec4_distance_sqr)(vec1, vec2)
874# define shz_vec_lerp(vec1, vec2, t)
876 shz_vec2_t: shz_vec2_lerp,
877 shz_vec3_t: shz_vec3_lerp,
878 shz_vec4_t: shz_vec4_lerp)(vec1, vec2, t)
881# define shz_vec_reflect(incidence, normal)
882 _Generic((incidence),
883 shz_vec2_t: shz_vec2_reflect,
884 shz_vec3_t: shz_vec3_reflect,
885 shz_vec4_t: shz_vec4_reflect)(incidence, normal)
888# define shz_vec_refract(incidence, normal, eta)
889 _Generic((incidence),
890 shz_vec2_t: shz_vec2_refract,
891 shz_vec3_t: shz_vec3_refract,
892 shz_vec4_t: shz_vec4_refract)(incidence, normal, eta)
895# define shz_vec_cross(vec1, vec2)
897 shz_vec2_t: shz_vec2_cross,
898 shz_vec3_t: shz_vec3_cross)(vec1, vec2)
901# define shz_vec_project(vec1, vec2)
903 shz_vec2_t: shz_vec2_project,
904 shz_vec3_t: shz_vec3_project,
905 shz_vec4_t: shz_vec4_project)(vec1, vec2)
908# define shz_vec_project_safe(vec1, vec2)
910 shz_vec2_t: shz_vec2_project_safe,
911 shz_vec3_t: shz_vec3_project_safe,
912 shz_vec4_t: shz_vec4_project_safe)(vec1, vec2)
915# define shz_vec_angles(vec)
917 shz_vec2_t: shz_vec2_angle,
918 shz_vec3_t: shz_vec3_angles)(vec)
921# define shz_vec_angle_between(vec1, vec2)
923 shz_vec2_t: shz_vec2_angle_between,
924 shz_vec3_t: shz_vec3_angle_between)(vec1, vec2)
927# define shz_vec_swizzle(vec, ...)
929 shz_vec2_t: shz_vec2_swizzle,
930 shz_vec3_t: shz_vec3_swizzle,
931 shz_vec4_t: shz_vec4_swizzle)(vec, __VA_ARGS__)
934# define shz_vec_floor(vec)
936 shz_vec2_t: shz_vec2_floor,
937 shz_vec3_t: shz_vec3_floor,
938 shz_vec4_t: shz_vec4_floor)(vec)
941# define shz_vec_ceil(vec)
943 shz_vec2_t: shz_vec2_ceil,
944 shz_vec3_t: shz_vec3_ceil,
945 shz_vec4_t: shz_vec4_ceil)(vec)
948# define shz_vec_round(vec)
950 shz_vec2_t: shz_vec2_round,
951 shz_vec3_t: shz_vec3_round,
952 shz_vec4_t: shz_vec4_round)(vec)
955# define shz_vec_fract(vec)
957 shz_vec2_t: shz_vec2_fract,
958 shz_vec3_t: shz_vec3_fract,
959 shz_vec4_t: shz_vec4_fract)(vec)
962# define shz_vec_sign(vec)
964 shz_vec2_t: shz_vec2_sign,
965 shz_vec3_t: shz_vec3_sign,
966 shz_vec4_t: shz_vec4_sign)(vec)
969# define shz_vec_saturate(vec)
971 shz_vec2_t: shz_vec2_saturate,
972 shz_vec3_t: shz_vec3_saturate,
973 shz_vec4_t: shz_vec4_saturate)(vec)
976# define shz_vec_minv(a, b)
978 shz_vec2_t: shz_vec2_minv,
979 shz_vec3_t: shz_vec3_minv,
980 shz_vec4_t: shz_vec4_minv)(a, b)
983# define shz_vec_maxv(a, b)
985 shz_vec2_t: shz_vec2_maxv,
986 shz_vec3_t: shz_vec3_maxv,
987 shz_vec4_t: shz_vec4_maxv)(a, b)
990# define shz_vec_stepv(vec, edge)
992 shz_vec2_t: shz_vec2_stepv,
993 shz_vec3_t: shz_vec3_stepv,
994 shz_vec4_t: shz_vec4_stepv)(vec, edge)
997# define shz_vec_step(vec, edge)
999 shz_vec2_t: shz_vec2_step,
1000 shz_vec3_t: shz_vec3_step,
1001 shz_vec4_t: shz_vec4_step)(vec, edge)
1004# define shz_vec_smoothstepv(vec, edge0, edge1)
1006 shz_vec2_t: shz_vec2_smoothstepv,
1007 shz_vec3_t: shz_vec3_smoothstepv,
1008 shz_vec4_t: shz_vec4_smoothstepv)(vec, edge0, edge1)
1011# define shz_vec_smoothstep(vec, edge0, edge1)
1013 shz_vec2_t: shz_vec2_smoothstep,
1014 shz_vec3_t: shz_vec3_smoothstep,
1015 shz_vec4_t: shz_vec4_smoothstep)(vec, edge0, edge1)
1018# define shz_vec_smoothstepv_safe(vec, edge0, edge1)
1020 shz_vec2_t: shz_vec2_smoothstepv_safe,
1021 shz_vec3_t: shz_vec3_smoothstepv_safe,
1022 shz_vec4_t: shz_vec4_smoothstepv_safe)(vec, edge0, edge1)
1025# define shz_vec_smoothstep_safe(vec, edge0, edge1)
1027 shz_vec2_t: shz_vec2_smoothstep_safe,
1028 shz_vec3_t: shz_vec3_smoothstep_safe,
1029 shz_vec4_t: shz_vec4_smoothstep_safe)(vec, edge0, edge1)
1034 SHZ_INLINE shz_vec2_t shz_vec_abs(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_abs(vec
); }
1035 SHZ_INLINE shz_vec3_t shz_vec_abs(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_abs(vec
); }
1036 SHZ_INLINE shz_vec4_t shz_vec_abs(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_abs(vec
); }
1039 SHZ_INLINE shz_vec2_t shz_vec_neg(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_neg(vec
); }
1040 SHZ_INLINE shz_vec3_t shz_vec_neg(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_neg(vec
); }
1041 SHZ_INLINE shz_vec4_t shz_vec_neg(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_neg(vec
); }
1044 SHZ_INLINE shz_vec2_t shz_vec_inv(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_inv(vec
); }
1045 SHZ_INLINE shz_vec3_t shz_vec_inv(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_inv(vec
); }
1046 SHZ_INLINE shz_vec4_t shz_vec_inv(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_inv(vec
); }
1049 SHZ_INLINE
float shz_vec_max(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_max(vec
); }
1050 SHZ_INLINE
float shz_vec_max(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_max(vec
); }
1051 SHZ_INLINE
float shz_vec_max(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_max(vec
); }
1054 SHZ_INLINE
float shz_vec_min(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_min(vec
); }
1055 SHZ_INLINE
float shz_vec_min(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_min(vec
); }
1056 SHZ_INLINE
float shz_vec_min(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_min(vec
); }
1059 SHZ_INLINE shz_vec2_t shz_vec_clamp(shz_vec2_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec2_clamp(vec
, min
, max
); }
1060 SHZ_INLINE shz_vec3_t shz_vec_clamp(shz_vec3_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec3_clamp(vec
, min
, max
); }
1061 SHZ_INLINE shz_vec4_t shz_vec_clamp(shz_vec4_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec4_clamp(vec
, min
, max
); }
1064 SHZ_INLINE
bool shz_vec_equal(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_equal(vec1
, vec2
); }
1065 SHZ_INLINE
bool shz_vec_equal(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_equal(vec1
, vec2
); }
1066 SHZ_INLINE
bool shz_vec_equal(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_equal(vec1
, vec2
); }
1069 SHZ_INLINE shz_vec2_t shz_vec_add(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_add(vec1
, vec2
); }
1070 SHZ_INLINE shz_vec3_t shz_vec_add(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_add(vec1
, vec2
); }
1071 SHZ_INLINE shz_vec4_t shz_vec_add(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_add(vec1
, vec2
); }
1074 SHZ_INLINE shz_vec2_t shz_vec_sub(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_sub(vec1
, vec2
); }
1075 SHZ_INLINE shz_vec3_t shz_vec_sub(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_sub(vec1
, vec2
); }
1076 SHZ_INLINE shz_vec4_t shz_vec_sub(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_sub(vec1
, vec2
); }
1079 SHZ_INLINE shz_vec2_t shz_vec_mul(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_mul(vec1
, vec2
); }
1080 SHZ_INLINE shz_vec3_t shz_vec_mul(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_mul(vec1
, vec2
); }
1081 SHZ_INLINE shz_vec4_t shz_vec_mul(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_mul(vec1
, vec2
); }
1084 SHZ_INLINE shz_vec2_t shz_vec_div(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_div(vec1
, vec2
); }
1085 SHZ_INLINE shz_vec3_t shz_vec_div(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_div(vec1
, vec2
); }
1086 SHZ_INLINE shz_vec4_t shz_vec_div(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_div(vec1
, vec2
); }
1089 SHZ_INLINE shz_vec2_t shz_vec_scale(shz_vec2_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec2_scale(vec
, factor
); }
1090 SHZ_INLINE shz_vec3_t shz_vec_scale(shz_vec3_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec3_scale(vec
, factor
); }
1091 SHZ_INLINE shz_vec4_t shz_vec_scale(shz_vec4_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec4_scale(vec
, factor
); }
1094 SHZ_INLINE
float shz_vec_dot(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_dot(vec1
, vec2
); }
1095 SHZ_INLINE
float shz_vec_dot(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_dot(vec1
, vec2
); }
1096 SHZ_INLINE
float shz_vec_dot(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_dot(vec1
, vec2
); }
1099 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) SHZ_NOEXCEPT {
return shz_vec2_dot2(l
, r1
, r2
); }
1100 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) SHZ_NOEXCEPT {
return shz_vec3_dot2(l
, r1
, r2
); }
1101 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) SHZ_NOEXCEPT {
return shz_vec4_dot2(l
, r1
, r2
); }
1104 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) SHZ_NOEXCEPT {
return shz_vec2_dot3(l
, r1
, r2
, r3
); }
1105 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) SHZ_NOEXCEPT {
return shz_vec3_dot3(l
, r1
, r2
, r3
); }
1106 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) SHZ_NOEXCEPT {
return shz_vec4_dot3(l
, r1
, r2
, r3
); }
1114 SHZ_INLINE
float shz_vec_magnitude(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_magnitude(vec
); }
1115 SHZ_INLINE
float shz_vec_magnitude(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_magnitude(vec
); }
1116 SHZ_INLINE
float shz_vec_magnitude(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_magnitude(vec
); }
1124 SHZ_INLINE shz_vec2_t shz_vec_normalize(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_normalize(vec
); }
1125 SHZ_INLINE shz_vec3_t shz_vec_normalize(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_normalize(vec
); }
1126 SHZ_INLINE shz_vec4_t shz_vec_normalize(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_normalize(vec
); }
1134 SHZ_INLINE
float shz_vec_distance(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_distance(vec1
, vec2
); }
1135 SHZ_INLINE
float shz_vec_distance(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_distance(vec1
, vec2
); }
1136 SHZ_INLINE
float shz_vec_distance(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_distance(vec1
, vec2
); }
1139 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_distance_sqr(vec1
, vec2
); }
1140 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_distance_sqr(vec1
, vec2
); }
1141 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_distance_sqr(vec1
, vec2
); }
1144 SHZ_INLINE shz_vec2_t shz_vec_move(shz_vec2_t vec, shz_vec2_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec2_move(vec
, target
, maxdist
); }
1145 SHZ_INLINE shz_vec3_t shz_vec_move(shz_vec3_t vec, shz_vec3_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec3_move(vec
, target
, maxdist
); }
1146 SHZ_INLINE shz_vec4_t shz_vec_move(shz_vec4_t vec, shz_vec4_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec4_move(vec
, target
, maxdist
); }
1149 SHZ_INLINE shz_vec2_t shz_vec_lerp(shz_vec2_t vec1, shz_vec2_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec2_lerp(vec1
, vec2
, t
); }
1150 SHZ_INLINE shz_vec3_t shz_vec_lerp(shz_vec3_t vec1, shz_vec3_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec3_lerp(vec1
, vec2
, t
); }
1151 SHZ_INLINE shz_vec4_t shz_vec_lerp(shz_vec4_t vec1, shz_vec4_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec4_lerp(vec1
, vec2
, t
); }
1154 SHZ_INLINE shz_vec2_t shz_vec_reflect(shz_vec2_t incidence, shz_vec2_t normal) SHZ_NOEXCEPT {
return shz_vec2_reflect(incidence
, normal
); }
1155 SHZ_INLINE shz_vec3_t shz_vec_reflect(shz_vec3_t incidence, shz_vec3_t normal) SHZ_NOEXCEPT {
return shz_vec3_reflect(incidence
, normal
); }
1156 SHZ_INLINE shz_vec4_t shz_vec_reflect(shz_vec4_t incidence, shz_vec4_t normal) SHZ_NOEXCEPT {
return shz_vec4_reflect(incidence
, normal
); }
1159 SHZ_INLINE shz_vec2_t shz_vec_refract(shz_vec2_t incidence, shz_vec2_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec2_refract(incidence
, normal
, eta
); }
1160 SHZ_INLINE shz_vec3_t shz_vec_refract(shz_vec3_t incidence, shz_vec3_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec3_refract(incidence
, normal
, eta
); }
1161 SHZ_INLINE shz_vec4_t shz_vec_refract(shz_vec4_t incidence, shz_vec4_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec4_refract(incidence
, normal
, eta
); }
1164 SHZ_INLINE
float shz_vec_cross(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_cross(vec1
, vec2
); }
1165 SHZ_INLINE shz_vec3_t shz_vec_cross(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_cross(vec1
, vec2
); }
1168 SHZ_INLINE shz_vec2_t shz_vec_project(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_project(vec1
, vec2
); }
1169 SHZ_INLINE shz_vec3_t shz_vec_project(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_project(vec1
, vec2
); }
1170 SHZ_INLINE shz_vec4_t shz_vec_project(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_project(vec1
, vec2
); }
1173 SHZ_INLINE shz_vec2_t shz_vec_project_safe(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_project_safe(vec1
, vec2
); }
1174 SHZ_INLINE shz_vec3_t shz_vec_project_safe(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_project_safe(vec1
, vec2
); }
1175 SHZ_INLINE shz_vec4_t shz_vec_project_safe(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_project_safe(vec1
, vec2
); }
1178 SHZ_INLINE
float shz_vec_angles(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_angle(vec
); }
1179 SHZ_INLINE shz_vec3_t shz_vec_angles(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_angles(vec
); }
1182 SHZ_INLINE
float shz_vec_angle_between(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_angle_between(vec1
, vec2
); }
1183 SHZ_INLINE
float shz_vec_angle_between(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_angle_between(vec1
, vec2
); }
1186 SHZ_INLINE shz_vec2_t shz_vec_swizzle(shz_vec2_t vec,
unsigned x_idx,
unsigned y_idx) SHZ_NOEXCEPT {
1189 SHZ_INLINE shz_vec3_t shz_vec_swizzle(shz_vec3_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx) SHZ_NOEXCEPT {
1192 SHZ_INLINE shz_vec4_t shz_vec_swizzle(shz_vec4_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx,
unsigned w_idx) SHZ_NOEXCEPT {
1197 SHZ_INLINE shz_vec2_t shz_vec_floor(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_floor(vec
); }
1198 SHZ_INLINE shz_vec3_t shz_vec_floor(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_floor(vec
); }
1199 SHZ_INLINE shz_vec4_t shz_vec_floor(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_floor(vec
); }
1202 SHZ_INLINE shz_vec2_t shz_vec_ceil(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_ceil(vec
); }
1203 SHZ_INLINE shz_vec3_t shz_vec_ceil(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_ceil(vec
); }
1204 SHZ_INLINE shz_vec4_t shz_vec_ceil(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_ceil(vec
); }
1207 SHZ_INLINE shz_vec2_t shz_vec_round(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_round(vec
); }
1208 SHZ_INLINE shz_vec3_t shz_vec_round(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_round(vec
); }
1209 SHZ_INLINE shz_vec4_t shz_vec_round(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_round(vec
); }
1212 SHZ_INLINE shz_vec2_t shz_vec_fract(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_fract(vec
); }
1213 SHZ_INLINE shz_vec3_t shz_vec_fract(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_fract(vec
); }
1214 SHZ_INLINE shz_vec4_t shz_vec_fract(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_fract(vec
); }
1217 SHZ_INLINE shz_vec2_t shz_vec_sign(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_sign(vec
); }
1218 SHZ_INLINE shz_vec3_t shz_vec_sign(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_sign(vec
); }
1219 SHZ_INLINE shz_vec4_t shz_vec_sign(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_sign(vec
); }
1222 SHZ_INLINE shz_vec2_t shz_vec_saturate(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_saturate(vec
); }
1223 SHZ_INLINE shz_vec3_t shz_vec_saturate(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_saturate(vec
); }
1224 SHZ_INLINE shz_vec4_t shz_vec_saturate(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_saturate(vec
); }
1227 SHZ_INLINE shz_vec2_t shz_vec_minv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT {
return shz_vec2_minv(a
, b
); }
1228 SHZ_INLINE shz_vec3_t shz_vec_minv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT {
return shz_vec3_minv(a
, b
); }
1229 SHZ_INLINE shz_vec4_t shz_vec_minv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT {
return shz_vec4_minv(a
, b
); }
1232 SHZ_INLINE shz_vec2_t shz_vec_maxv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT {
return shz_vec2_maxv(a
, b
); }
1233 SHZ_INLINE shz_vec3_t shz_vec_maxv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT {
return shz_vec3_maxv(a
, b
); }
1234 SHZ_INLINE shz_vec4_t shz_vec_maxv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT {
return shz_vec4_maxv(a
, b
); }
1237 SHZ_INLINE shz_vec2_t shz_vec_step(shz_vec2_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec2_step (vec
, edge
); }
1238 SHZ_INLINE shz_vec2_t shz_vec_step(shz_vec2_t vec, shz_vec2_t edge) SHZ_NOEXCEPT {
return shz_vec2_stepv(vec
, edge
); }
1239 SHZ_INLINE shz_vec3_t shz_vec_step(shz_vec3_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec3_step (vec
, edge
); }
1240 SHZ_INLINE shz_vec3_t shz_vec_step(shz_vec3_t vec, shz_vec3_t edge) SHZ_NOEXCEPT {
return shz_vec3_stepv(vec
, edge
); }
1241 SHZ_INLINE shz_vec4_t shz_vec_step(shz_vec4_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec4_step (vec
, edge
); }
1242 SHZ_INLINE shz_vec4_t shz_vec_step(shz_vec4_t vec, shz_vec4_t edge) SHZ_NOEXCEPT {
return shz_vec4_stepv(vec
, edge
); }
1245 SHZ_INLINE shz_vec2_t shz_vec_smoothstep(shz_vec2_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstep (vec
, edge0
, edge1
); }
1246 SHZ_INLINE shz_vec2_t shz_vec_smoothstep(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstepv(vec
, edge0
, edge1
); }
1247 SHZ_INLINE shz_vec3_t shz_vec_smoothstep(shz_vec3_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstep (vec
, edge0
, edge1
); }
1248 SHZ_INLINE shz_vec3_t shz_vec_smoothstep(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstepv(vec
, edge0
, edge1
); }
1249 SHZ_INLINE shz_vec4_t shz_vec_smoothstep(shz_vec4_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstep (vec
, edge0
, edge1
); }
1250 SHZ_INLINE shz_vec4_t shz_vec_smoothstep(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstepv(vec
, edge0
, edge1
); }
1253 SHZ_INLINE shz_vec2_t shz_vec_smoothstep_safe(shz_vec2_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstep_safe (vec
, edge0
, edge1
); }
1254 SHZ_INLINE shz_vec2_t shz_vec_smoothstep_safe(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstepv_safe(vec
, edge0
, edge1
); }
1255 SHZ_INLINE shz_vec3_t shz_vec_smoothstep_safe(shz_vec3_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstep_safe (vec
, edge0
, edge1
); }
1256 SHZ_INLINE shz_vec3_t shz_vec_smoothstep_safe(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstepv_safe(vec
, edge0
, edge1
); }
1257 SHZ_INLINE shz_vec4_t shz_vec_smoothstep_safe(shz_vec4_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstep_safe (vec
, edge0
, edge1
); }
1258 SHZ_INLINE shz_vec4_t shz_vec_smoothstep_safe(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstepv_safe(vec
, edge0
, edge1
); }
1262#include "inline/shz_vector.inl.h"
float shz_vec3_magnitude(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the magnitude of the given 3D vector.
shz_vec4_t shz_vec4_sign(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec3_t shz_vec3_mul(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns a 3D vector whose component values are those of vec1 times vec2.
shz_vec4_t shz_vec4_minv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT
Returns a 4D vector whose components are the pairwise minimums of the two given vectors' components.
shz_vec3_t shz_vec3_project_safe(shz_vec3_t vec, shz_vec3_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 3D vector along the given (unit) axis.
shz_vec4_t shz_vec4_sub(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns a 4D vector whose components are equal to the values of vec1 minus vec2.
shz_vec4_t shz_vec4_smoothstep_safe(shz_vec4_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
bool shz_vec4_equal(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT
Returns true if the values of each element within the two 4D vectors are approximately equal based on...
shz_vec3_t shz_vec3_angles(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the angles formed between the positive X axis and the given 3D vector, in radians.
shz_vec3_t shz_vec3_smoothstep_safe(shz_vec3_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
shz_vec3_t shz_vec3_smoothstep(shz_vec3_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
shz_vec2_t shz_vec2_saturate(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec2_t shz_vec2_from_angle(float radians) SHZ_NOEXCEPT
Returns the 2D unit vector representing a rotation from the positive X axis in radians.
shz_vec3_t shz_vec2_vec3(shz_vec2_t vec, float z) SHZ_NOEXCEPT
Extends a 2D vector to 3D, using z as the value of the Z component.
shz_vec3_t shz_vec3_cross(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns the vector produced by taking the cross-product of the two given 3D vectors.
shz_vec2_t shz_vec2_div(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns a 2D vector whose component values are those of vec1 divided by vec2.
float shz_vec3_dot(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns the dot product between the two given 3D vectors.
shz_vec2_t shz_vec2_smoothstep_safe(shz_vec2_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
shz_vec4_t shz_vec4_init(float x, float y, float z, float w) SHZ_NOEXCEPT
Returns a 4D vector with the given x, y, z, and w coordinates.
shz_vec3_t shz_vec3
Alternate typedef for the shz_vec3 struct for those who hate POSIX-style.
shz_vec3_t shz_vec3_saturate(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec3_t shz_vec3_sub(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns a 3D vector whose components are equal to the values of vec1 minus vec2.
shz_vec2_t shz_vec2_smoothstepv(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-betwe...
float shz_vec3_magnitude_sqr(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the squared magnitude of the given 3D vector.
shz_vec4_t shz_vec4_floor(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the floor of the given vector's components.
shz_vec2_t shz_vec2_abs(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the absolute values of the given vector's components.
float shz_vec2_min(shz_vec2_t vec) SHZ_NOEXCEPT
Retuns the minimum value of both of the given vector's components.
float shz_vec4_min(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the minimum value of the given vector's 4 components.
shz_vec2_t shz_vec2_normalize_safe(shz_vec2_t vec) SHZ_NOEXCEPT
SAFELY returns a normalized unit vector from the given 2D vector.
shz_vec3_t shz_vec3_fill(float v) SHZ_NOEXCEPT
Returns a 3D vector with the value of each compoonent equal to v.
shz_vec2_t shz_vec4_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) SHZ_NOEXCEPT
Returns the two dot products taken between the 4D vector l and 4D vectors r1 and r2.
shz_vec2_t shz_vec2_add(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns a 2D vector whose components are the sums of the given vectors' components.
shz_vec4_t shz_vec4_round(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the rounded values of the given vector's components.
shz_vec3_t shz_vec3_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) SHZ_NOEXCEPT
Returns the three dot products taken between the 3D vector l and 3D vectors r1, r2,...
shz_vec4_t shz_vec4_stepv(shz_vec4_t vec, shz_vec4_t edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
shz_vec3_t shz_vec3_smoothstepv_safe(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec2_t shz_vec3_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) SHZ_NOEXCEPT
Returns the two dot products taken between the 3D vector l and 3D vectors r1 and r2.
shz_vec2_t shz_vec2_rotate(shz_vec2_t vec, float radians) SHZ_NOEXCEPT
Rotates the given 2D vector about the Z axis by the given angle in radians.
shz_vec4_t shz_vec4_maxv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT
Returns a 4D vector whose components are the pairwise maximums of the two given vectors' components.
shz_vec3_t shz_vec3_normalize_safe(shz_vec3_t vec) SHZ_NOEXCEPT
SAFELY returns a normalized unit vector from the given 3D vector.
shz_vec4_t shz_vec4_swizzle(shz_vec4_t vec, unsigned x_idx, unsigned y_idx, unsigned z_idx, unsigned w_idx) SHZ_NOEXCEPT
Returns a new 2D vector whose elements are equal to the source vector's values at the given indices.
float shz_vec3_distance_sqr(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns the squared-distance between the two given 3D vectors.
shz_vec4_t shz_vec4_smoothstepv(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec2_t shz_vec2_from_angle_deg(float degrees) SHZ_NOEXCEPT
Returns the 2D unit vector representing a rotation from the positive X axis in degrees.
shz_vec4_t shz_vec4_smoothstep(shz_vec4_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
shz_vec3_t shz_vec3_round(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the rounded values of the given vector's components.
float shz_vec4_max(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the maximum value of the given vector's 4 componetns.
shz_vec2_t shz_vec2_neg(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the negative values of the given vector's components.
shz_vec3_t shz_vec4_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) SHZ_NOEXCEPT
Returns the three dot products taken between the 4D vector l and 4D vectors r1, r2,...
shz_vec4_t shz_vec4_refract(shz_vec4_t incidence, shz_vec4_t normal, float eta) SHZ_NOEXCEPT
Refracts the given 4D incidence vector against a surface with the given normal using the given refrac...
float shz_vec3_distance(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns the distance between the two given 3D vectors.
float shz_vec4_magnitude(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the magnitude of the given 4D vector.
shz_vec2_t shz_vec2_from_sincos(shz_sincos_t sincos) SHZ_NOEXCEPT
Returns the 2D unit vector representing a rotation from the positive X axis.
shz_vec4_t shz_vec4_mul(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns a 4D vector whose component values are those of vec1 times vec2.
shz_vec3_t shz_vec3_floor(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the floor of the given vector's components.
shz_vec3_t shz_vec3_neg(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the negative values of the given vector's components.
shz_vec3_t shz_vec3_normalize(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a normalized unit vector from the given 3D vector.
float shz_vec4_dot(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns the dot product between the two given 4D vectors.
shz_vec3_t shz_vec3_maxv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT
Returns a 3D vector whose components are the pairwise maximums of the two given vectors' components.
shz_vec4_t shz_vec4_step(shz_vec4_t vec, float edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
shz_vec3_t shz_vec3_swizzle(shz_vec3_t vec, unsigned x_idx, unsigned y_idx, unsigned z_idx) SHZ_NOEXCEPT
Returns a 3D vector whose elements are equal to the source vector's values at the given indices.
float shz_vec4_distance(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns the distance between the two given 4D vectors.
shz_vec4_t shz_vec4_abs(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the absolute values of the given vector's components.
shz_vec2_t shz_vec2_scale(shz_vec2_t vec, float factor) SHZ_NOEXCEPT
Returns a 2D vector whose component values are those of the given vector multiplied by a factor.
float shz_vec2_angle(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the angle formed between the positive X axis and the given 2D vector, in radians.
float shz_vec2_max(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the maximum value of both of the given vector's components.
shz_vec4_t shz_vec4_normalize_safe(shz_vec4_t vec) SHZ_NOEXCEPT
SAFELY returns a normalized unit vector from the given 4D vector.
shz_vec3_t shz_vec3_from_angles_deg(float azimuth, float elevation) SHZ_NOEXCEPT
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis in ...
shz_vec2_t shz_vec2_round(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the rounded values of the given vector's components.
shz_vec4_t shz_vec4_smoothstepv_safe(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec3_t shz_vec3_add(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns a 3D vector whose components are the sums of the given vectors' components.
shz_vec3_t shz_vec3_smoothstepv(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec2_t shz_vec2_fract(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the fractional parts of the given vector's components.
shz_vec2_t shz_vec2_maxv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT
Returns a 2D vector whose components are the pairwise maximums of the two given vectors' components.
shz_vec2_t shz_vec2_move(shz_vec2_t vec, shz_vec2_t target, float max_distance) SHZ_NOEXCEPT
Returns the given 2D vector, translated towards the target by the given max_distance.
shz_vec2_t shz_vec2_inv(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the 2D vector whose components have been inverted or reciprocated.
shz_vec4_t shz_vec4_inv(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the 4D vector whose components have been inverted or reciprocated.
shz_vec3_t shz_vec3_barycenter(shz_vec3_t p, shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT
Computes barycentric coordinates <u, v, w> for point p, within the plane of the triangle with vertice...
shz_vec2_t shz_vec2_clamp(shz_vec2_t vec, float min, float max) SHZ_NOEXCEPT
Clamps the values of the given 2D vec between min and max, returning a new vector.
shz_vec4_t shz_vec4_saturate(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec2_t shz_vec2_step(shz_vec2_t vec, float edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
shz_vec2_t shz_vec2_floor(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the floor of the given vector's components.
float shz_vec2_angle_between(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns the angle formed between the given 2D vectors in radians.
shz_vec4_t shz_vec4_div(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns a 4D vector whose component values are those of vec1 divided by vec2.
shz_vec2_t shz_vec2_project_safe(shz_vec2_t vec, shz_vec2_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 2D vector along the given (unit) axis.
shz_vec2_t shz_vec2_normalize(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a normalized unit vector from the given 2D vector.
shz_vec4_t shz_vec4_lerp(shz_vec4_t a, shz_vec4_t b, float t) SHZ_NOEXCEPT
Returns a 4D vector that is linearly interpolated from a to b by the given 0.0f-1....
shz_vec4_t shz_vec4_project_safe(shz_vec4_t vec, shz_vec4_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 4D vector along the given (unit) axis.
shz_vec4_t shz_vec4_move(shz_vec4_t vec, shz_vec4_t target, float max_distance) SHZ_NOEXCEPT
Returns the given 4D vector, translated towards the target by the given max_distance.
shz_vec4_t shz_vec4_fract(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the fractional parts of the given vector's components.
shz_vec2_t shz_vec2_fill(float v) SHZ_NOEXCEPT
Returns a 2D vector with the value of each component equal to v.
float shz_vec3_magnitude_inv(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the inverse magnitude of the given 3D vector.
float shz_vec3_triple(shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT
Returns the 3D vector "triple product" between vector's a, b, and c.
shz_vec3_t shz_vec3_init(float x, float y, float z) SHZ_NOEXCEPT
Returns a 3D vector with the given x, y, and z coordinates.
float shz_vec3_min(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the minimum value of the given vector's 3 components.
bool shz_vec2_equal(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT
Returns true if the values of each element within the two 2D vectors are approximately equal based on...
shz_vec4_t shz_vec4_reflect(shz_vec4_t incidence, shz_vec4_t normal) SHZ_NOEXCEPT
Reflects the given 4D incidence vector against a surface with the given normal, returning the result.
void shz_vec3_orthonormalize(shz_vec3_t in1, shz_vec3_t in2, shz_vec3_t *out1, shz_vec3_t *out2) SHZ_NOEXCEPT
Returns 2 3D vectors which are normalized and orthogonal to the two input vectors.
float shz_vec2_magnitude_inv(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the inverse magnitude of the given 2D vector.
float shz_vec4_magnitude_sqr(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the squared magnitude of the given 4D vector.
shz_vec3_t shz_vec3_lerp(shz_vec3_t a, shz_vec3_t b, float t) SHZ_NOEXCEPT
Returns a 3D vector that is linearly interpolated from a to b by the given 0.0f-1....
float shz_vec2_distance(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns the distance between the two given 2D vectors.
shz_vec3_t shz_vec2_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) SHZ_NOEXCEPT
Returns the three dot products taken between the 2D vector l and 2D vectors r1, r2,...
shz_vec3_t shz_vec3_from_sincos(shz_sincos_t azimuth, shz_sincos_t elevation) SHZ_NOEXCEPT
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis.
shz_vec2_t shz_vec2_minv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT
Returns a 2D vector whose components are the pairwise minimums of the two given vectors' components.
shz_vec3_t shz_vec3_stepv(shz_vec3_t vec, shz_vec3_t edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
shz_vec3_t shz_vec3_ceil(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the ceil of the given vector's components.
bool shz_vec3_equal(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT
Returns true if the values of each element within the two 3D vectors are approximately equal based on...
shz_vec2_t shz_vec2_reflect(shz_vec2_t incidence, shz_vec2_t normal) SHZ_NOEXCEPT
Reflects the given 2D incidence vector against a surface with the given normal, returning the result.
shz_vec3_t shz_vec3_sign(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec3_t shz_vec3_step(shz_vec3_t vec, float edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
float shz_vec2_cross(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns the cross product, as a scalar, between two 2D vectors.
float shz_vec4_distance_sqr(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns the squared-distance between the two given 4D vectors.
shz_vec2_t shz_vec2_smoothstepv_safe(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-betwe...
shz_vec4_t shz_vec4_fill(float v) SHZ_NOEXCEPT
Returns a 4D vector with the value of each component equal to v.
shz_vec2_t shz_vec2_lerp(shz_vec2_t a, shz_vec2_t b, float t) SHZ_NOEXCEPT
Returns a 2D vector that is linearly interpolated from a to b by the given 0.0f-1....
shz_vec3_t shz_vec3_perp(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a vector which is perpendicular to the given vector.
shz_vec4_t shz_vec4_scale(shz_vec4_t vec, float factor) SHZ_NOEXCEPT
Returns a 4D vector whose component values are those of the given vector multiplied by a factor.
shz_vec3_t shz_vec3_project(shz_vec3_t vec, shz_vec3_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 3D vector along the given (unit) axis.
shz_vec4_t shz_vec2_vec4(shz_vec2_t vec, float z, float w) SHZ_NOEXCEPT
Extends a 2D vector to 4D, using z and w as the values of the Z and W components.
shz_vec2_t shz_vec2_stepv(shz_vec2_t vec, shz_vec2_t edge) SHZ_NOEXCEPT
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
shz_vec3_t shz_vec3_reject(shz_vec3_t vec, shz_vec3_t onto) SHZ_NOEXCEPT
Returns the rejection of the given vector, vec, onto another vector, onto.
shz_vec4_t shz_vec4_project(shz_vec4_t vec, shz_vec4_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 4D vector along the given (unit) axis.
float shz_vec4_magnitude_inv(shz_vec4_t vec) SHZ_NOEXCEPT
Returns the inverse magnitude of the given 4D vector.
shz_vec3_t shz_vec3_scale(shz_vec3_t vec, float factor) SHZ_NOEXCEPT
Returns a 3D vector whose component values are those of the given vector multiplied by a factor.
shz_vec4_t shz_vec3_vec4(shz_vec3_t vec, float w) SHZ_NOEXCEPT
Extends a 3D vector to 4D, using w as the value of the W component.
shz_vec2_t shz_vec2_mul(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns a 2D vector whose component values are those of vec1 times vec2.
float shz_vec2_distance_sqr(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns the squared-distance between the two given 2D vectors.
shz_vec3_t shz_vec3_move(shz_vec3_t vec, shz_vec3_t target, float max_distance) SHZ_NOEXCEPT
Returns the given 3D vector, translated towards the target by the given max_distance.
shz_vec3_t shz_vec3_refract(shz_vec3_t incidence, shz_vec3_t normal, float eta) SHZ_NOEXCEPT
Refracts the given 3D incidence vector against a surface with the given normal using the given refrac...
shz_vec4_t shz_vec4_neg(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the negative values of the given vector's components.
shz_vec2_t shz_vec2_swizzle(shz_vec2_t vec, unsigned x_idx, unsigned y_idx) SHZ_NOEXCEPT
Returns a 2D vector whose elements are equal to the source vector's values at the given indices.
float shz_vec3_angle_between(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns the angle formed between the given 3D vectors in radians.
shz_vec3_t shz_vec3_inv(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the 3D vector whose components have been inverted or reciprocated.
shz_vec3_t shz_vec3_reflect(shz_vec3_t incidence, shz_vec3_t normal) SHZ_NOEXCEPT
Reflects the given 3D incidence vector against a surface with the given normal, returning the result.
shz_vec2_t shz_vec2_refract(shz_vec2_t incidence, shz_vec2_t normal, float eta) SHZ_NOEXCEPT
Refracts the given 2D incidence vector against a surface with the given normal using the given refrac...
shz_vec2_t shz_vec2
Alternate typedef for the shz_vec2 struct for those who hate POSIX-style.
shz_vec3_t shz_vec3_abs(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the absolute values of the given vector's components.
float shz_vec2_magnitude(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the magnitude of the given 2D vector.
shz_vec3_t shz_vec3_cubic_hermite(shz_vec3_t vec, shz_vec3_t tangent1, shz_vec3_t vec2, shz_vec3_t tangent2, float amounht) SHZ_NOEXCEPT
Calculates the cubic hermite interpolation between two vectors and their tangents.
float shz_vec2_dot(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns the dot product between the two given 2D vectors.
float shz_vec3_max(shz_vec3_t vec) SHZ_NOEXCEPT
Returns the maximum value of the given vector's 3 components.
shz_vec4_t shz_vec4_normalize(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a normalized unit vector from the given 4D vector.
shz_vec2_t shz_vec2_ceil(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the ceil of the given vector's components.
shz_vec3_t shz_vec3_clamp(shz_vec3_t vec, float min, float max) SHZ_NOEXCEPT
Clamps the values of the given 3D vec between min and max, returning a new vector.
shz_vec3_t shz_vec3_div(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT
Returns a 3D vector whose component values are those of vec1 divided by vec2.
shz_vec3_t shz_vec3_minv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT
Returns a 3D vector whose components are the pairwise minimums of the two given vectors' components.
shz_vec2_t shz_vec2_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) SHZ_NOEXCEPT
Returns the two dot products taken between the 2D vector l and 2D vectors r1 and r2.
shz_vec3_t shz_vec3_from_angles(float azimuth, float elevation) SHZ_NOEXCEPT
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis in ...
shz_vec4_t shz_vec4
Alternate typedef for the shz_vec4 struct for those who hate POSIX-style.
shz_vec2_t shz_vec2_sign(shz_vec2_t vec) SHZ_NOEXCEPT
Returns a 2D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec4_t shz_vec4_ceil(shz_vec4_t vec) SHZ_NOEXCEPT
Returns a 4D vector whose components are the ceil of the given vector's components.
shz_vec2_t shz_vec2_sub(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT
Returns a 2D vector whose components are equal to the values of vec1 minus vec2.
shz_vec3_t shz_vec3_fract(shz_vec3_t vec) SHZ_NOEXCEPT
Returns a 3D vector whose components are the fractional parts of the given vector's components.
shz_vec2_t shz_vec2_smoothstep(shz_vec2_t vec, float edge0, float edge1) SHZ_NOEXCEPT
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
float shz_vec2_magnitude_sqr(shz_vec2_t vec) SHZ_NOEXCEPT
Returns the squared magnitude of the given 2D vector.
shz_vec2_t shz_vec2_init(float x, float y) SHZ_NOEXCEPT
Returns a 2D vector with the given x, and y coordinates.
shz_vec2_t shz_vec2_project(shz_vec2_t vec, shz_vec2_t onto) SHZ_NOEXCEPT
Returns the resulting vector from projecting the given 2D vector along the given (unit) axis.
shz_vec4_t shz_vec4_add(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT
Returns a 4D vector whose components are the sums of the given vectors' components.
shz_vec4_t shz_vec4_clamp(shz_vec4_t vec, float min, float max) SHZ_NOEXCEPT
Clamps the values of the given 4D vec between min and max, returning a new vector.
float e[2]
<X, Y> coordinates as an array
shz_vec2_t xy
Inner 2D vector containing <X, Y> coords.
float e[3]
<X, Y, Z> coordinates as an array
shz_vec2_t xy
<X, Y> coordinates as a 2D vector
float e[4]
<X, Y, Z, W> coordinates as an array.
shz_vec3_t xyz
<X, Y, Z> coordinates as a 3D vector
shz_vec2_t zw
<Z, W> coordinates as a 2D vector