Я хочу убедиться, что подход, который я использую для отображения массива, не является неудобным решением для лучшего подхода, о котором я не знаю. Многое из того, что у меня есть до сих пор, кажется довольно неудобным.
Для элементов интервалов Я устанавливаю каждый элемент массива TextMobject .next_to предыдущий элемент справа с буфером. Есть ли лучший подход?
Для прямоугольников вокруг элементов Я собирался нарисовать верхнюю и нижнюю линии на всю ширину массива отдельно, а затем провести вертикальные линии между элементами. Я не предполагаю, что буду заботиться об анимации рисования этих блоков различными способами, хотя я планирую выделять элементы, используя для этого существующие инструменты. Есть ли лучший подход?
Вот мой код "привет, мир". Любые предложения / улучшения приветствуются!
class ExampleArray(Scene):
def construct(self):
n = 6
labels = TextMobject(* ["[" + str(index) + "]" for index in range(n)] )
text = TextMobject( *[str(random.randint(0,10)) for i in range(n) ] )
# space it out
for i in range(1,len(text)):
text[i].next_to(text[i-1], RIGHT, buff = 0.8)
text.move_to(ORIGIN)
for i in range(len(labels)):
labels[i].scale(0.5)
labels[i].next_to( text[i], DOWN, buff = 0.5)
# can I just make a copy of top_line?
top_line = Line(text.get_left() + LEFT, text.get_right() + RIGHT)
bottom_line = Line(text.get_left() + LEFT, text.get_right() + RIGHT)
top_line.next_to(text, UP)
bottom_line.next_to(text, DOWN)
self.add(labels)
self.add(top_line, bottom_line)
for i in range(len(text)):
self.play(Write(text[i]))
self.wait(0.1)