1#ifndef NW4R_MATH_TRIANGULAR_H 
    2#define NW4R_MATH_TRIANGULAR_H 
    3#include <nw4r/types_nw4r.h> 
    5#include <nw4r/math/math_arithmetic.h> 
    6#include <nw4r/math/math_constant.h> 
   14#define NW4R_MATH_IDX_TO_FIDX(x) ((x) * (1.0f / 256.0f)) 
   17#define NW4R_MATH_DEG_TO_FIDX(x) ((x) * (256.0f / 360.0f)) 
   18#define NW4R_MATH_FIDX_TO_DEG(x) ((x) * (360.0f / 256.0f)) 
   21#define NW4R_MATH_RAD_TO_FIDX(x) ((x) * (128.0f / NW4R_MATH_PI)) 
   22#define NW4R_MATH_FIDX_TO_RAD(x) ((x) * (NW4R_MATH_PI / 128.0f)) 
   25#define NW4R_MATH_DEG_TO_RAD(x) ((x) * (NW4R_MATH_PI / 180.0f)) 
   26#define NW4R_MATH_RAD_TO_DEG(x) ((x) * (180.0f / NW4R_MATH_PI)) 
   38inline float SinF(
float ang) {
 
   39    return SinFIdx(NW4R_MATH_IDX_TO_FIDX(ang));
 
   41inline f32 SinIdx(
short idx) {
 
   42    return SinF(U16ToF32(idx));
 
   44inline f32 SinDeg(f32 deg) {
 
   45    return SinFIdx(NW4R_MATH_DEG_TO_FIDX(deg));
 
   47inline f32 SinRad(f32 rad) {
 
   48    return SinFIdx(NW4R_MATH_RAD_TO_FIDX(rad));
 
   58inline float CosF(
float ang) {
 
   59    return CosFIdx(NW4R_MATH_IDX_TO_FIDX(ang));
 
   61inline f32 CosIdx(
short idx) {
 
   62    return CosF(U16ToF32(idx));
 
   64inline f32 CosDeg(f32 deg) {
 
   65    return CosFIdx(NW4R_MATH_DEG_TO_FIDX(deg));
 
   67inline f32 CosRad(f32 rad) {
 
   68    return CosFIdx(NW4R_MATH_RAD_TO_FIDX(rad));
 
   76inline f32 TanFIdx(f32 fidx) {
 
   77    return std::tanf(NW4R_MATH_FIDX_TO_RAD(fidx));
 
   79inline f32 TanDeg(f32 deg) {
 
   80    return TanFIdx(NW4R_MATH_DEG_TO_FIDX(deg));
 
   82inline f32 TanRad(f32 rad) {
 
   83    return TanFIdx(NW4R_MATH_RAD_TO_FIDX(rad));
 
   91void SinCosFIdx(f32* pSin, f32* pCos, f32 fidx);
 
   93inline void SinCosDeg(f32* pSin, f32* pCos, f32 deg) {
 
   94    return SinCosFIdx(pSin, pCos, NW4R_MATH_DEG_TO_FIDX(deg));
 
   96inline void SinCosRad(f32* pSin, f32* pCos, f32 rad) {
 
   97    return SinCosFIdx(pSin, pCos, NW4R_MATH_RAD_TO_FIDX(rad));
 
  107inline f32 AtanDeg(f32 x) {
 
  108    return NW4R_MATH_FIDX_TO_DEG(AtanFIdx(x));
 
  110inline f32 AtanRad(f32 x) {
 
  111    return NW4R_MATH_FIDX_TO_RAD(AtanFIdx(x));
 
  119f32 Atan2FIdx(f32 y, f32 x);
 
  121inline f32 Atan2Deg(f32 y, f32 x) {
 
  122    return NW4R_MATH_FIDX_TO_DEG(Atan2FIdx(y, x));
 
  124inline f32 Atan2Rad(f32 y, f32 x) {
 
  125    return NW4R_MATH_FIDX_TO_RAD(Atan2FIdx(y, x));