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

static test

parent fc254f61
No related branches found
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