Laboratório de Relações Métricas

As relações métricas no triângulo retângulo são equações matemáticas que conectam as medidas dos seus lados, da altura e das projeções dos catetos sobre a hipotenusa. Neste experimento, tente calcular a medida desconhecida utilizando as informações fornecidas no gráfico! Se precisar de ajuda, consulte o quadro de fórmulas abaixo do exercício.

Aguardando o Python...

Montando laboratório...

Guia Completo de Fórmulas

Em um triângulo retângulo onde a é a hipotenusa, b e c são os catetos, h é a altura relativa à hipotenusa, e m e n são as projeções dos catetos, aplicam-se as seguintes relações principais:

  • Altura e Projeções: \( h^2 = m \cdot n \)
    O quadrado da altura é igual ao produto das projeções dos catetos.
  • Catetos e Projeções: \( b^2 = a \cdot m \) e \( c^2 = a \cdot n \)
    O quadrado de um cateto é igual ao produto da hipotenusa pela sua projeção correspondente.
  • Produto dos Lados: \( a \cdot h = b \cdot c \)
    O produto da hipotenusa pela altura é igual ao produto dos catetos.
  • Soma das Projeções: \( a = m + n \)
    A hipotenusa é a soma exata das duas projeções.
  • Teorema de Pitágoras: \( a^2 = b^2 + c^2 \)
    O quadrado da hipotenusa é igual à soma dos quadrados dos catetos.
packages = ["matplotlib", "numpy"] import matplotlib.pyplot as plt import numpy as np import math import random from pyscript import display from js import document current_ex = {} def criar_figura(m, n, tipo): plt.close('all') a = m + n h = math.sqrt(m * n) b = math.sqrt(a * m) c = math.sqrt(a * n) fig, ax = plt.subplots(figsize=(7, 5), facecolor='white', dpi=100) A, B, C = [-n, 0], [m, 0], [0, h] # Desenhando o triângulo e a altura ax.plot([A[0], B[0], C[0], A[0]], [A[1], B[1], C[1], A[1]], color='#38703b', lw=3) ax.plot([0, 0], [0, h], color='red', linestyle='--', lw=2) # ALTERAÇÃO: Desenhando as etiquetas baseadas no tipo de pergunta gerada if tipo == 'h': ax.text(-n/2, -0.5, f"n = {n}", ha='center', fontsize=10, fontweight='bold') ax.text(m/2, -0.5, f"m = {m}", ha='center', fontsize=10, fontweight='bold') ax.text(0.2, h/2, "h = ?", color='red', fontweight='bold', fontsize=10) elif tipo == 'a': ax.text(-n/2, -0.5, f"n = {n}", ha='center', fontsize=10, fontweight='bold') ax.text(m/2, -0.5, f"m = {m}", ha='center', fontsize=10, fontweight='bold') ax.text((m-n)/2, -1.2, "a = ?", color='red', fontweight='bold', fontsize=10) ax.plot([-n, m], [-0.8, -0.8], color='red', lw=1) elif tipo == 'b': ax.text((m-n)/2, -1.2, f"a = {a}", ha='center', fontsize=10, fontweight='bold') ax.plot([-n, m], [-0.8, -0.8], color='black', lw=1) ax.text(m/2, -0.5, f"m = {m}", ha='center', fontsize=10, fontweight='bold') ax.text(m/2 + 0.3, h/2 + 0.3, "b = ?", color='red', fontweight='bold', fontsize=10) elif tipo == 'c': ax.text((m-n)/2, -1.2, f"a = {a}", ha='center', fontsize=10, fontweight='bold') ax.plot([-n, m], [-0.8, -0.8], color='black', lw=1) ax.text(-n/2, -0.5, f"n = {n}", ha='center', fontsize=10, fontweight='bold') ax.text(-n/2 - 0.5, h/2 + 0.3, "c = ?", color='red', fontweight='bold', fontsize=10) # Marcando os ângulos ax.scatter([0], [0], color='black', s=30, zorder=5) ax.scatter([-n], [0], color='black', s=30, zorder=5) ax.scatter([m], [0], color='black', s=30, zorder=5) ax.scatter([0], [h], color='red', s=30, zorder=5) # Adicionando letras nos vértices ax.text(0, -0.3, 'Pé da altura', ha='center', fontsize=8, color='gray') ax.text(-n-0.3, -0.2, 'A', ha='center', fontsize=12, fontweight='bold') ax.text(m+0.3, -0.2, 'B', ha='center', fontsize=12, fontweight='bold') ax.text(0.2, h+0.2, 'C', ha='center', fontsize=12, fontweight='bold') ax.set_aspect('equal') ax.axis('off') # Ajustando limites dinamicamente para os novos textos não cortarem ax.set_xlim(-n-1, m+1) ax.set_ylim(-2, h+1) plt.tight_layout() return fig def gerar_novo_exercicio(event=None): global current_ex m, n = random.randint(2, 9), random.randint(2, 9) a = m + n h = math.sqrt(m * n) b = math.sqrt(a * m) c = math.sqrt(a * n) # ALTERAÇÃO: Sorteia um tipo de pergunta tipos = ['h', 'a', 'b', 'c'] tipo = random.choice(tipos) if tipo == 'h': pergunta = f"As projeções dos catetos medem {m} e {n}. Qual a medida da altura (h)?" resposta = f"h ≈ {h:.2f}" explicacao = f"Fórmula: h² = m * n → h² = {m} * {n} = {m*n} → h = √{m*n} ≈ {h:.2f}" elif tipo == 'a': pergunta = f"As projeções dos catetos medem {m} e {n}. Qual a medida da hipotenusa (a)?" resposta = f"a = {a}" explicacao = f"Fórmula: a = m + n → a = {m} + {n} = {a}" elif tipo == 'b': pergunta = f"A hipotenusa mede {a} e uma projeção mede {m}. Qual a medida do cateto correspondente (b)?" resposta = f"b ≈ {b:.2f}" explicacao = f"Fórmula: b² = a * m → b² = {a} * {m} = {a*m} → b = √{a*m} ≈ {b:.2f}" elif tipo == 'c': pergunta = f"A hipotenusa mede {a} e uma projeção mede {n}. Qual a medida do cateto correspondente (c)?" resposta = f"c ≈ {c:.2f}" explicacao = f"Fórmula: c² = a * n → c² = {a} * {n} = {a*n} → c = √{a*n} ≈ {c:.2f}" current_ex = { 'pergunta': pergunta, 'resposta': resposta, 'explicacao': explicacao, 'fig': criar_figura(m, n, tipo) } document.getElementById("pergunta").innerText = current_ex['pergunta'] document.getElementById("explicacao").innerHTML = "" target = document.getElementById("output_grafico") target.innerHTML = "" display(current_ex['fig'], target="#output_grafico") def mostrar_resposta(event=None): if 'resposta' in current_ex: explicacao_html = ' Resposta: ' + current_ex['resposta'] + '
' + current_ex['explicacao'] document.getElementById("explicacao").innerHTML = explicacao_html gerar_novo_exercicio()