Geometria básica em figuras
Geometria
Uma ilustração curta para cada ideia da nota de geometria básica: paralelas, ângulos notáveis, semelhança de triângulos, áreas, circunferências e, no espaço, planos perpendiculares, cones planificados e a relação de Euler.
Cada capítulo deste vídeo ilustra uma ideia da nota Geometria básica: uma visão abrangente, que segue o Manual de iniciativas em Geometria, escrito à mão por Marcelo Dias Carvalho. A nota tem uma figura interativa para cada ideia; o vídeo mostra as mesmas ideias em movimento, uma depois da outra.
Feito com o Manim Community v0.22. Os trechos abaixo são as partes principais do código, cada um seguido de uma explicação curta.
Como o código funciona
1. Uma única função marca todos os ângulos
def amark(O, A, B, r=0.45, color=CA, label=None, fs=30, fill=0.35, lbuff=0.22):
"""The (non-reflex) angle AOB: arc, filled sector and an optional label."""
O, A, B = np.array(O, dtype=float), np.array(A, dtype=float), np.array(B, dtype=float)
a1, a2 = ang(A - O), ang(B - O)
1 d = (a2 - a1 + PI) % (2 * PI) - PI
arc = Arc(radius=r, start_angle=a1, angle=d, arc_center=O, color=color, stroke_width=3)
pts = [arc.point_from_proportion(t) for t in np.linspace(0, 1, 24)]
2 sec = Polygon(O, *pts, stroke_width=0, fill_color=color, fill_opacity=fill)- 1
- A diferença entre as duas direções, trazida para \((-\pi,\pi]\): o arco sempre vai pelo caminho mais curto, qualquer que seja a ordem em que os pontos são dados.
- 2
- O setor preenchido é um polígono que passa pelo vértice e por pontos do arco; assim, ele acompanha o arco exatamente.
2. Marcas que acompanham uma figura em movimento
1 a = ValueTracker(62 * DEGREES)
def pts():
d = np.array([math.cos(a.get_value()), math.sin(a.get_value()), 0])
Pp = np.array([1.2 / math.tan(a.get_value()), 1.2, 0])
Q = np.array([-1.2 / math.tan(a.get_value()), -1.2, 0])
return d, Pp, Q
2 marks = always_redraw(lambda: VGroup(
amark(pts()[1], pts()[1] + LEFT, pts()[2], 0.6, CA, r"\alpha"),
amark(pts()[2], pts()[2] + RIGHT, pts()[1], 0.6, CB, r"\theta"),
...))
3 self.play(a.animate.set_value(118 * DEGREES), run_time=3)- 1
- A inclinação da transversal é um número que pode ser animado.
- 2
- Os dois ângulos alternos são redesenhados a cada quadro a partir da inclinação atual.
- 3
- Girar a transversal mantém \(\alpha=\theta\) na tela, que é a ideia do capítulo.
3. Cada capítulo anota quando começa
- 1
-
O instante do vídeo em que o capítulo começa. No fim da renderização, esses tempos são salvos em
basic_geometry_chapters.json; os links da nota os usam para abrir o vídeo no capítulo certo. - 2
- Títulos e legendas ficam fixos na tela, também nos capítulos de geometria espacial, em que a câmera gira em torno dos sólidos.
4. Planificando um cilindro
- 1
- \(\lambda\in[0,1]\) mede quanto da superfície já foi planificado.
- 2
- No meio do caminho, a superfície é um pedaço de um cilindro mais largo, de raio \(\rho=r/(1-\lambda)\), tangente ao original ao longo de uma geratriz; quando \(\lambda\to1\), o raio vai para o infinito e o pedaço fica plano.
- 3
- \(s\) é o comprimento de arco na base, que a planificação preserva: no fim, a base vira um segmento de comprimento \(2\pi r\), e a superfície lateral, o retângulo \(2\pi r\times h\). O cone é planificado do mesmo modo, com cones de geratriz fixa \(g\) cujo raio da base cresce de \(r\) até \(g\).