abril 28, 2026

Bissetriz em Código

Por admin

Sobre a Matemática

Bissetriz é uma semi-reta de origem no vértice do ângulo que o divide em dois ângulos congruentes.

Como a divisão de um ângulo por um inteiro conduz a um único resultado, podemos concluir que a bissetriz de um ângulo é única.

Sobre o Código

Na linguagem de programação Python,

import – é o comando usado para trazer bibliotecas externas ou módulos para o código.

numpy – é a biblioteca para cálculos numéricos, vetores, matrizes e funções matemáticas.

matplotlib – é a biblioteca de visualização gráfica.

.pyplot – é o submódulo do Matplotlib que fornece funções para criar gráficos de forma simples.

def – é a palavra‑chave usada para definir uma função.

float – é o tipo numérico que representa números reais (com casas decimais).

.deg2rad() – é a função do NumPy que converte graus para radianos.

.cos() – é a função que calcula o cosseno de um ângulo (em radianos).

.sin() – é a função que calcula o seno de um ângulo (em radianos).

.subplots() – cria uma figura e um ou mais eixos (áreas de desenho) no Matplotlib.

figsize= – é o parâmetro que define o tamanho da figura (largura, altura).

.arrow() – desenha uma seta em um gráfico Matplotlib.

head_width= – define a largura da ponta da seta.

length_includes_head= – indica se o comprimento total inclui a ponta da seta.

.linspace() – gera uma sequência de valores igualmente espaçados entre dois limites.

.plot() – desenha linhas ou curvas em um gráfico.

color= – define a cor de um elemento gráfico.

.text() – escreve texto em uma posição específica do gráfico.

fr'$ – inicia uma f-string com suporte a LaTeX (formatação matemática).

.1f – é a formatação numérica: 1 casa decimal em ponto flutuante.

circ$ – é a parte de uma expressão LaTeX que representa o símbolo de grau °.

ha= – horizontal alignment: alinhamento horizontal do texto (left, center, right).

va= – vertical alignment: alinhamento vertical do texto (top, center, bottom).

.set_xlim() – define os limites do eixo X.

.set_ylim() – define os limites do eixo Y.

.axhline() – desenha uma linha horizontal no gráfico.

.axvline() – desenha uma linha vertical no gráfico.

linewidth= – define a espessura de uma linha.

.set_title() – define o título do gráfico.

.legend() – exibe a legenda do gráfico.

loc= – define a posição da legenda (ex.: “upper right”).

.grid() – ativa ou configura a grade do gráfico.

linestyle= – define o estilo da linha (-, –, :, etc.).

alpha= – define a transparência (0 = invisível, 1 = opaco).

.show() – exibe o gráfico na tela.

print() – exibe texto no console.

try: – inicia um bloco que tenta executar um código que pode gerar erro.

except: – é o bloco executado caso ocorra um erro no try.

ValueError – é o tipo de erro lançado quando um valor é inválido (ex.: converter texto em número).

% – é o operador módulo: retorna o resto da divisão.

if: – é a estrutura condicional: executa um bloco se a condição for verdadeira.

else: – é o bloco executado quando o if é falso.

f"..{}" – é a f-string: permite inserir variáveis dentro de uma string.

__main__ – é o nome especial que indica que o arquivo está sendo executado diretamente.

# – é usado para criar comentários ao código, que são notas para se entender melhor o que o código faz.

Vamos ao código…

import numpy as np
import matplotlib.pyplot as plt

