From a1f4015dba2816bdef83d54898b4237500148a5c Mon Sep 17 00:00:00 2001 From: hari387 Date: Fri, 6 Oct 2023 17:18:17 -0500 Subject: [PATCH 1/6] use np.isclose for float equality in number line elongated ticks --- manim/mobject/graphing/number_line.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index 08f6ef48fa..52894c9d4a 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -279,7 +279,7 @@ def add_ticks(self): elongated_tick_size = self.tick_size * self.longer_tick_multiple for x in self.get_tick_range(): size = self.tick_size - if x in self.numbers_with_elongated_ticks: + if np.any(np.isclose(x, self.numbers_with_elongated_ticks)): size = elongated_tick_size ticks.add(self.get_tick(x, size)) self.add(ticks) From 2880738da5ef2f9776ad25ffc6a9faebc4de2c0e Mon Sep 17 00:00:00 2001 From: hari387 Date: Tue, 10 Oct 2023 18:23:27 -0500 Subject: [PATCH 2/6] use offsets relative to x_min to tell if we need to elongate a tick --- manim/mobject/graphing/number_line.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index 52894c9d4a..1035a29a74 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -277,9 +277,10 @@ def add_ticks(self): via ``self.ticks``.""" ticks = VGroup() elongated_tick_size = self.tick_size * self.longer_tick_multiple + elongated_tick_offsets = self.numbers_with_elongated_ticks for x in self.get_tick_range(): size = self.tick_size - if np.any(np.isclose(x, self.numbers_with_elongated_ticks)): + if np.any(np.isclose(x - self.x_min, elongated_tick_offsets)): size = elongated_tick_size ticks.add(self.get_tick(x, size)) self.add(ticks) From 4a796c58715f83dc246806d2a22f904ba3228c11 Mon Sep 17 00:00:00 2001 From: hari387 Date: Tue, 10 Oct 2023 18:27:31 -0500 Subject: [PATCH 3/6] forgot to subtract to create list of offsets --- manim/mobject/graphing/number_line.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index 1035a29a74..aec3bfb533 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -277,7 +277,7 @@ def add_ticks(self): via ``self.ticks``.""" ticks = VGroup() elongated_tick_size = self.tick_size * self.longer_tick_multiple - elongated_tick_offsets = self.numbers_with_elongated_ticks + elongated_tick_offsets = self.numbers_with_elongated_ticks - self.x_min for x in self.get_tick_range(): size = self.tick_size if np.any(np.isclose(x - self.x_min, elongated_tick_offsets)): From e6a76609853c0b19d7a07f63c35e5e1255c419c2 Mon Sep 17 00:00:00 2001 From: hari387 Date: Wed, 11 Oct 2023 18:37:01 -0500 Subject: [PATCH 4/6] add test for elongated ticks float equality --- tests/module/mobject/graphing/test_ticks.py | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/module/mobject/graphing/test_ticks.py b/tests/module/mobject/graphing/test_ticks.py index eeac2ac0a1..8b50bf55e2 100644 --- a/tests/module/mobject/graphing/test_ticks.py +++ b/tests/module/mobject/graphing/test_ticks.py @@ -1,6 +1,7 @@ from __future__ import annotations import numpy as np +import math from manim import PI, Axes, NumberLine @@ -13,6 +14,27 @@ def test_duplicate_ticks_removed_for_axes(): assert np.unique(ticks).size == ticks.size +def test_elongated_ticks_float_equality(): + nline = NumberLine( + x_range=[1 + 1e-5, 1 + 2e-5, 1e-6], + numbers_with_elongated_ticks=[ + 1 + 12e-6, + 1 + 17e-6, + ], # Elongate the 3rd and 8th tick + include_ticks=True, + ) + + tick_heights = set(tick.height for tick in nline.ticks) + default_tick_height, elongated_tick_height = min(tick_heights), max(tick_heights) + + assert all( + tick.height == elongated_tick_height + if ind in [2, 7] + else tick.height == default_tick_height + for ind, tick in enumerate(nline.ticks) + ) + + def test_ticks_not_generated_on_origin_for_axes(): axes = Axes( x_range=[-10, 10], From cd27381cd0644ea9241dedd2411d660ef4570896 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 23:37:45 +0000 Subject: [PATCH 5/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/module/mobject/graphing/test_ticks.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/module/mobject/graphing/test_ticks.py b/tests/module/mobject/graphing/test_ticks.py index 8b50bf55e2..04613d2bb8 100644 --- a/tests/module/mobject/graphing/test_ticks.py +++ b/tests/module/mobject/graphing/test_ticks.py @@ -1,8 +1,9 @@ from __future__ import annotations -import numpy as np import math +import numpy as np + from manim import PI, Axes, NumberLine @@ -24,7 +25,7 @@ def test_elongated_ticks_float_equality(): include_ticks=True, ) - tick_heights = set(tick.height for tick in nline.ticks) + tick_heights = {tick.height for tick in nline.ticks} default_tick_height, elongated_tick_height = min(tick_heights), max(tick_heights) assert all( From 217f875b011424c68179c5522d1f9a5817b83213 Mon Sep 17 00:00:00 2001 From: Narahari Rao Date: Wed, 11 Oct 2023 18:45:13 -0500 Subject: [PATCH 6/6] Remove unused import --- tests/module/mobject/graphing/test_ticks.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/module/mobject/graphing/test_ticks.py b/tests/module/mobject/graphing/test_ticks.py index 04613d2bb8..5bc5eb1604 100644 --- a/tests/module/mobject/graphing/test_ticks.py +++ b/tests/module/mobject/graphing/test_ticks.py @@ -1,7 +1,5 @@ from __future__ import annotations -import math - import numpy as np from manim import PI, Axes, NumberLine