public static CubeFraction CubeLerp( Cube a, Cube b, float t ) { CubeFraction af = new CubeFraction((float)a.x, (float)a.y, (float)a.z); CubeFraction bf = new CubeFraction((float)b.x, (float)b.y, (float)b.z); return new CubeFraction(af.x + (bf.x - af.x) * t, af.y + (bf.y - af.y) * t, af.z + (bf.z - af.z) * t); }
public static Cube CubeRound(CubeFraction cubePoint) { float rx = Mathf.Round(cubePoint.x); float ry = Mathf.Round(cubePoint.y); float rz = Mathf.Round(cubePoint.z); float x_diff = Mathf.Abs(rx - cubePoint.x); float y_diff = Mathf.Abs(ry - cubePoint.y); float z_diff = Mathf.Abs(rz - cubePoint.z); if ( x_diff > y_diff && x_diff > z_diff ) rx = -ry - rz; else if ( y_diff > z_diff ) ry = -rx - rz; else rz = -rx - ry; return new Cube((int)rx, (int)ry, (int)rz); }