def plot_angle_and_bisector(theta_deg: float):
    """
    Plota um ângulo com vértice na origem e sua bissetriz.
    
    theta_deg: medida do ângulo em graus (entre 0 e 360).
    O ângulo é formado entre o eixo positivo x (0°) e o raio em theta_deg.
    """
    # Converte para radianos
    theta = np.deg2rad(theta_deg)
    
    # Vetores unitários para os lados do ângulo
    # Primeiro lado: ao longo do eixo x positivo (0°)
    x1, y1 = np.cos(0), np.sin(0)
    # Segundo lado: em theta
    x2, y2 = np.cos(theta), np.sin(theta)
    
    # Bissetriz: ângulo médio
    theta_bis = theta / 2
    xb, yb = np.cos(theta_bis), np.sin(theta_bis)
    
    # Cria figura
    fig, ax = plt.subplots(figsize=(6, 6))
    
    # Plota os lados do ângulo
    ax.arrow(0, 0, x1, y1, head_width=0.05, length_includes_head=True, color='blue', label='Lado 1')
    ax.arrow(0, 0, x2, y2, head_width=0.05, length_includes_head=True, color='green', label='Lado 2')
    
    # Plota a bissetriz
    ax.arrow(0, 0, xb, yb, head_width=0.05, length_includes_head=True, color='red', label='Bissetriz')
    
    # Arco para representar o ângulo original
    arc_t = np.linspace(0, theta, 100)
    arc_x = 0.4 * np.cos(arc_t)
    arc_y = 0.4 * np.sin(arc_t)
    ax.plot(arc_x, arc_y, color='black')
    ax.text(0.45 * np.cos(theta / 2), 0.45 * np.sin(theta / 2),
            fr'$\theta = {theta_deg:.1f}^\circ$', ha='center', va='center')
    
    # Arco para representar metade do ângulo (bissetriz)
    arc_t_half = np.linspace(0, theta_bis, 100)
    arc_x_half = 0.25 * np.cos(arc_t_half)
    arc_y_half = 0.25 * np.sin(arc_t_half)
    ax.plot(arc_x_half, arc_y_half, color='red', linestyle='--')
    ax.text(0.3 * np.cos(theta_bis / 2), 0.3 * np.sin(theta_bis / 2),
            fr'$\theta/2 = {theta_deg/2:.1f}^\circ$', color='red', ha='center', va='center')
    
    # Configurações do gráfico
    ax.set_xlim(-1.1, 1.1)
    ax.set_ylim(-1.1, 1.1)
    ax.set_aspect('equal', 'box')
    ax.axhline(0, color='gray', linewidth=0.5)
    ax.axvline(0, color='gray', linewidth=0.5)
    ax.set_title('Bissetriz de um ângulo e sua unicidade')
    ax.legend(loc='upper right')
    plt.grid(True, linestyle='--', alpha=0.3)
    plt.show()
Código Python (.py)O que faz
import numpy as npImporta a biblioteca NumPy e dá a ela o apelido np, para facilitar o uso de funções matemáticas (como seno, cosseno, radianos etc.).
import matplotlib.pyplot as pltImporta o módulo pyplot da biblioteca Matplotlib com o apelido plt, usado para criar gráficos e figuras.
def plot_angle_and_bisector(theta_deg: float):Define a função plot_angle_and_bisector, que recebe um ângulo em graus (theta_deg) do tipo float e será responsável por desenhar o ângulo e sua bissetriz.
“””…”””Docstring (comentário de documentação) da função.
theta = np.deg2rad(theta_deg)Converte o ângulo de graus para radianos, pois as funções trigonométricas do NumPy usam radianos.
x1, y1 = np.cos(0), np.sin(0)Calcula as coordenadas do primeiro vetor: cosseno e seno de 0 radianos, resultando em (1, 0), um vetor unitário no eixo x.
x2, y2 = np.cos(theta), np.sin(theta)Calcula as coordenadas do segundo vetor: cosseno e seno de theta radianos, representando o outro lado do ângulo.
theta_bis = theta / 2Calcula o ângulo da bissetriz em radianos, que é a metade de theta.
xb, yb = np.cos(theta_bis), np.sin(theta_bis)Calcula as coordenadas do vetor unitário na direção da bissetriz, usando cosseno e seno de theta_bis.
fig, ax = plt.subplots(figsize=(6, 6))Cria uma figura (fig) e um eixo (ax) com tamanho 6×6, onde tudo será desenhado.
ax.arrow(0, 0, x1, y1, head_width=0.05, length_includes_head=True, color=’blue’, label=’Lado 1′)Desenha uma seta (vetor) a partir da origem até (x1, y1) em azul, representando o primeiro lado do ângulo, com rótulo ‘Lado 1’.
ax.arrow(0, 0, x2, y2, head_width=0.05, length_includes_head=True, color=’green’, label=’Lado 2′)Desenha uma seta da origem até (x2, y2) em verde, representando o segundo lado do ângulo, com rótulo ‘Lado 2’.
ax.arrow(0, 0, xb, yb, head_width=0.05, length_includes_head=True, color=’red’, label=’Bissetriz’)Desenha uma seta da origem até (xb, yb) em vermelho, representando a bissetriz, com rótulo ‘Bissetriz’.
arc_t = np.linspace(0, theta, 100)Cria 100 valores igualmente espaçados entre 0 e theta, representando os ângulos do arco.
arc_x = 0.4 * np.cos(arc_t)Calcula as coordenadas x do arco, com raio 0.4, usando cosseno de cada valor em arc_t.
arc_y = 0.4 * np.sin(arc_t)Calcula as coordenadas y do arco, com raio 0.4, usando seno de cada valor em arc_t.
ax.plot(arc_x, arc_y, color=’black’)Desenha o arco do ângulo original em preto.
ax.text(0.45 * np.cos(theta / 2), 0.45 * np.sin(theta / 2),Define a posição do texto que mostrará o valor de θ, em um ponto próximo ao meio do arco.
fr’$\theta = {theta_deg:.1f}^\circ$’, ha=’center’, va=’center’)Escreve o texto com LaTeX mostrando o valor do ângulo em graus, centralizando horizontal e verticalmente.
arc_t_half = np.linspace(0, theta_bis, 100)Cria 100 valores entre 0 e theta_bis, para o arco da metade do ângulo.
arc_x_half = 0.25 * np.cos(arc_t_half)Calcula as coordenadas x do arco da metade do ângulo, com raio 0.25.
arc_y_half = 0.25 * np.sin(arc_t_half)Calcula as coordenadas y do arco da metade do ângulo, com raio 0.25.
ax.plot(arc_x_half, arc_y_half, color=’red’, linestyle=’–‘)Desenha o arco da metade do ângulo em vermelho, com linha tracejada.
ax.text(0.3 * np.cos(theta_bis / 2), 0.3 * np.sin(theta_bis / 2),Define a posição do texto que mostrará θ/2, em um ponto próximo ao arco menor.
fr’$\theta/2 = {theta_deg/2:.1f}^\circ$’, color=’red’, ha=’center’, va=’center’)Escreve o texto com LaTeX mostrando o valor de θ/2 em graus, em vermelho, centralizado.
ax.set_xlim(-1.1, 1.1)Define os limites do eixo x de -1.1 a 1.1, para enquadrar bem as setas.
ax.set_ylim(-1.1, 1.1)Define os limites do eixo y de -1.1 a 1.1.
ax.set_aspect(‘equal’, ‘box’)Garante que a escala dos eixos x e y seja igual, para não distorcer os ângulos.
ax.axhline(0, color=’gray’, linewidth=0.5)Desenha a linha horizontal (eixo x) em cinza claro.
ax.axvline(0, color=’gray’, linewidth=0.5)Desenha a linha vertical (eixo y) em cinza claro.
ax.set_title(‘Bissetriz de um ângulo e sua unicidade’)Define o título do gráfico como “Bissetriz de um ângulo e sua unicidade”.
ax.legend(loc=’upper right’)Mostra a legenda (Lado 1, Lado 2, Bissetriz) no canto superior direito.
plt.grid(True, linestyle=’–‘, alpha=0.3)Ativa a grade do gráfico com linhas tracejadas e transparência leve.
plt.show()Exibe a janela com o gráfico na tela.
def main():
    print("Visualização da bissetriz de um ângulo.")
    print("A bissetriz é a semi-reta que divide o ângulo em dois ângulos congruentes.")
    try:
        theta_deg = float(input("Digite a medida do ângulo em graus (por exemplo, 60, 120, 210): "))
    except ValueError:
        print("Entrada inválida. Usando valor padrão de 60 graus.")
        theta_deg = 60.0
    
    # Normaliza o ângulo para [0, 360)
    theta_deg = theta_deg % 360
    if theta_deg == 0:
        print("Um ângulo de 0° não possui abertura para ser bissetado de forma usual.")
    else:
        print(f"Ângulo escolhido: {theta_deg:.1f}°")
        print(f"A bissetriz terá direção correspondente a {theta_deg/2:.1f}° em relação ao eixo x positivo.")
    
    plot_angle_and_bisector(theta_deg)

if __name__ == "__main__":
    main()
Código Python (.py)O que faz
def main():Define a função principal main, que vai interagir com o usuário e chamar a função de plotagem.
print(“Visualização da bissetriz de um ângulo.”)Imprime uma mensagem introdutória explicando o que o programa faz.
print(“A bissetriz é a semi-reta que divide o ângulo em dois ângulos congruentes.”)Imprime uma frase conceitual sobre bissetriz.
try:Inicia um bloco try para tentar ler a entrada do usuário com segurança.
theta_deg = float(input(“Digite a medida do ângulo em graus (por exemplo, 60, 120, 210): “))Pede ao usuário um valor de ângulo em graus, lê como string, converte para float e armazena em theta_deg.
except ValueError:Se a conversão para float falhar (entrada inválida), entra neste bloco.
print(“Entrada inválida. Usando valor padrão de 60 graus.”)Informa ao usuário que a entrada foi inválida e que será usado o valor padrão de 60°.
theta_deg = 60.0Define theta_deg como 60.0 graus.
theta_deg = theta_deg % 360Usa o operador módulo para garantir que theta_deg fique no intervalo [0, 360).
if theta_deg == 0:Verifica se o ângulo é exatamente 0 graus.
print(“Um ângulo de 0° não possui abertura para ser bissetado de forma usual.”)Se for 0°, informa que não há abertura para bissetar o ângulo de forma usual.
else:Caso contrário (ângulo diferente de 0°), entra neste bloco.
print(f”Ângulo escolhido: {theta_deg:.1f}°”)Imprime o valor do ângulo escolhido, formatado com uma casa decimal.
print(f”A bissetriz terá direção correspondente a {theta_deg/2:.1f}° em relação ao eixo x positivo.”)Informa a direção da bissetriz em graus, que é metade do ângulo, em relação ao eixo x positivo.
plot_angle_and_bisector(theta_deg)Chama a função plot_angle_and_bisector para desenhar o ângulo e sua bissetriz com o valor theta_deg.
if __name__ == “__main__”:Verifica se o arquivo está sendo executado diretamente (e não importado como módulo).
main()Se estiver sendo executado diretamente, chama a função main() para iniciar o programa.

Saída do código (valor de retorno)…

Visualização da bissetriz de um ângulo.
A bissetriz é a semi-reta que divide o ângulo em dois ângulos congruentes.
Ângulo escolhido: 60.0°
A bissetriz terá direção correspondente a 30.0° em relação ao eixo x positivo.

Fonte:

  • Editora Didática Paulista. Ensino Didático 2000: Ensino Fundamental e Ensino Médio. Sorocaba: Editora Didática Paulista, [s.d.].
  • Códigos e comentários gerados por Microsoft Copilot com revisão nossa.
  • https://docs.python.org/pt-br/3/ [Documentação Oficial do Python]