
unit Pack
{
	public const uint16 ID = 0;

	#include <system\common\math\bitwise_verification.txt>

	int32 Angle;
	int32 R;
	
	int32 X;
	int32 Y;
	
	//---------------------------------------------------
	//[i] function_void OS_init;
	public void OS_init()
	{
		
	}
	//---------------------------------------------------
	//[i] function_void SetCoor int32 int32;
	public void SetCoor( int32 x, int32 y )
	{
		X = x;
		Y = y;
		int32 r = X * X + Y * Y;
		R = (int)bitwise_verification( (uint)r );
		if( R == 0 ) {
			return;
		}
		int32 AX = +X;
		int32 AY = +Y;
		uint16 P;
		if( AX < AY ) {
			P = (uint16)(uint)(AX*100/R);
			P + (uint16)(uint)(AX*200/R%2);
			Angle = 90 - (int)Asin_List[P];
		}
		else {
			P = (uint16)(uint)(AY*100/R);
			P + (uint16)(uint)(AX*200/R%2);
			Angle = (int)Asin_List[P];
		}
		if( X < 0 ) {
			Angle = 180 - Angle;
		}
		if( Y < 0 ) {
			Angle = 360 - Angle;
		}
	}
	///[i] function_int32 getX;
	public int32 getX()
	{
		return X;
	}
	///[i] function_int32 getY;
	public int32 getY()
	{
		return Y;
	}
	//---------------------------------------------------
	///[i] function_void SetAngleR int32 int32;
	public void SetAngleR( int32 a, int32 r )
	{
		Angle = a;
		R = r;
		
		//Ҫ
	}
	//[i] function_int32 getA;
	public int32 getA()
	{
		return Angle;
	}
	//[i] function_int32 getR;
	public int32 getR()
	{
		return R;
	}
	
	//---------------------------------------------------
	//ƺ
	//Angle = 90 * (R - xx) / R;
	//Angle = D180 - 90 * (R - xx) / R;
	
	//, Һ (45Ƚò, ̫)
	[#.code uint8*?] Asin_List = [
	0,  1,  1,  2,  2,  3,  3,  4,  5,  5,	//0
	6,  6,  7,  7,  8,  9,  9, 10, 10, 11,	//10
	12, 12, 13, 13, 14, 14, 15, 16, 16, 17,	//20
	17, 18, 19, 19, 20, 20, 21, 22, 22, 23,	//30
	24, 24, 25, 25, 26, 27, 27, 28, 29, 29,	//40
	30, 31, 31, 32, 33, 33, 34, 35, 35, 36,	//50
	37, 38, 38, 39, 40, 41, 41, 42, 43, 44,	//60
	44, 45, 46, 47, 48, 49, 49, 50, 51, 52,	//70
	53, 54, 55, 56, 57, 58, 59, 60, 62, 63,	//80
	64, 66, 67, 68, 70, 72, 74, 76, 79, 82,	//90
	90,
	];
//	[#.code uint8*?] Acos_List = [
//	 	 90, 89, 89, 88, 88, 87, 87, 86, 85, 85,	//0
//		 84, 84, 83, 83, 82, 81, 81, 80, 80, 79,	//10
//		 78, 78, 77, 77, 76, 76, 75, 74, 74, 73,	//20
//		 73, 72, 71, 71, 70, 70, 69, 68, 68, 67,	//30
//		 66, 66, 65, 65, 64, 63, 63, 62, 61, 61,	//40
//		 60, 59, 59, 58, 57, 57, 56, 55, 55, 54,	//50
//		 53, 52, 52, 51, 50, 49, 49, 48, 47, 46,	//60
//		 46, 45, 44, 43, 42, 41, 41, 40, 39, 38,	//70
//		 37, 36, 35, 34, 33, 32, 31, 30, 28, 27,	//80
//		 26, 24, 23, 22, 20, 18, 16, 14, 11,  8,	//90
//		  0,
//	];
}













