1#ifndef NNGN_MATH_VEC3_H
2#define NNGN_MATH_VEC3_H
12struct vec3_base :
public vec<vec3_base, T, 3> {
25 constexpr vec2_base<T> v0 ## v1() const { return {this->v0, this->v1}; }
30#define S(v0, v1, v2) \
31 constexpr vec3_base<T> v0 ## v1 ## v2() const \
32 { return {this->v0, this->v1, this->v2}; }
46struct vec_type<
T, 3> : std::type_identity<vec3_base<T>> {};
48using ivec3 = vec3_base<std::int32_t>;
49using uvec3 = vec3_base<std::uint32_t>;
50using zvec3 = vec3_base<std::size_t>;
51using vec3 = vec3_base<float>;
52using dvec3 = vec3_base<double>;
54static_assert(offsetof(ivec3, y) ==
sizeof(ivec3::type));
55static_assert(offsetof(uvec3, y) ==
sizeof(uvec3::type));
56static_assert(offsetof(
vec3, y) ==
sizeof(vec3::type));
57static_assert(offsetof(dvec3, y) ==
sizeof(dvec3::type));
58static_assert(offsetof(ivec3,
z) ==
sizeof(ivec3::type) * 2);
59static_assert(offsetof(uvec3,
z) ==
sizeof(uvec3::type) * 2);
60static_assert(offsetof(
vec3,
z) ==
sizeof( vec3::type) * 2);
61static_assert(offsetof(dvec3,
z) ==
sizeof(dvec3::type) * 2);
vec3
Definition: zelda.lua:8
v[1]
Definition: math.lua:19
#define S(v0, v1)
Definition: vec3.h:30
constexpr vec3_base(T p_x, T p_y)
Definition: vec3.h:16
constexpr vec3_base(const vec2_base< T > &v)
Definition: vec3.h:18
constexpr vec3_base()=default
constexpr vec3_base(const vec2_base< T > &v, T p_z)
Definition: vec3.h:20
constexpr vec3_base(T p_x, T p_y, T p_z)
Definition: vec3.h:17
constexpr vec3_base(T p_x, const vec2_base< T > &v)
Definition: vec3.h:22
constexpr vec3_base(T v)
Definition: vec3.h:15