Nessa fase os grupos implementarão a interseção com malhas de triângulos, ela é definida da seguinte forma:
- Número de triângulos $\small \longrightarrow {n_{\bigtriangleup}} \in \mathbb{N}$
- Número total de vértices $\small \longrightarrow {n_{\circ}} \in \mathbb{N}, {n_{\circ}} \geqslant 3$
- Uma lista de vértices (pontos) $\small \longrightarrow tamanho: {n_{\circ}}$
- Uma lista com triplas de índices de vértices (cada tripla possui os índices dos vértices (na lista de vértices) que fazem parte de um triângulo) $\small \longrightarrow tamanho: {n_{\bigtriangleup}}$
- Uma lista com normais de triângulos (vetores) $\small \longrightarrow tamanho: {n_{\bigtriangleup}}$
- Uma lista com normais dos vértices; cada elemento da lista é um vetor que é a média das normais dos triângulos que compartilham o correspondente vértice $\small \longrightarrow tamanho: {n_{\circ}}$
- Cor RGB normalizada $\small \longrightarrow {O_d} \in [0, 1]^3$
- Ela PRECISARÀ receber inputs de arquivos .OBJ, seja utilizando o projeto base da disciplina ou um desenvolvido pelo aluno.
Mini-Monitoria:
https://www.youtube.com/watch?v=aE9cV0KB308
Além disso, os grupos também implementarão transformações afins. Elas são definidas da seguinte forma:
- Para isso, o grupo precisa desenvolver uma maneira de construir matrizes de floats ou doubles, podem ser arrays por exemplo;
- Além disso, deve ser possível aplicar matrizes a pontos e vetores;
- Não é preciso fazer uma animação para mostrar o efeito da transformação, vocês podem por exemplo, fazer com que o programa renderize duas imagens, uma antes da aplicação de uma transformação afim e outra depois.