Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ACH2117___Explicação.pdf

Avatar for Gustavo Gustavo
June 29, 2023
14

 ACH2117___Explicação.pdf

Avatar for Gustavo

Gustavo

June 29, 2023

Transcript

  1. Animação do Cojunto de Julia Gustavo Tsuyoshi Ariga - 11857215

    ACH2117 - Computação Gráfica 6 de julho de 2023 Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 1 / 6
  2. Recursos GLSL: É a linguagem de sombreamento do OpenGL. É

    usada para escrever programas que são executados na GPU; Fragment Shader: É um tipo de shader que atua em cada pixel individual na renderização final de uma imagem. A principal responsabilidade de um fragment shader é calcular a cor final de cada pixel; Variáveis Uniformes: São usadas para passar dados que são globais para todos os vértices ou fragmentos, como a resolução da tela (u_resolution) e o tempo (u_time); Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 2 / 6
  3. Conjunto de Julia O principal conceito matemático por trás desse

    código é a geração do conjunto de Julia, que é uma estrutura fractal. Fractais são formas geométricas que são auto-similares em diferentes escalas e podem ser descritas por equações matemáticas. No caso do conjunto de Julia, a equação é: Conjunto de Julia fc(z) = z2 + c Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 3 / 6
  4. Cálculo do Conjunto de Julia Números Complexos Os números complexos

    são representados como vec2; vec2.x representa a parte real de um número complexo; vec2.y representa a parte imaginária; Número complexo ’z’ é representado como vec2 z; Iteração O cálculo principal em um Conjunto de Julia é a iteração de z = z2 + c, onde z e c são números complexos; Representação em vec2 de um número complexo ao quadrado: z2 = (z.x ∗ z.x − z.y ∗ z.y, 2.0 ∗ z.x ∗ z.y); Parte Real: z.x ∗ z.x − z.y ∗ z.y; Parte Imaginária: 2.0 ∗ z.x ∗ z.y; Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 4 / 6
  5. Cálculo do Conjunto de Julia Conjunto de Julia O teste

    if (dot(z, z) > 4.0) está verificando se a magnitude do número complexo z é maior que 2; A magnitude de um número complexo é calculada como x2 + y2; A função dot(z, z) no GLSL retorna z.x ∗ z.x + z.y ∗ z.y; Se a magnitude de ’z’ for maior que 2, a iteração é interrompida, pois o número complexo irá tender ao infinito; Se a iteração atingir o número máximo de iterações definido (MAX_ITERATIONS), então sabemos que o número complexo ’z’ é parte do Conjunto de Julia; Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 5 / 6
  6. Cálculo do Conjunto de Julia Coloração A coloração dos pixels

    é feita com base no valor retornado pela função CalculateJuliaSet; O cálculo da cor é feito de maneira tal que os pontos dentro do conjunto (ou seja, aqueles cujo valor é maior que 0.9) são coloridos com a colorInterior, enquanto os pontos fora do conjunto são coloridos com uma cor que varia de acordo com o valor e o tempo; Zoom e Animação O código também incorpora um efeito de zoom, que é conseguido através da variável zoom, que é uma função do tempo (u_time); Para fazer uma transição mais suave e estética durante a animação do conjunto, foi criando uma interpolação suave entre c2 e c1 com base no valor de zoomLevel; Gustavo Tsuyoshi Ariga - 11857215 (ACH2117 - Computação Gráfica) Animação do Cojunto de Julia 6 de julho de 2023 6 / 6