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)); }