static public IList <CubeCoordinates> HexLinedraw(CubeCoordinates a, CubeCoordinates b)
        {
            int n       = CubeCoordinates.Distance(a, b);
            var a_nudge = new CubeFractionCoordinates(a.Q + 0.000001, a.R + 0.000001, a.S - 0.000002);
            var b_nudge = new CubeFractionCoordinates(b.Q + 0.000001, b.R + 0.000001, b.S - 0.000002);
            var results = new List <CubeCoordinates> {
            };
            double step = 1.0 / Math.Max(n, 1);

            for (int i = 0; i <= n; i++)
            {
                results.Add(HexLerp(a_nudge, b_nudge, step * i).Round());
            }
            return(results);
        }
 static public CubeFractionCoordinates HexLerp(CubeFractionCoordinates a, CubeFractionCoordinates b, double t)
 {
     return(new CubeFractionCoordinates(a.Q * (1 - t) + b.Q * t, a.R * (1 - t) + b.R * t, a.S * (1 - t) + b.S * t));
 }