⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 float.java

📁 一个非常好的赛车游戏代码
💻 JAVA
字号:
public class Float
{
	public static final long VALUE_ONE = 1000;

	public static final long PI = 3142;

	private static final long SIN_TABLE[] =
	{
		0, 173, 342, 500, 643, 766, 866, 940, 985, 1000
	};

	private static final long COS_TABLE[] =
	{
		1000, 985, 940, 866, 766, 643, 500, 342, 173, 0
	};

	private Float() {}

	public static long createFloat(long integer)
	{
		if (integer > Long.MAX_VALUE / Float.VALUE_ONE)
		    throw new RuntimeException("Integer too large.");
		return integer * Float.VALUE_ONE;
	}

	public static long createFloat(long integer, long fraction)
	{
		if (integer > Long.MAX_VALUE / Float.VALUE_ONE)
		    throw new RuntimeException("Integer too large.");
		if (fraction > Float.VALUE_ONE - 1)
		    throw new RuntimeException("Fraction too large.");
		return integer * Float.VALUE_ONE + fraction;
	}

	public static long getInteger(long value)
	{
		return value / Float.VALUE_ONE;
	}

	public static long getFraction(long value)
	{
		return value % Float.VALUE_ONE;
	}

	public static long add(long value1, long value2)
	{
		return value1 + value2;
	}

	public static long sub(long value1, long value2)
	{
		return value1 - value2;
	}

	public static long mul(long value1, long value2)
	{
		return value1 * value2 / Float.VALUE_ONE;
	}

	public static long div(long value1, long value2)
	{
		return value1 * Float.VALUE_ONE / value2;
	}

	public static long inv(long value)
	{
		return Float.div(Float.VALUE_ONE, value);
	}

	public static long abs(long value)
	{
		if (value < 0)
		    value = - value;
		return value;
	}

	public static long sign(long value)
	{
		return (value < 0 ? -1 : 1);
	}

	public static long sin(long value)
	{
		value = value % Float.createFloat(360);
		long sign = 1;
		if (value > Float.createFloat(180))
		{
		  value = value - Float.createFloat(360);
		  sign = -1;
		}
		long abs = Float.abs(value);
		if (abs > Float.createFloat(90))
		    abs = Float.createFloat(180) - abs;
		if (abs == Float.createFloat(90))
		    return Float.createFloat(1);
		if (abs == Float.createFloat(0))
		    return Float.createFloat(0);
		int x1 = (int)Float.getInteger(Float.div(abs, Float.createFloat(10)));
		int x2 = x1 + 1;
		long y1 = SIN_TABLE[x1];
		long y2 = SIN_TABLE[x2];
		long k = Float.div(Float.sub(y2, y1), Float.sub(x2, x1));
		return sign * Float.add(y1, Float.mul(k, Float.sub(abs, x1)));
  }

	public static long cos(long value)
	{
		value = value % Float.createFloat(360);
		long sign = -1;
		if (value > Float.createFloat(180))
		{
		  value = value - Float.createFloat(360);
		}
		if (value >= Float.createFloat(-90) &&
		    value <= Float.createFloat(90))
		    sign = 1;
		long abs = Float.abs(value);
		if (abs > Float.createFloat(90))
		    abs = Float.createFloat(180) - abs;
		if (abs == Float.createFloat(90))
		    return Float.createFloat(0);
		if (abs == Float.createFloat(0))
		    return Float.createFloat(1);
		int x1 = (int)Float.getInteger(Float.div(abs, Float.createFloat(10)));
		int x2 = x1 + 1;
		long y1 = COS_TABLE[x1];
		long y2 = COS_TABLE[x2];
		long k = Float.div(Float.sub(y2, y1), Float.sub(x2, x1));
		return sign * Float.add(y1, Float.mul(k, Float.sub(abs, x1)));
	}

	public static long tan(long value)
	{
		return Float.div(Float.sin(value), Float.cos(value));
	}

	public static long toDeg(long value)
	{
		return Float.div(Float.mul(value, Float.createFloat(180)), Float.PI);
	}

	public static long toRad(long value)
	{
		return Float.div(Float.mul(value, Float.PI), Float.createFloat(180));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -