Skip to content

Commit cfd006a

Browse files
authored
Matrix brackets (#2709)
* Fixed bracket warping for matrices * fixed bodge for bracket splitting * changed default value, removed old import * updated VectorScene test Co-authored-by: niklebedenko <nananananabatman>
1 parent 7802025 commit cfd006a

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

manim/mobject/matrix.py

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ def __init__(
141141
element_alignment_corner: Sequence[float] = DR,
142142
left_bracket: str = "[",
143143
right_bracket: str = "]",
144+
stretch_brackets: bool = True,
144145
bracket_config: dict = {},
145146
**kwargs,
146147
):
@@ -173,6 +174,8 @@ def __init__(
173174
The left bracket type, by default ``"["``.
174175
right_bracket
175176
The right bracket type, by default ``"]"``.
177+
stretch_brackets
178+
``True`` if should stretch the brackets to fit the height of matrix contents, by default ``True``.
176179
bracket_config
177180
Additional arguments to be passed to :class:`~.MathTex` when constructing
178181
the brackets.
@@ -190,6 +193,7 @@ def __init__(
190193
self.element_alignment_corner = element_alignment_corner
191194
self.left_bracket = left_bracket
192195
self.right_bracket = right_bracket
196+
self.stretch_brackets = stretch_brackets
193197
super().__init__(**kwargs)
194198
mob_matrix = self._matrix_to_mob_matrix(matrix)
195199
self._organize_mob_matrix(mob_matrix)
@@ -241,14 +245,41 @@ def _add_brackets(self, left="[", right="]", **kwargs):
241245
The current matrix object (self).
242246
"""
243247

244-
bracket_pair = MathTex(left, right, **kwargs)
245-
bracket_pair.scale(2)
246-
bracket_pair.stretch_to_fit_height(self.height + 2 * self.bracket_v_buff)
247-
l_bracket, r_bracket = bracket_pair.split()
248+
# Height per row of LaTeX array with default settings
249+
BRACKET_HEIGHT = 0.5977
250+
251+
n = int((self.height) / BRACKET_HEIGHT) + 1
252+
empty_tex_array = "".join(
253+
[
254+
r"\begin{array}{c}",
255+
*n * [r"\quad \\"],
256+
r"\end{array}",
257+
]
258+
)
259+
tex_left = "".join(
260+
[
261+
r"\left" + left,
262+
empty_tex_array,
263+
r"\right.",
264+
]
265+
)
266+
tex_right = "".join(
267+
[
268+
r"\left.",
269+
empty_tex_array,
270+
r"\right" + right,
271+
]
272+
)
273+
l_bracket = MathTex(tex_left, **kwargs)
274+
r_bracket = MathTex(tex_right, **kwargs)
275+
276+
bracket_pair = VGroup(l_bracket, r_bracket)
277+
if self.stretch_brackets:
278+
bracket_pair.stretch_to_fit_height(self.height + 2 * self.bracket_v_buff)
248279
l_bracket.next_to(self, LEFT, self.bracket_h_buff)
249280
r_bracket.next_to(self, RIGHT, self.bracket_h_buff)
281+
self.brackets = bracket_pair
250282
self.add(l_bracket, r_bracket)
251-
self.brackets = VGroup(l_bracket, r_bracket)
252283
return self
253284

254285
def get_columns(self):
Binary file not shown.

0 commit comments

Comments
 (0)