diff --git a/isometric-park-fna/UI/Graph.cs b/isometric-park-fna/UI/Graph.cs --- a/isometric-park-fna/UI/Graph.cs +++ b/isometric-park-fna/UI/Graph.cs @@ -56,7 +56,8 @@ public static void DrawLinearAxis(ImDrawListPtr draw_list, Num.Vector2 range, bool vertical, int points, Num.Vector2 position) { - var tick_spacing = (int)Math.Abs((range.Y - range.X) / points); + //See DrawLinearLabels for explanation + var tick_spacing = (int)Math.Abs((range.Y - range.X) / (points - 1)); var tick_length = 5; var tick_adjust = vertical ? new Num.Vector2(tick_length, 0) : new Num.Vector2(0, tick_length); @@ -76,7 +77,10 @@ } public static async void DrawLinearLabels(ImFontPtr font, ImDrawListPtr draw_list, Num.Vector2 domain, Num.Vector2 range, bool vertical, int labels, Num.Vector2 starting_position) { - var tick_spacing = (int)Math.Abs((range.Y - range.X) / (labels)); + //We need to increment by one in order to cover the entire range. + //For example, if our range is 0 - 100, and we want 11 ticks, 100 / 10 gives us a spacing o 10 + //So our 11 labels become 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. + var tick_spacing = (int)Math.Abs((range.Y - range.X) / (labels - 1)); var tick_length = 5; var tick_adjust = vertical ? new Num.Vector2(tick_length, 0) : new Num.Vector2(0, tick_length); @@ -292,8 +296,8 @@ } } - DrawLinearAxis(draw_list, domain /*new Num.Vector2(0, 200)*/, true, 10, Num.Vector2.Add(c, new Num.Vector2(padding, padding))); - DrawLinearLabels(font, draw_list, domain, range /*new Num.Vector2(0, 200)*/, true, 10, c); + DrawLinearAxis(draw_list, domain /*new Num.Vector2(0, 200)*/, true, 11, Num.Vector2.Add(c, new Num.Vector2(padding, padding))); + DrawLinearLabels(font, draw_list, domain, range /*new Num.Vector2(0, 200)*/, true, 11, c); DrawLinearAxis(draw_list, new Num.Vector2(0, 350), false, 12, Num.Vector2.Add(c, new Num.Vector2(padding, 200 - padding))); ImGui.Dummy(new Num.Vector2(350, 200));