1#ifndef NW_MATH_TRIANGULAR_H_
2#define NW_MATH_TRIANGULAR_H_
4#include <nw/math/math_Constant.h>
20namespace nw {
namespace math {
22#define NW_MATH_RAD_TO_IDX(rad) (static_cast<u32>(static_cast<s64>((rad) * (::nw::math::I_HALF_ROUND_IDX / ::nw::math::F_PI))))
23#define NW_MATH_DEG_TO_IDX(deg) (static_cast<u32>(static_cast<s64>((deg) * (::nw::math::I_HALF_ROUND_IDX / 180.0f
))))
24#define NW_MATH_DEG_TO_RAD(deg) ((deg) * (::nw::math::F_PI / 180.0f
))
25#define NW_MATH_RAD_TO_DEG(rad) ((rad) * (180.0f
/ ::nw::math::F_PI))
26#define NW_MATH_IDX_TO_RAD(idx) ((idx) * (::nw::math::F_PI / ::nw::math::I_HALF_ROUND_IDX))
27#define NW_MATH_IDX_TO_DEG(idx) ((idx) * (180.0f
/ ::nw::math::I_HALF_ROUND_IDX))
31 return rad * (180.0f / F_PI);
36 return deg * (F_PI / 180.0f);
41 u32 index = (idx >> 24) & 0xff;
42 u32 rest = idx & 0xffffff;
49 u32 index = (idx >> 24) & 0xff;
50 u32 rest = idx & 0xffffff;
57 u32 index = (idx >> 24) & 0xff;
58 f32 rest =
static_cast<f32>(idx & 0xffffff) / 0x1000000;
61 *pSin = table->sin_val + table->sin_delta * rest;
62 *pCos = table->cos_val + table->cos_delta * rest;
67 u32 index = (idx >> 24) & 0xff;
68 f32 rest =
static_cast<f32>(idx & 0xffffff) / 0x1000000;
71 return (table->sin_val + table->sin_delta * rest) / (table->cos_val + table->cos_delta * rest);
74#pragma clang diagnostic push
75#pragma clang diagnostic ignored "-Wimplicit-int-float-conversion"
119#pragma clang diagnostic pop
#define NW_MATH_DEG_TO_IDX(deg)
Definition math_Triangular.h:23
#define NW_MATH_RAD_TO_IDX(rad)
Definition math_Triangular.h:22
Definition math_Triangular.cpp:3
const SinCosSample gSinCosTbl[256+1]
Definition math_Triangular.cpp:5
Definition math_Constant.cpp:5
f32 TanIdx(u32 idx)
Definition math_Triangular.h:65
f32 SinRad(f32 rad)
Definition math_Triangular.h:77
f32 SinIdx(u32 idx)
Definition math_Triangular.h:39
f32 TanDeg(f32 deg)
Definition math_Triangular.h:112
f32 SinDeg(f32 deg)
Definition math_Triangular.h:97
void SinCosIdx(f32 *pSin, f32 *pCos, u32 idx)
Definition math_Triangular.h:55
f32 CosRad(f32 rad)
Definition math_Triangular.h:82
f32 TanRad(f32 rad)
Definition math_Triangular.h:92
void SinCosDeg(f32 *pSin, f32 *pCos, f32 deg)
Definition math_Triangular.h:107
void SinCosRad(f32 *pSin, f32 *pCos, f32 rad)
Definition math_Triangular.h:87
f32 CosDeg(f32 deg)
Definition math_Triangular.h:102
f32 RadToDeg(f32 rad)
Definition math_Triangular.h:29
f32 DegToRad(f32 deg)
Definition math_Triangular.h:34
f32 CosIdx(u32 idx)
Definition math_Triangular.h:47
Definition math_Constant.cpp:5
Definition math_Triangular.h:9
f32 cos_val
Definition math_Triangular.h:12
f32 sin_delta
Definition math_Triangular.h:11
f32 sin_val
Definition math_Triangular.h:10
f32 cos_delta
Definition math_Triangular.h:13