Fixed bug where radians were not converted properly (malex)
This commit is contained in:
		| @@ -37,6 +37,19 @@ | |||||||
|  |  | ||||||
| #define PI  3.1415926535897932384626433832795 | #define PI  3.1415926535897932384626433832795 | ||||||
|  |  | ||||||
|  | static REAL FromRadians(REAL angle, int radix) | ||||||
|  | { | ||||||
|  | 	switch (radix) | ||||||
|  | 	{ | ||||||
|  | 		case 1:         /* degrees, sexagesimal system (technically: degrees/minutes/seconds) */ | ||||||
|  | 			return (REAL)(angle / PI * 180.0); | ||||||
|  | 		case 2:         /* grades, centesimal system */ | ||||||
|  | 			return (REAL)(angle / PI * 200.0); | ||||||
|  | 		default:        /* assume already radian */ | ||||||
|  | 			return angle; | ||||||
|  | 	} /* switch */ | ||||||
|  | } | ||||||
|  |  | ||||||
| #if defined __BORLANDC__ || defined __WATCOMC__ | #if defined __BORLANDC__ || defined __WATCOMC__ | ||||||
|   #pragma argsused |   #pragma argsused | ||||||
| #endif | #endif | ||||||
| @@ -357,6 +370,7 @@ static cell AMX_NATIVE_CALL n_floatatan(AMX *amx, cell *params) | |||||||
| 	REAL fA = amx_ctof(params[1]); | 	REAL fA = amx_ctof(params[1]); | ||||||
| 	fA = ToRadians(fA, params[2]); | 	fA = ToRadians(fA, params[2]); | ||||||
| 	fA = atan(fA); | 	fA = atan(fA); | ||||||
|  | 	fA = FromRadians(fA, params[2]); | ||||||
| 	return amx_ftoc(fA); | 	return amx_ftoc(fA); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -373,6 +387,7 @@ static cell AMX_NATIVE_CALL n_floatacos(AMX *amx, cell *params) | |||||||
| 	REAL fA = amx_ctof(params[1]); | 	REAL fA = amx_ctof(params[1]); | ||||||
| 	fA = ToRadians(fA, params[2]); | 	fA = ToRadians(fA, params[2]); | ||||||
| 	fA = acos(fA); | 	fA = acos(fA); | ||||||
|  | 	fA = FromRadians(fA, params[2]); | ||||||
| 	return amx_ftoc(fA); | 	return amx_ftoc(fA); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -389,6 +404,7 @@ static cell AMX_NATIVE_CALL n_floatasin(AMX *amx, cell *params) | |||||||
| 	REAL fA = amx_ctof(params[1]); | 	REAL fA = amx_ctof(params[1]); | ||||||
| 	fA = ToRadians(fA, params[2]); | 	fA = ToRadians(fA, params[2]); | ||||||
| 	fA = asin(fA); | 	fA = asin(fA); | ||||||
|  | 	fA = FromRadians(fA, params[2]); | ||||||
| 	return amx_ftoc(fA); | 	return amx_ftoc(fA); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -407,6 +423,7 @@ static cell AMX_NATIVE_CALL n_floatatan2(AMX *amx, cell *params) | |||||||
| 	REAL fB = amx_ctof(params[2]); | 	REAL fB = amx_ctof(params[2]); | ||||||
| 	REAL fC; | 	REAL fC; | ||||||
| 	fC = atan2(fA, fB); | 	fC = atan2(fA, fB); | ||||||
|  | 	fC = FromRadians(fA, params[3]); | ||||||
| 	return amx_ftoc(fC); | 	return amx_ftoc(fC); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user