diff --git a/Single-Header/dn_single_header.cpp b/Single-Header/dn_single_header.cpp index 38f1519..01abfa4 100644 --- a/Single-Header/dn_single_header.cpp +++ b/Single-Header/dn_single_header.cpp @@ -1,4 +1,4 @@ -// Generated by the DN single header generator 2026-07-30 15:06:15 +// Generated by the DN single header generator 2026-07-30 18:59:43 // DN: Single header generator commented out => #if defined(_CLANGD) // #define DN_WITH_TESTS 1 diff --git a/Single-Header/dn_single_header.h b/Single-Header/dn_single_header.h index 9b4a39f..71cbab5 100644 --- a/Single-Header/dn_single_header.h +++ b/Single-Header/dn_single_header.h @@ -1,4 +1,4 @@ -// Generated by the DN single header generator 2026-07-30 15:06:15 +// Generated by the DN single header generator 2026-07-30 18:59:42 #if !defined(DN_H) #define DN_H diff --git a/Source/dn.cpp b/Source/dn.cpp index 06acade..429fdcb 100644 --- a/Source/dn.cpp +++ b/Source/dn.cpp @@ -6790,6 +6790,12 @@ DN_API DN_V2F32 DN_V2F32Lerp(DN_V2F32 a, DN_F32 t, DN_V2F32 b) return result; } +DN_API DN_V2F32 DN_V2F32Rotate(DN_V2F32 v, DN_F32 cos_a, DN_F32 sin_a) +{ + DN_V2F32 result = DN_V2F32From2N(v.x * cos_a - v.y * sin_a, v.x * sin_a + v.y * cos_a); + return result; +} + DN_API bool operator!=(DN_V2F32 lhs, DN_V2F32 rhs) { bool result = !(lhs == rhs); diff --git a/Source/dn.h b/Source/dn.h index ccf6a0d..cedb5f5 100644 --- a/Source/dn.h +++ b/Source/dn.h @@ -3507,10 +3507,16 @@ DN_API DN_V2U16& operator/= DN_API DN_V2U16& operator-= (DN_V2U16& lhs, DN_V2U16 rhs); DN_API DN_V2U16& operator+= (DN_V2U16& lhs, DN_V2U16 rhs); -#define DN_V2U32Zero DN_Literal(DN_V2U32){{(DN_U32)(0), (DN_U32)(0)}} -#define DN_V2U32One DN_Literal(DN_V2U32){{(DN_U32)(1), (DN_U32)(1)}} -#define DN_V2U32From1N(x) DN_Literal(DN_V2U32){{(DN_U32)(x), (DN_U32)(x)}} -#define DN_V2U32From2N(x, y) DN_Literal(DN_V2U32){{(DN_U32)(x), (DN_U32)(y)}} +// NOTE: DN_V2F32 +// API +// DN_V2F32Rotate +// Rotate a vector using the precomputed cosine and sine value of the angle (e.g. +// `cos_a => cos(your_angle * 2.f * DN_PiF32)` and `sin_a => sinf(your_angle * 2.f * DN_PiF32)`) +#define DN_V2U32Zero DN_Literal(DN_V2U32){{(DN_U32)(0), (DN_U32)(0)}} +#define DN_V2U32One DN_Literal(DN_V2U32){{(DN_U32)(1), (DN_U32)(1)}} +#define DN_V2U32From1N(x) DN_Literal(DN_V2U32){{(DN_U32)(x), (DN_U32)(x)}} +#define DN_V2U32From2N(x, y) DN_Literal(DN_V2U32){{(DN_U32)(x), (DN_U32)(y)}} +#define DN_V2U32FromV2(v2) DN_Literal(DN_V2U32){{(DN_U32)(v2.x), (DN_U32)(v2.y)}} #define DN_V2F32Zero DN_Literal(DN_V2F32){{(DN_F32)(0), (DN_F32)(0)}} #define DN_V2F32One DN_Literal(DN_V2F32){{(DN_F32)(1), (DN_F32)(1)}} @@ -3519,6 +3525,7 @@ DN_API DN_V2U16& operator+= #define DN_V2F32FromV2(xy) DN_Literal(DN_V2F32){{(DN_F32)(xy).x, (DN_F32)(xy).y}} DN_API DN_V2F32 DN_V2F32Lerp (DN_V2F32 a, DN_F32 t, DN_V2F32 b); +DN_API DN_V2F32 DN_V2F32Rotate (DN_V2F32 v, DN_F32 cos_a, DN_F32 sin_a); DN_API bool operator!= (DN_V2F32 lhs, DN_V2F32 rhs); DN_API bool operator== (DN_V2F32 lhs, DN_V2F32 rhs);