Skip to content
Snippets Groups Projects
Commit 6d1f15cf authored by 이장원's avatar 이장원
Browse files

static test

parent fc254f61
Branches
No related tags found
No related merge requests found
Images/after_modify.png

119 KiB

Images/before_modify.png

170 KiB

File deleted
This diff is collapsed.
#ifndef __VGE_MATH_H__
#define __VGE_MATH_H__
#include <math.h>
#ifndef VGE_API_CALL
#define VGE_API_CALL extern
#endif
#ifndef VGE_EXT_CALL
#define VGE_EXT_CALL extern
#endif
#if defined(__cplusplus)
extern "C" {
#endif
typedef long fixed32;
typedef long fixed32q14;
typedef unsigned long ufixed32;
#if defined(WIN32)
typedef __int64 fixed64;
#else
typedef long long fixed64;
#endif
#define __FX32__
#define FX32_QNUM 16
#define FX32_QMULT 65536
#define FLOAT_QMULT 65536.0F
#define FX32_QMASK 0x0000FFFF
#define FX32_IMASK 0xFFFF0000
#define FX32_MAX_VALUE 0x7FFFFF7C
#define FX32_1_1000 0x00000041
#define FX32_25_100 0x00004000
#define FX32_99_100 0x0000FD70
#define FX32_0 0x00000000
#define FX32_1_2 0x00008000
#define FX32_1_3 0x00005555
#define FX32_1 0x00010000
#define FX64_1 ((fixed64)(0x0000000100000000))
#define FX32_2 0x00020000
#define FX32_3 0x00030000
#define FX32_4 0x00040000
#define FX32_5 0x00050000
#define FX32_6 0x00060000
#define FX32_8 0x00080000
#define FX32_10 0x000A0000
#define FX32_15 0x000F0000
#define FX32_30 0x001E0000
#define FX32_45 0x002D0000
#define FX32_90 0x005A0000
#define FX32_128 0x00800000
#define FX32_180 0x00B40000
#define FX32_255 0x00FF0000
#define FX32_360 0x01680000
#define FX32_100 0x00640000
#define FX32_1000 0x03E80000
#define FX32_10000 0x27100000
#define FX32_GAUSSIANBLUR 0x00006620
#define FX32_GAUSSIAN_TOLERANCE 0x00027B47
#define FX32_SIN45 0x0000B504
#define FX32_SIN30 0x00008000
#define FX32_SIN15 0x00004241
#define FX32_SIN10 0x00002C74
#define FX32_SIN5 0x00001653
#define FX32_COS45 0x0000B504
#define FX32_COS30 0x0000DDB3
#define FX32_COS15 0x0000F746
#define FX32_COS10 0x0000FC1C
#define FX32_COS5 0x0000FF07
#define FX32_PI 0x0003243F
#define FX32_180_PI 0x00394BB8
#define FX32_PI_180 0x00000477
#define FX32_RT2 0x00016A09
#define FX32_1_RT2 0x0000B504
#define int_fx32(__a) (fixed32) ((__a) << (FX32_QNUM))
#define fx32_int(__a) ((__a) >> FX32_QNUM)
#define float_fx32(__a) ((fixed32)((__a) * FLOAT_QMULT))
#define fx32_float(__a) ((float)(__a) / (FLOAT_QMULT))
#define fx32_abs(__a) ((__a) >= 0 ? (__a) : (-(__a)))
#define fx32_round_to_int(__x) ((__x + 0x8000) >> FX32_QNUM)
#define fx32_degree(__r) (fx32_mul((__r),FX32_180_PI))
#define fx32_radian(__d) (fx32_mul((__d),FX32_PI_180))
#define fx32_floor(x) ((fixed32)((x)&0xFFFF0000))
#define fx32_round(x) ((fixed32)(((x)+0x00008000)&0xFFFF0000)) // V4 HYL Moved from vgeMath.c
#define fx32_ceil(x) ((fixed32)(((x)+0x0000FFFF)&0xFFFF0000)) // V4 HYL Moved from vgeMath.c
#define fx32_round_at(x,n) ((fixed32)(((x)&(0xFFFFFFFF<<(n+1)))+(((x)&(1<<(n))<<1)))) // V4 HYL Moved from vgeMath.c
#define fx32_lmul(fa, fb) (fixed32)(((fixed64)(fa) * (fb)) >> FX32_QNUM ) // be careful : Overflow
#define fx32_mul(fa, fb) (fixed32)(((fixed64)(fa) * (fb)) >> FX32_QNUM ) // be careful : Overflow
#define fx32_qmul_dcs(fa, fb) ((fixed32)(((fa>>11) * fb)>>5)) // only use dynamic curve slice
#define fx32_imul(fa, k) ((fa) * (k)) // be careful : Overflow
#define fx32_muli(fa, k) ((fa) * (k)) // be careful : Overflow
#define fx32q14_mul(a,b) (((a) * (b)) >> 14) // it is used for 0.xxxx x 0.yyyyyy
#define fx32_mul_q16q14(fa, fb) (((fa)>>8) * ((fb)>>6)) // Return Value is fx32q16
#define fx32_mul_q14q16(fa, fb) (((fa)>>6) * ((fb)>>8)) // Return Value is fx32q16
#if defined(__ALEXVG_CTS_PASS__)
#define fx32_qmul(fa, fb) fx32_mul(fa, fb)
#define fx32_qmul106(fa, fb) fx32_mul(fa, fb)
#define fx32_qmul97(fa, fb) fx32_mul(fa, fb)
#define fx32_Nmul(fa, fb) fx32_mul(fa, fb)
#define fx32_tmul(__a,__b) fx32_mul(fa,fb)
#define fx32_qdiv(fa, fb) fx32_div(fa,fb)
#define fx32_qdiv2(fa, fb) fx32_div(fa,fb)
#define fx32_qdiv3(fa, fb) fx32_div(fa,fb)
#else
#define fx32_qmul(fa, fb) (((fa)>>10) * ((fb)>>6))
//#define fx32_qmul(fa, fb) fx32_mul(fa, fb)
#define fx32_qmul106(fa, fb) (((fa)>>10) * ((fb)>>6))
#define fx32_qmul97(fa, fb) (((fa)>>9) * ((fb)>>7))
#define fx32_Nmul(fa, fb) ((((fa)>>2) * ((fb)>>2))>>12) // For Normalize Multiply
#define fx32_tmul(__a,__b) (((__a) * (__b)) >> FX32_QNUM // it is used for 0.xxxx x 0.yyyyyy
#define fx32_qdiv(fa, fb) ((((0x7FFFFFFF/fb))*(fa>>5))>>10) // HYL It is used only for Rasterization
#define fx32_qdiv2(fa, fb) ((((fa)<<8)/(fb))<<8) // It Cannot be used for Big Number
#define fx32_qdiv3(fa, fb) ((fa)/((fb)>>16)) // It Cannot be used for Big Number
#endif
#define fx32_div(fa, fb) (fixed32)( (((fixed64)(fa) << FX32_QNUM) /(fb))) // be careful : Overflow & divide by 0
#define fx32_div_q16q14(fa, fb) (fixed32)( (((fixed64)(fa) << 14) /(fb))) // be careful : Overflow & divide by 0
#define fx32_divi(fa, ia) ((fa)/(ia)) // be careful : Overflow & divide by 0
#define fx32_idiv(ia, fb) (fixed32)( (((ia)<<FX32_QNUM)/((fb)>>8)) >>8)
#define fx32_mod(__a, __b) (((__b) == 0) ? 0 : ((__a) % (__b)))
#define fx32_exp( __a) float_fx32((float)(exp ( fx32_float((__a)) ))) //window 함수 사용해도 성능에 문제 없음.
#define fx32_cosd(fa) fx32_sind(FX32_90 - (fixed32)fa)
#define fx32_tand(fa) fx32_mul ( fx32_sind((fixed32)fa) , fx32_secd((fixed32)fa) )//fixed32 fx32_tand(fixed32 fa);
#define fx32_cosecd(fa) fx32_secd( (fixed32)fa - FX32_90); //fixed32 fx32_cosecd(fixed32 fa); // 1/sind(__a)
#define fx32_acosd(fa) (FX32_90-fx32_asind((fixed32)fa)) //fixed32 fx32_acosd (fixed32 fa);
#define fx32_cosec(__a) fx32_cosecd(fx32_degree(__a)) // 1/sin(__a)
#define fx32_sec(__a) fx32_secd(fx32_degree(__a)) // 1/cos(__a)
#define fx32_cotan(__a) fx32_cotand(fx32_degree(__a)) // 1/tan(__a)
#define fx32_asin(__a) fx32_asind(fx32_degree(__a))
#define fx32_acos(__a) fx32_acosd(fx32_degree(__a))
#define fx32_atan(__a) fx32_atand(fx32_degree(__a))
#define fx32_atan2(_y, _x ) fx32_radian(fx32_atan2d(fx32_degree(_y), fx32_degree(_x)))
#define fx32_PbyMA(R,P,M) {(R)[0]=(fixed32)(((fixed64)((M)[0])*(fixed64)((P)[0])+(fixed64)((M)[3])*(fixed64)((P)[1]))>>16)+((M)[6]);\
(R)[1]=(fixed32)(((fixed64)((M)[1])*(fixed64)((P)[0])+(fixed64)((M)[4])*(fixed64)((P)[1]))>>16)+((M)[7]);}
//{(R)[0]=(fixed32)(((fixed64)((M)[0])*(P)[0]+(M)[3]*(P)[1])>>16)+(M)[6];\ (R)[1]=(fixed32)(((fixed64)((M)[1])*(P)[0]+(M)[4]*(P)[1])>>16)+(M)[7];}
fixed32 fx32_sqrt (fixed32 fa);
fixed32 fx32_sqrt_inv (fixed32 fa);
fixed32 fx32_norm2 (fixed32 fa, fixed32 fb);
fixed32 fx32_normalize (fixed32 fa, fixed32 fb, fixed32q14 *na, fixed32q14 *nb);
fixed32 fx32_sind (fixed32 fa);
fixed32 fx32_secd (fixed32 fa); // 1/cosd(__a)
fixed32 fx32_cotand (fixed32 fa); // 1/tand(__a)
fixed32 fx32_asind (fixed32 fa);
fixed32 fx32_atand (fixed32 fa);
fixed32 fx32_atan2d (fixed32 fy, fixed32 fx);
void fx32_sincosd(fixed32 fa, fixed32 *fb, fixed32 *fc);
/* 엔진에서 사용하는 Common Function. */
#define EPSILON_ZERO FX32_1_1000
#define EPSILON_ONE 0xFFFF
#define PI FX32_PI
#define MINMAX( X, L, H ) ( (((X) > (H)) ? (H) : ((X) < (L)) ? (L) : (X)) )
#define MAX( X, Y ) ( ( (X) > (Y) ) ? (X) : (Y) )
#define MIN( X, Y ) ( ( (X) < (Y) ) ? (X) : (Y) )
#define ABS( X ) ( ( (X) < 0 ) ? -(X) : (X) )
#define CROSSPRODUCT( a0, a1, b0, b1 ) ( fx32_mul(a0,b1) - fx32_mul(a1,b0) )
/* Platform dependent Stdlib Function */
#define MOD fx32_mod
#define FLOOR fx32_floor
#define CEIL fx32_ceil
#define SQRT fx32_sqrt
#define SINCOS fx32_sincosd
#define ATAN fx32_atand
#define ATAN2 fx32_atan2d
#define NORM2 fx32_norm2
#if defined(__cplusplus)
} /* extern "C" */
#endif
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment