Implemente a função area_poligono(matriz). Esta função calculará a área de um polígono convexo cujos vértices estão na matriz ( N times 2-N indeterminado). Dicas: utilize a função area_triangulo(mat) que calcula a área de um triângulo. Em um quadrilátero com vértices X1, X2, X3 e X4, a área do mesmo consiste da soma dos triângulos com vértices (X1, X2 e X3) e (X1, X3 e X4).

Passo 1

Beleza, vamos começar entendendo o que o exercício pede. Precisamos implementar uma função chamada area_poligono(matriz) que calcula a área de um polígono convexo. Os vértices desse polígono estão fornecidos em uma matriz com N linhas e 2 colunas, onde N é o número de vértices. Para resolver isso, vamos precisar dividir o polígono em triângulos menores, calcular a área de cada triângulo usando a função area_triangulo(mat) e somar essas áreas para obter a área total do polígono.

Passo 2

Primeiro, vamos pensar em como dividir o polígono convexo em triângulos. Uma forma comum é selecionar um vértice fixo (por exemplo, o primeiro vértice) e formar triângulos com esse vértice e dois vértices consecutivos. Isso funciona bem para polígonos convexos porque não há cruzamento das diagonais.

Passo 3

Vamos supor que temos um polígono com vértices ordenados como . Vamos fixar como o vértice comum e formar triângulos , , e assim por diante, até .

Passo 4

Para cada desses triângulos, vamos usar a função area_triangulo(mat) que já está disponível. Essa função recebe uma matriz com as coordenadas dos três vértices do triângulo e retorna a área desse triângulo.

Passo 5

Vamos somar todas as áreas dos triângulos formados para obter a área total do polígono. Essa soma será a nossa resposta final.

Passo 6

Agora, vamos colocar isso tudo em código. Vou escrever uma função em Python que segue esses passos. Lembre-se de que você precisa ter a função area_triangulo(mat) já definida para que isso funcione.
def area_poligono(matriz):
    """
    Calcula a área de um polígono convexo dado seus vértices.
    
    :param matriz: Lista de listas ou array com as coordenadas dos vértices, onde cada sub-lista tem 2 elementos [x, y]
    :return: Área do polígono
    """
    if len(matriz) < 3:
        return 0  # Não é um polígono
    
    area_total = 0
    vertice_fixo = matriz[0]
    
    for i in range(1, len(matriz) - 1):
        triangulo = [vertice_fixo, matriz[i], matriz[i + 1]]
        area = area_triangulo(triangulo)
        area_total += area
    
    return area_total

Resposta

Pronto! A função area_poligono(matriz) está implementada. Ela divide o polígono convexo em triângulos coletando um vértice fixo e dois vértices consecutivos, calcula a área de cada triângulo usando area_triangulo(mat) e soma todas as áreas para obter a área total do polígono.

Exercícios relacionados