Este documento apresenta conceitos introdutórios de física e inteligência artificial para jogos, discutindo tópicos como trigonometria para rotacionar objetos, física de velocidade e colisão, e máquinas de estados finitos para comportamento de NPCs.
O documento discute o conceito de derivada, definindo-a matematicamente como a taxa de variação instantânea de uma função. Explica sua interpretação física e fornece exemplos ilustrativos sobre sua aplicação para calcular velocidade, taxa de crescimento e equações de retas tangentes.
O documento discute conceitos iniciais sobre derivadas, incluindo: (1) Galileu descreveu a relação entre espaço e tempo na queda dos corpos, mas faltava o cálculo diferencial; (2) Newton e Leibniz desenvolveram o cálculo diferencial para medir a taxa de mudança de fenômenos físicos; (3) Isso permitiu explicar o mundo com matemática e desencadeou avanços científicos e tecnológicos.
Kalman Filter - Video tracking Talk at IME-USPJorge Leandro
[1] O documento discute o filtro de Kalman e rastreamento em sequências de vídeo. [2] Aborda conceitos como estimativas ótimas, o princípio da ortogonalidade e características do filtro de Kalman. [3] Também apresenta uma perspectiva probabilística do problema de rastreamento com base na inferência bayesiana.
O documento discute algoritmos para traçar primitivas gráficas em dispositivos matriciais. Aborda o traçado de retas usando o algoritmo DDA e o método do ponto médio, e também o traçado de circunferências usando simetria e o algoritmo do ponto médio.
Este documento discute o tópico da derivação em matemática. Explica o conceito de derivada como sendo a inclinação de uma curva e apresenta exemplos de como calcular derivadas de funções como polinomiais, irracionais, funções do produto e quociente. Também apresenta aplicações da derivação em economia, como o cálculo de custos marginais e médios de uma empresa.
1) O documento apresenta 15 exercícios sobre cálculo diferencial.
2) Os exercícios envolvem derivar funções, calcular velocidades instantâneas e médias, taxas de variação e aplicar a regra da cadeia.
3) Os exercícios abordam conceitos como derivadas de funções compostas, máximos e mínimos, regra da cadeia e pontos de não diferenciabilidade.
[1] O documento apresenta exercícios sobre derivadas de funções, incluindo cálculo de derivadas usando a definição, regras de derivação, regra da cadeia e derivação implícita. [2] São abordados conceitos como função derivável, derivabilidade, equações de retas tangentes e normais. [3] Há exercícios sobre logaritmos, exponenciais, funções trigonométricas e suas derivadas.
1) O documento discute funções vetoriais e suas propriedades como domínio, imagem e continuidade.
2) Apresenta exemplos de curvas no espaço como helicóide e cicloide definidas por funções vetoriais.
3) Discutem derivadas de funções vetoriais e suas interpretações geométricas em termos de velocidade e aceleração de uma partícula.
O documento discute o conceito de derivada, definindo-a matematicamente como a taxa de variação instantânea de uma função. Explica sua interpretação física e fornece exemplos ilustrativos sobre sua aplicação para calcular velocidade, taxa de crescimento e equações de retas tangentes.
O documento discute conceitos iniciais sobre derivadas, incluindo: (1) Galileu descreveu a relação entre espaço e tempo na queda dos corpos, mas faltava o cálculo diferencial; (2) Newton e Leibniz desenvolveram o cálculo diferencial para medir a taxa de mudança de fenômenos físicos; (3) Isso permitiu explicar o mundo com matemática e desencadeou avanços científicos e tecnológicos.
Kalman Filter - Video tracking Talk at IME-USPJorge Leandro
[1] O documento discute o filtro de Kalman e rastreamento em sequências de vídeo. [2] Aborda conceitos como estimativas ótimas, o princípio da ortogonalidade e características do filtro de Kalman. [3] Também apresenta uma perspectiva probabilística do problema de rastreamento com base na inferência bayesiana.
O documento discute algoritmos para traçar primitivas gráficas em dispositivos matriciais. Aborda o traçado de retas usando o algoritmo DDA e o método do ponto médio, e também o traçado de circunferências usando simetria e o algoritmo do ponto médio.
Este documento discute o tópico da derivação em matemática. Explica o conceito de derivada como sendo a inclinação de uma curva e apresenta exemplos de como calcular derivadas de funções como polinomiais, irracionais, funções do produto e quociente. Também apresenta aplicações da derivação em economia, como o cálculo de custos marginais e médios de uma empresa.
1) O documento apresenta 15 exercícios sobre cálculo diferencial.
2) Os exercícios envolvem derivar funções, calcular velocidades instantâneas e médias, taxas de variação e aplicar a regra da cadeia.
3) Os exercícios abordam conceitos como derivadas de funções compostas, máximos e mínimos, regra da cadeia e pontos de não diferenciabilidade.
[1] O documento apresenta exercícios sobre derivadas de funções, incluindo cálculo de derivadas usando a definição, regras de derivação, regra da cadeia e derivação implícita. [2] São abordados conceitos como função derivável, derivabilidade, equações de retas tangentes e normais. [3] Há exercícios sobre logaritmos, exponenciais, funções trigonométricas e suas derivadas.
1) O documento discute funções vetoriais e suas propriedades como domínio, imagem e continuidade.
2) Apresenta exemplos de curvas no espaço como helicóide e cicloide definidas por funções vetoriais.
3) Discutem derivadas de funções vetoriais e suas interpretações geométricas em termos de velocidade e aceleração de uma partícula.
O documento discute algoritmos de remoção de superfícies ocultas em computação gráfica, comparando abordagens baseadas em lista de prioridades e algoritmos de varredura de linha. Especificamente, descreve o algoritmo de ordenação em profundidade, o algoritmo do pintor e o algoritmo Z-buffer, explicando como cada um determina a ordem de desenho dos objetos para assegurar a remoção correta de superfícies ocultas.
O documento discute problemas NP-completos relacionados a grafos, como o problema do caixeiro viajante, cobertura de nós e conjuntos independentes. Explica que esses problemas são NP-completos através de reduções em tempo polinomial de problemas conhecidos como 3-SAT e ciclo hamiltoniano.
O documento apresenta um plano de aulas sobre introdução à trigonometria. Ele define conceitos como escala, período, amplitude, imagem e domínio de funções trigonométricas. O plano inclui exemplos de funções, atividades para determinar seus valores e representações gráficas.
O documento discute os conceitos fundamentais de animação 3D em computador, incluindo a percepção de movimento através de quadros, história da animação, técnicas como stop motion e captura de movimento, modelagem 3D, rigging, keyframes e ferramentas como o Blender.
Este documento fornece um tutorial sobre Java 3D em 6 exemplos. O primeiro exemplo mostra como criar um programa básico com um cubo colorido. O segundo exemplo adiciona iluminação para mostrar o cubo em 3D. O terceiro exemplo demonstra como posicionar objetos usando coordenadas x, y, z e grupos de transformação. O quarto exemplo explica como alterar a aparência de objetos, como cor e materiais. O quinto exemplo cobre a interface do usuário em Java 3D. O sexto e último exemplo trata de animação e interação.
Este documento apresenta um resumo sobre processamento digital de imagens, abordando tópicos como filtros de suavização e detecção de bordas, histograma, equalização de histograma, controle de contraste adaptativo e outros filtros.
O documento apresenta uma introdução aos principais conceitos e técnicas de processamento digital de imagens, incluindo filtros de suavização, detecção de bordas, histograma, equalização de histograma e controle de contraste adaptativo.
1) O documento apresenta um tutorial sobre o programa Winplot, que é um software gratuito para plotagem de gráficos.
2) O Winplot surgiu em 1985 e possui versões traduzidas para português, permitindo plotar funções explícitas, derivadas, integráveis e superfícies de revolução.
3) O tutorial ensina como baixar, instalar e utilizar os principais comandos e ferramentas do Winplot.
[1] Curso de Especialização em Telecomunicações que aborda noções de função, derivada, suas definições e regras de derivação; [2] A derivada representa a taxa instantânea de variação de uma função e é usada para calcular a velocidade de um móvel a partir de sua posição em função do tempo; [3] O documento explica como calcular a derivada da posição x(t) = 3 + 0,5t - 3t2 no instante t = 10,0s para obter a velocidade do móvel nesse ponto.
O documento discute vários modelos estatísticos para medir e gerenciar riscos operacionais de acordo com os requisitos do Basiléia II. Ele explica o Enfoque Básico, Padrão e Avançado, incluindo o Modelo Atuarial, Causal e Bayesiano. Também discute distribuições de probabilidade, teoria de valores extremos e bibliografia relevante.
O documento discute redes neurais para classificação e regressão. Brevemente descreve a história das redes neurais, como elas podem ser usadas para classificação e regressão, e aplicações como detecção de fraude e previsão de riscos. Também resume perceptrons, redes multicamadas, e o algoritmo backpropagation para treinamento de redes neurais.
Anatomia Comparativa de Modelos de Risco de CréditoRenato Vicente
1. O documento descreve e compara quatro modelos de risco de crédito: CreditRisk+, CreditMetrics, KMV e CreditPortfolioView.
2. CreditRisk+ usa distribuições gama para fatores de risco e aproximação de Poisson para calcular probabilidades de inadimplência. CreditMetrics usa cortes baseados em dados históricos. KMV calcula probabilidades a partir da distância para inadimplência. CreditPortfolioView usa regressão logit.
3. O documento também mapeia como CreditRisk+ e CreditMetrics podem ser representados um no modelo do outro at
O documento resume o modelo KMV de análise de risco de crédito, que calcula a probabilidade de default de um ativo usando a distância-para-default. A distância-para-default mede a diferença entre o valor de mercado dos ativos e o ponto de default, ajustado pela volatilidade. A probabilidade de default é então calculada usando uma curva empírica que corrige os efeitos do processo estocástico assumido.
JavaFX e Scala - Como Leite com BolachaRafael Afonso
Apresentação do projeto ScalaFX (http://code.google.com/p/scalafx/) para o JustJava 2012 em 19/05/2012. Traduzida da apresentação de Stephen Chin e Luc Duponcheel para o Scala Days em 17/04/2012.
1) O documento descreve propriedades geométricas de seções transversais, incluindo momento estático, centro de gravidade e momento de inércia.
2) O momento estático é definido como a contribuição de cada elemento de área para o momento em torno de um eixo, e é calculado por integrais.
3) O centro de gravidade é o ponto onde os momentos estáticos em torno de dois eixos ortogonais se anulam, e pode ser calculado a partir dos momentos estáticos.
O documento fornece instruções passo a passo para construir um gráfico da velocidade em função do tempo, incluindo como titular o gráfico, identificar os eixos, escolher escalas adequadas, marcar os pontos de dados e traçar a curva.
O documento discute derivadas direcionais, que fornecem a taxa de variação de uma função de várias variáveis em qualquer direção. A derivada direcional é definida como o limite da taxa de variação da função ao longo de uma reta na direção de um vetor unitário. Ela pode ser calculada como a combinação linear das derivadas parciais com os componentes do vetor unitário. Exemplos ilustram o cálculo da derivada direcional em diferentes situações.
[1] O documento apresenta métodos para calcular o valor em risco (VaR) de portfólios não-lineares, incluindo aproximações delta e delta-quadrática para portfólios dependentes de um ou mais fatores de risco.
[2] No caso de um único fator de risco, o retorno do portfólio segue uma distribuição qui-quadrado misturada normal. Para múltiplos fatores, a variância do retorno é decomposta em uma combinação de variáveis qui-quadrado.
[3] É apresentado um exemplo
O documento explica o que são curvas de nível e como elas representam gráficamente funções de duas variáveis. As curvas de nível são conjuntos de pontos no plano xOy com a mesma imagem z. O documento fornece exemplos de curvas de nível para funções como z=x2+y2 e discute como elas podem representar quantidades físicas como temperatura, pressão e potencial.
[1] Processos Gaussianos são métodos não-paramétricos para inferência e previsão que modelam a distribuição de probabilidade sobre funções. [2] Kernel models e redes neurais multicamadas podem ser vistos como aproximações de processos gaussianos quando o número de parâmetros tende ao infinito. [3] Processos gaussianos permitem fazer previsões de novas observações de forma probabilística.
O documento descreve as principais transformações geométricas, incluindo translação, rotação, escala e reflexão. Translações deslocam figuras sem alterar tamanhos ou ângulos, rotações giram figuras em torno de um ponto central, escalas aumentam ou diminuem tamanhos de forma uniforme ou não, e reflexões criam imagens especulares ao longo de um eixo.
O documento introduz o conceito de derivada como sendo a taxa de variação instantânea de uma função. Explica que a derivada é calculada como o limite do coeficiente angular de uma reta secante quando a distância entre os pontos em que ela intercepta a função tende a zero. Apresenta aplicações como calcular tangentes, valores mínimos e máximos, e comportamento de ondas estacionárias.
O documento discute algoritmos de remoção de superfícies ocultas em computação gráfica, comparando abordagens baseadas em lista de prioridades e algoritmos de varredura de linha. Especificamente, descreve o algoritmo de ordenação em profundidade, o algoritmo do pintor e o algoritmo Z-buffer, explicando como cada um determina a ordem de desenho dos objetos para assegurar a remoção correta de superfícies ocultas.
O documento discute problemas NP-completos relacionados a grafos, como o problema do caixeiro viajante, cobertura de nós e conjuntos independentes. Explica que esses problemas são NP-completos através de reduções em tempo polinomial de problemas conhecidos como 3-SAT e ciclo hamiltoniano.
O documento apresenta um plano de aulas sobre introdução à trigonometria. Ele define conceitos como escala, período, amplitude, imagem e domínio de funções trigonométricas. O plano inclui exemplos de funções, atividades para determinar seus valores e representações gráficas.
O documento discute os conceitos fundamentais de animação 3D em computador, incluindo a percepção de movimento através de quadros, história da animação, técnicas como stop motion e captura de movimento, modelagem 3D, rigging, keyframes e ferramentas como o Blender.
Este documento fornece um tutorial sobre Java 3D em 6 exemplos. O primeiro exemplo mostra como criar um programa básico com um cubo colorido. O segundo exemplo adiciona iluminação para mostrar o cubo em 3D. O terceiro exemplo demonstra como posicionar objetos usando coordenadas x, y, z e grupos de transformação. O quarto exemplo explica como alterar a aparência de objetos, como cor e materiais. O quinto exemplo cobre a interface do usuário em Java 3D. O sexto e último exemplo trata de animação e interação.
Este documento apresenta um resumo sobre processamento digital de imagens, abordando tópicos como filtros de suavização e detecção de bordas, histograma, equalização de histograma, controle de contraste adaptativo e outros filtros.
O documento apresenta uma introdução aos principais conceitos e técnicas de processamento digital de imagens, incluindo filtros de suavização, detecção de bordas, histograma, equalização de histograma e controle de contraste adaptativo.
1) O documento apresenta um tutorial sobre o programa Winplot, que é um software gratuito para plotagem de gráficos.
2) O Winplot surgiu em 1985 e possui versões traduzidas para português, permitindo plotar funções explícitas, derivadas, integráveis e superfícies de revolução.
3) O tutorial ensina como baixar, instalar e utilizar os principais comandos e ferramentas do Winplot.
[1] Curso de Especialização em Telecomunicações que aborda noções de função, derivada, suas definições e regras de derivação; [2] A derivada representa a taxa instantânea de variação de uma função e é usada para calcular a velocidade de um móvel a partir de sua posição em função do tempo; [3] O documento explica como calcular a derivada da posição x(t) = 3 + 0,5t - 3t2 no instante t = 10,0s para obter a velocidade do móvel nesse ponto.
O documento discute vários modelos estatísticos para medir e gerenciar riscos operacionais de acordo com os requisitos do Basiléia II. Ele explica o Enfoque Básico, Padrão e Avançado, incluindo o Modelo Atuarial, Causal e Bayesiano. Também discute distribuições de probabilidade, teoria de valores extremos e bibliografia relevante.
O documento discute redes neurais para classificação e regressão. Brevemente descreve a história das redes neurais, como elas podem ser usadas para classificação e regressão, e aplicações como detecção de fraude e previsão de riscos. Também resume perceptrons, redes multicamadas, e o algoritmo backpropagation para treinamento de redes neurais.
Anatomia Comparativa de Modelos de Risco de CréditoRenato Vicente
1. O documento descreve e compara quatro modelos de risco de crédito: CreditRisk+, CreditMetrics, KMV e CreditPortfolioView.
2. CreditRisk+ usa distribuições gama para fatores de risco e aproximação de Poisson para calcular probabilidades de inadimplência. CreditMetrics usa cortes baseados em dados históricos. KMV calcula probabilidades a partir da distância para inadimplência. CreditPortfolioView usa regressão logit.
3. O documento também mapeia como CreditRisk+ e CreditMetrics podem ser representados um no modelo do outro at
O documento resume o modelo KMV de análise de risco de crédito, que calcula a probabilidade de default de um ativo usando a distância-para-default. A distância-para-default mede a diferença entre o valor de mercado dos ativos e o ponto de default, ajustado pela volatilidade. A probabilidade de default é então calculada usando uma curva empírica que corrige os efeitos do processo estocástico assumido.
JavaFX e Scala - Como Leite com BolachaRafael Afonso
Apresentação do projeto ScalaFX (http://code.google.com/p/scalafx/) para o JustJava 2012 em 19/05/2012. Traduzida da apresentação de Stephen Chin e Luc Duponcheel para o Scala Days em 17/04/2012.
1) O documento descreve propriedades geométricas de seções transversais, incluindo momento estático, centro de gravidade e momento de inércia.
2) O momento estático é definido como a contribuição de cada elemento de área para o momento em torno de um eixo, e é calculado por integrais.
3) O centro de gravidade é o ponto onde os momentos estáticos em torno de dois eixos ortogonais se anulam, e pode ser calculado a partir dos momentos estáticos.
O documento fornece instruções passo a passo para construir um gráfico da velocidade em função do tempo, incluindo como titular o gráfico, identificar os eixos, escolher escalas adequadas, marcar os pontos de dados e traçar a curva.
O documento discute derivadas direcionais, que fornecem a taxa de variação de uma função de várias variáveis em qualquer direção. A derivada direcional é definida como o limite da taxa de variação da função ao longo de uma reta na direção de um vetor unitário. Ela pode ser calculada como a combinação linear das derivadas parciais com os componentes do vetor unitário. Exemplos ilustram o cálculo da derivada direcional em diferentes situações.
[1] O documento apresenta métodos para calcular o valor em risco (VaR) de portfólios não-lineares, incluindo aproximações delta e delta-quadrática para portfólios dependentes de um ou mais fatores de risco.
[2] No caso de um único fator de risco, o retorno do portfólio segue uma distribuição qui-quadrado misturada normal. Para múltiplos fatores, a variância do retorno é decomposta em uma combinação de variáveis qui-quadrado.
[3] É apresentado um exemplo
O documento explica o que são curvas de nível e como elas representam gráficamente funções de duas variáveis. As curvas de nível são conjuntos de pontos no plano xOy com a mesma imagem z. O documento fornece exemplos de curvas de nível para funções como z=x2+y2 e discute como elas podem representar quantidades físicas como temperatura, pressão e potencial.
[1] Processos Gaussianos são métodos não-paramétricos para inferência e previsão que modelam a distribuição de probabilidade sobre funções. [2] Kernel models e redes neurais multicamadas podem ser vistos como aproximações de processos gaussianos quando o número de parâmetros tende ao infinito. [3] Processos gaussianos permitem fazer previsões de novas observações de forma probabilística.
O documento descreve as principais transformações geométricas, incluindo translação, rotação, escala e reflexão. Translações deslocam figuras sem alterar tamanhos ou ângulos, rotações giram figuras em torno de um ponto central, escalas aumentam ou diminuem tamanhos de forma uniforme ou não, e reflexões criam imagens especulares ao longo de um eixo.
O documento introduz o conceito de derivada como sendo a taxa de variação instantânea de uma função. Explica que a derivada é calculada como o limite do coeficiente angular de uma reta secante quando a distância entre os pontos em que ela intercepta a função tende a zero. Apresenta aplicações como calcular tangentes, valores mínimos e máximos, e comportamento de ondas estacionárias.
Computação Gráfica - Transformações Geométricas no Plano e no EspaçoTony Alexander Hild
O documento discute transformações geométricas em computação gráfica, incluindo translação, escala e rotação. Explica como matrizes são usadas para representar essas transformações e como elas afetam os pontos e objetos. Também aborda conceitos como sistemas de coordenadas, câmera virtual, frustum e suas implementações em OpenGL.
O documento apresenta os conceitos fundamentais da trigonometria, incluindo o teorema fundamental da trigonometria, relações trigonométricas, funções trigonométricas e suas aplicações em geometria e mecânica. Há também exemplos numéricos para exercitar os conceitos apresentados.
Este documento discute criptografia com uso de curvas elípticas. Apresenta curvas elípticas e sua aplicação na criptografia de chave pública. Explica que a segurança dessas curvas se baseia no problema matemático difícil de calcular logaritmos discretos em curvas elípticas.
O documento discute simulação de física em games, abordando fenômenos físicos, engines de física, simulação de partículas, corpos rígidos, constraints, colisões e alguns engines populares.
Informática educativa - história das funções com a web 2.0 - parte 2Rafael Araujo
1) O documento discute o ensino de funções do 1o e 2o grau utilizando ferramentas da Web 2.0 como blogs e softwares educativos.
2) Apresenta exemplos de como modelar matematicamente situações reais utilizando funções quadráticas, como o cálculo da área de um terreno.
3) Explica conceitos-chave como vértice, raízes, concavidade e discriminante para a análise de funções do 2o grau.
O documento descreve conceitos fundamentais de movimento em duas e três dimensões, incluindo posição, velocidade, aceleração, movimento de projéteis e movimento circular uniforme. Ele também fornece detalhes sobre o primeiro canhão de longo alcance usado na Primeira Guerra Mundial para bombardear Paris a mais de 100 km de distância.
O documento apresenta o modelo cinemático direto e inverso de um robô RR utilizando os parâmetros de Denavit-Hartenberg. É construída a matriz de transformações para diferentes configurações de ângulos de junta e são obtidas as coordenadas cartesianas correspondentes. O modelo cinemático inverso é obtido através da função atan2 para determinar os ângulos de junta a partir das coordenadas no espaço de trabalho. Geradores de trajetórias são elaborados tanto no espaço de juntas quanto no espaço cartesiano
O documento apresenta conceitos básicos de cinemática, incluindo repouso e movimento, deslocamento, velocidade média e movimento uniforme. Também discute movimento uniforme variado, sistemas de eixos cartesianos, classificação de movimentos e exemplos de cálculos envolvendo velocidade, aceleração e lançamento oblíquo.
Aula 7 - Funções Logarítmicas, Exponenciais e TrigonometricasTurma1NC
O documento apresenta definições e propriedades de funções elementares como exponenciais, logaritmos e funções trigonométricas. Inclui regras de exponenciação, propriedades dos logaritmos, identidades trigonométricas e fórmulas para conversão de ângulos.
O documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade é medida pelo tempo de execução em função do tamanho do problema e apresenta exemplos de algoritmos com diferentes complexidades como constante, linear, quadrática e cúbica. Também apresenta regras para calcular a complexidade de algoritmos como laços aninhados e instruções consecutivas.
Este documento discute a complexidade de algoritmos e como analisá-la. Explica que a complexidade de tempo de um algoritmo é expressa como uma função do tamanho do problema e que a notação Big-O é usada para descrever o comportamento assintótico predominante. Também apresenta exemplos como ordenação de vetores e mostra que algoritmos para o mesmo problema podem ter diferentes complexidades de tempo.
Algoritmos de Percurso Aplicados à RobóticaLucas Oliveira
Este documento descreve um projeto que aplica algoritmos de busca à robótica usando um robô ActivityBot. O objetivo era mapear um ambiente controlado e usar algoritmos como DFS, BFS e Dijkstra para encontrar o caminho ótimo de volta ao ponto inicial evitando obstáculos. Os resultados mostraram que o BFS e Dijkstra foram mais eficientes ao encontrar o caminho mais curto com menos curvas.
Física i apontamentos teóricos - cinemáticaPedro Alves
O documento descreve conceitos fundamentais da cinemática, incluindo: (1) o estudo do movimento independentemente das causas, (2) a definição de repouso e movimento como conceitos relativos, e (3) a necessidade de definir um sistema de referência para descrever o movimento.
A classe Math de Java fornece métodos para realizar operações matemáticas como máximo, mínimo, potências, raízes, logaritmos, arredondamentos, trigonometria e números aleatórios. Os métodos podem ser chamados staticamente sem a necessidade de instanciar objetos e incluem constantes como π e e. Exemplos demonstram o cálculo de comprimento de círculo, maior e menor preço, potência e raiz quadrada.
Este documento discute funções quadráticas, incluindo como identificar gráficos de funções quadráticas, determinar a concavidade da parábola, e construir e analisar gráficos de funções quadráticas usando pontos-chave e softwares como Excel e LabVirt. Exemplos e exercícios são fornecidos para reforçar os conceitos-chave.
O documento descreve os conceitos de movimento retilíneo uniforme (MRU) e movimento retilíneo uniformemente variado (MRUV). No MRU, a velocidade é constante e a função horária do espaço é S=S0+Vt. No MRUV, a velocidade varia uniformemente com o tempo e as funções horárias são V=V0+at e S=S0+V0t+1/2at2. Gráficos são usados para ilustrar essas relações e calcular velocidades e acelerações. Exemplos e
O documento discute o uso de software para ensinar trigonometria e o Teorema de Pitágoras em triângulos retângulos. Ele propõe criar uma planilha no Excel para calcular relações trigonométricas e aplicar o Teorema de Pitágoras, e usar o software Régua e Compasso para construir triângulos dinamicamente e visualizar comprimentos e ângulos.
1) A cinemática estuda os movimentos dos corpos sem considerar suas causas.
2) Conceitos básicos incluem ponto material, corpo extenso e sistema de referência cartesiano.
3) Movimentos retilíneos uniformes têm velocidade constante e aceleração nula, permitindo prever posições futuras usando a equação x = x0 + vt.
Semelhante a Conceitos Introdutórios de Física e Inteligência Artifical para Jogos (20)
Conceitos Introdutórios de Física e Inteligência Artifical para Jogos
1. Conceitos Introdutórios de Física
e Inteligência Artificial para jogos
André Kishimoto (Glu Mobile)
Rafael Oliveira Martins (EA Mobile)
2. Antes de começar...
• O conteúdo desse mini-curso é uma pesquisa
dos autores e não tem ligação com as
empresas em que trabalham
• As opiniões apresentadas são pessoais e não
refletem a opinião, posição e/ou visão das
empresas EA Mobile e Glu Mobile
3. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
4. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
5. Introdução
• Criamos esse mini-curso assumindo que o público
já tenha familiaridade com programação
• Dada a carga horária do mini-curso, tivemos que
selecionar apenas alguns tópicos sobre Física e IA
– Há muito mais a ser estudado e implementado sobre
essas áreas, por isso listamos diversas referências no
último slide
• Embora importante, não nos atentamos à parte
visual pois o foco desse mini-curso é a parte
técnica
6. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
7. Tecnologia e demonstração
• Para demonstrar os assuntos do mini-curso na prática,
tivemos que adotar uma ferramenta, que no caso foi o
Adobe Flash (e AS3.0)
• No entanto, os conceitos podem ser aplicados em qualquer
outra ferramenta e linguagem de programação
– Anteriormente escrevemos o mesmo conteúdo em Java ME
(mobile) e C++ para Windows
• Optamos também por trabalhar em 2D ao invés de 3D, para
simplificar o exemplo (novamente, os conceitos também se
aplicam em 3D, dada as devidas modificações)
• Quanto ao exemplo, reunimos todo o conteúdo do mini-
curso em uma demo estilo shooter com vista top-down
8. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
9. Trigonometria
• Grande parte dos jogos possuem objetos que se
movimentam pela tela
• Quando os movimentos são horizontais e
verticais, não há grandes complicações em
programar a movimentação
– Basta alterar valores (x,y) de um objeto
• Mas e quando os objetos podem ser
rotacionados e devem seguir a direção para onde
estão “olhando”?
– É aqui que entra a trigonometria
10. Trigonometria
• Imaginem uma bala de canhão sendo atirada no
espaço. O canhão possui uma certa direção, que
é a rotação da sua base.
• Na imagem abaixo, digamos que o ponto p seja a
direção inicial do canhão
• Queremos mover a mira do canhão
para o ponto p’
• Reparem que há um círculo de raio h,
indicando que a mira pode ser rota-
cionada em 360 graus.
11. Trigonometria
• Notem também que há um triângulo
retângulo formado pelos pontos (0, 0), (xp’, yp’)
e (xp’, 0). A relação trigonométrica de um
triângulo retângulo é (pela figura):
– sin(ang) = a / h
– cos(ang) = o / h
– tan(ang) = o / a
– (a = cateto adjacente, o = cateto
oposto e h = hipotenusa)
12. Trigonometria
• Para resolver o problema da bala de canhão,
usamos os valores de sin(ang) e cos(ang), pois
através do seno e cosseno, conseguimos
encontrar qualquer ponto no círculo, dado um
determinado ângulo
• Calculando alguns ângulos:
– Ângulo (x, y) cos() sin()
• 0 ou 360 (1, 0) 1 0
• 90 (0, 1) 0 1
• 180 (-1, 0) -1 0
• 270 (0, -1) 0 -1
13. Trigonometria
• Reparem nas colunas (x,y), sin() e cos() do slide
anterior
• Essa é a relação que os valores seno e cosseno
possuem com a coordenada (x,y) de um ponto p:
– cos(ang) equivale à coordenada x de p
– sin(ang) equivale à coordenada y de p
• Podemos adicionar uma velocidade ao
deslocamento, multiplicando tanto cos() como
sin() por um valor de velocidade
14. Trigonometria
• No exemplo desse mini-curso, a aplicação do
que acabamos de ver pode ser conferido no
clique de mouse (tiro) e na movimentação do
NPC:
// Desloca NPC baseado na direcao para onde ele esta olhando
var angle:Number = Constants.DEG_TO_RAD * this.rotation;
var deltaX:Number = m_velocityX * Math.cos( angle );
var deltaY:Number = m_velocityY * Math.sin( angle );
this.x += deltaX;
this.y += deltaY;
15. Trigonometria
• Podemos realizar a operação contrária, isto é,
a partir de duas coordenadas (x,y), queremos
descobrir o ângulo de rotação de um objeto
• Para isso, calculamos o arco tangente de dy/dx
• atan2(y, x) é uma variação da função do arco
tangente, recebendo dois parâmetros e
considerando o sinal de dx e dy
16. Trigonometria
• O exemplo implementa a obtenção de um ângulo a partir
da posição (x,y) do cursor do mouse com a posição (x,y) do
player, para que o player seja rotacionado apontando
sempre para o cursor do mouse:
public function followMouseCursor()
{
var deltaX:Number = stage.mouseX - this.x;
var deltaY:Number = stage.mouseY - this.y;
var angle:Number = Math.atan2( deltaY, deltaX );
var rotation:Number = angle * Constants.RAD_TO_DEG;
this.rotation = rotation;
}
17. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
18. Física
• Vimos que para movimentar um objeto pela tela,
basta alterar sua posição (x,y), seguindo ou não a
orientação do objeto
• Durante a movimentação, os objetos possuem
uma determinada velocidade, que é a razão da
distância percorrida no espaço em uma
determinada faixa de tempo (v = ds/dt)
• Em Física, aprendemos que a velocidade é em
metros/segundo, mas no computador podemos
indicar a velocidade de um objeto por pixels/fps
19. Física
• Assim, no código que realiza o update do jogo a uma taxa
de N fps, podemos aplicar uma velocidade para deslocar o
objeto
– No Flash o update pode ser feito em resposta ao evento
ENTER_FRAME, e a taxa de fps é definida no projeto (.fla)
• A nova posição s do objeto, dada uma velocidade v e
tempo t é s(t) = s0 + (v * t)
• Traduzindo para o computador (AS3):
public function enterFrame()
{
// Aplica velocidade ao objeto
this.x = this.x + m_velocityX;
this.y = this.y + m_velocityY;
}
20. Física
• O código anterior aplica uma velocidade constante ao objeto. Para
alterar essa velocidade e assim aplicarmos uma aceleração ao
objeto, podemos usar a equação de aceleração (a = dv/dt)
• A nova velocidade v do objeto, dada uma aceleração a e tempo t é
v(t) = v0 + (a * t)
• Traduzindo para o computador (AS3):
public function enterFrame()
{
// Aplica aceleração
m_velocityX = m_velocityX + m_accelerationX;
m_velocityY= m_velocityY + m_accelerationY;
// Aplica velocidade ao objeto
this.x = this.x + m_velocityX;
this.y = this.y + m_velocityY;
}
21. Física
• A desaceleração de um objeto pode ser vista como uma aceleração
negativa
• Dessa forma, basta aplicar uma força negativa à velocidade ou reduzir a
aceleração e velocidade uma determinada porcentagem a cada passar de
tempo
• No exemplo, quando o jogador não está pressionando teclas de
movimentação, reduzimos a aceleração e velocidade em 20%:
public function enterFrame()
{
if( !m_isMoving )
{
m_accelerationX = m_accelerationX * Constants.FRICTION; // FRICTION = 0.8
m_accelerationY = m_accelerationY * Constants.FRICTION;
m_velocityX= m_velocityX * Constants.FRICTION;
m_velocityY= m_velocityY * Constants.FRICTION;
}
}
22. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
23. Física
• A colisão entre objetos nos jogos nada mais é que
um problema matemático: intersecções de
figuras geométricas que podem ser calculadas e
resolvidas através de algumas equações
• Existem diversas maneiras para detectar colisões,
como interseção de duas retas, reta com
retângulo, reta com círculo, intersecção de dois
retângulos (talvez o mais comum), dois círculos,
retângulo e círculo, polígonos, etc.
– A escolha do método de colisão depende da forma
dos objetos do jogo
24. Física
• Para o exemplo, escolhemos o método de colisão entre dois
círculos:
– Dado dois círculos nas coordenadas A(x1, y1) e B(x2, y2) de raio r1 e r2,
respectivamente, a intersecção entre eles ocorre quando a distância
entre seus centros é menor ou igual a soma de seus raios:
– (x2 – x1)2 + (y2 – y1)2 <= (r1 + r2)2
public function checkRadialCollision(objA:MovieClip, radiusA:Number, objB:MovieClip,
radiusB:Number):Boolean
{
var distX:Number = objB.x - objA.x;
var distY:Number = objB.y - objA.y;
var radius:Number = radiusA + radiusB;
return( distX * distX + distY * distY <= radius * radius );
}
25. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
26. Inteligência Artificial
• Geralmente trabalhamos com sequências de entradas,
ações e transições que definem a progressão de qualquer
tipo de jogo ou aplicativo.
• Para gerenciar essas transições usamos o conceito de FSM
(Finite State Machines), onde definimos quais estados
utilizaremos e como definimos a ordem em que eles
estarão ativos ou inativos.
• Um exemplo de aplicação de FSM em um jogo pode ser
dado pela transição: Tela do Título -> Menu -> Novo Jogo ->
Fim de Jogo -> Menu
27. Inteligência Artificial
• Uma questão comum no desenvolvimento de jogos é,
“Como posso estruturar meu jogo?”.
• Uma maneira eficaz e concreta para resolver isso seria
pensar no seguinte cenário:
1. O jogo é carregado e a tela inicial ou de título aparece.
2. O jogador aperta Start/Enter e a tela de título é removida, dando vez a tela do menu
principal.
3. O jogador escolhe Iniciar Jogo, a tela do menu é removida e um sub-menu aparece.
4. O sub-menu mostra uma mensagem de que o jogo é Demo, e o jogador pode comprar o
jogo ou jogar a versão limitada.
5. O jogador aceita a mensagem, o sub-menu é removido e a tela de carregar o jogo aparece.
6. Após o carregamento do jogo, a tela de carregar fica inativa e a tela de jogo é exibida.
7. Durante o jogo, o jogador pressiona o botão Start e a tela de pausa assume o controle.
28. Inteligência Artificial
• Em nosso jogo exemplo, utilizamos em dois momentos o
uso de FSM, o primeiro é: Tela de Jogo e Tela de Pausa.
• Podemos tornar o fluxo do jogo mais complexo, utilizando
uma estrutura maior, como citado anteriormente.
29. Inteligência Artificial
• O comportamento do NPC é o segundo
momento em que usamos o conceito de FSM.
NPC
Patrolling
Seeking
Evading
//Patrulhando
//Perseguindo
//Fugindo
30. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
31. Inteligência Artificial
• Uma técnica fundamental para qualquer jogo que queira
demonstrar sinais de uso de IA é a determinação de caminhos e
buscas pré-definidas.
• Uma vez que precisamos nos deslocar, desviar de obstáculos e
seguir rotas, a implementação dessa técnica é necessária.
• Existem diversas maneiras de implementarmos o uso de caminhos,
rotas e buscas. Isso depende do problema a ser resolvido e de
quantas entidades vamos associar ao jogo.
• Nos jogos onde os NPCs se deslocam, é necessário traçar um
caminho para que eles percorram, seja na busca do jogador, do
inimigo, de um ítem ou até mesmo para chegarem a uma outra
extremidade utilizando o menor caminho.
32. Inteligência Artificial
• No jogo exemplo, o NPC tem uma rota definida, enquanto
está no estado de Patrulha.
• A rota do NPC é pré-definida por pontos nas extremidades
da tela (x,y), que definem sua posição atual em um
movimento retangular.
px0,py0 px1,py1
px2,py2px3,py3
Início
33. Inteligência Artificial
• Neste caso, o melhor meio de definirmos os pontos do caminho é criando um
Array de coordenadas na tela.
private var m_points:Array = [ px0, py0, px1, py1, px2, py2, px3, py3 ];
- Onde px = coordenada X e py = coordenada Y na tela
• Como temos 4 (quatro) coordenadas x,y na tela, definimos um número
máximo de coordenadas a serem atingidas pelo NPC:
public static const MAX_POINTS_IN_PREDEFINED_PATH:int = 3; // 0 à 3 = 4 coordenadas
• A cada ponto do caminho pré-definido em que o NPC atinge, seu próximo
passo é olhar para o próximo ponto e caminhar até ele.
• Atingindo o próximo ponto, sua posição atual é incrementada e é verificado se
ele atingiu o número máximo de coordenadas. Caso a posição atual seja maior
que o número máximo de coordenadas, logo o NPC concluiu o fim de seu
destino e retorna a posição inicial.
34. Inteligência Artificial
• Traduzindo para o computador (AS3)
switch( m_state )
{
case Constants.STATE_PATROLLING:
{
// Caminha ate o proximo ponto do caminho pre-definido
lookAtPoint( m_points[m_currentPoint * 2], m_points[m_currentPoint * 2 + 1], false );
gotoPoint( m_points[m_currentPoint * 2], m_points[m_currentPoint * 2 + 1] );
// Se atingiu o ponto, passa para o proximo
if ( reached() )
{
m_currentPoint ++;
// Volta ao primeiro ponto do caminho caso tenha atingido o ultimo
if ( m_currentPoint > Constants.MAX_POINTS_IN_PREDEFINED_PATH )
{
m_currentPoint = 0;
}
}
}
//......
}
35. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
36. Inteligência Artificial
• A idéia de perseguir, fugir, ficar em alerta, entre outras
dentro do contexto de IA é feito através do uso de agentes.
• Os agentes são todos elementos que percebem o ambiente
que estão por meio de sensores e atuam por meio de
atuadores.
• Há muito o que estudar dentro dessa área, mas para nosso
mini curso, as técnicas de Perseguir e Fugir são bons
exemplos do uso de agentes.
37. Inteligência Artificial
• No jogo exemplo, o NPC inicia no estado de Patrolling
(Patrulha), enquanto o Player pode caminhar pela tela.
• Caso haja colisão entre os dois ( via colisão entre círculos,
explicado anteriormente ), o NPC começa a perseguir o
Player e entra no estado de Seeking ( Perseguindo ).
// Caso player colidiu com NPC, muda estado do NPC para seeking
if ( checkRadialCollision( m_player, Constants.COLLISION_RADIUS, m_enemy,
Constants.COLLISION_RADIUS ) && m_enemy.getState() != Constants.STATE_EVADING )
{
m_enemy.setState( Constants.STATE_SEEKING );
}
38. Inteligência Artificial
case Constants.STATE_SEEKING:
{
// Persegue o player
lookAtPoint( m_playerX, m_playerY, false );
gotoPoint( m_playerX, m_playerY );
}
• O NPC ficará no estado Perseguindo, até que o Player acerte o 3 ( três ) vezes.
// Verifica se tiro atingiu NPC
if ( checkRadialCollision( m_bullet, Constants.BULLET_RADIUS, m_enemy, Constants.BULLET_RADIUS ) )
{
m_enemyHits ++;
if ( m_enemyHits > 2 )
{
m_enemyHits = 0;
m_enemy.setState( Constants.STATE_EVADING );
}
m_bIsShooting = false;
m_bullet.x = -100;
m_bullet.y = -100;
}
39. Inteligência Artificial
• Depois de atingido, o NPC sai do estado de Perseguindo e entra no
estado de Evading ( Fugindo ).
• Enquanto o NPC está a uma certa distância do Player, ele continua
fugindo. No nosso exemplo, enquanto a distância for menor que
200 pixels, ele permance no estado de Evading.
px0,py0 px1,py1
px2,py2px3,py3
Início
Player
NPC: Evading
< 200px
40. Inteligência Artificial
• Quando a distância entre NPC e Player atingir mais de 200px, o NPC caminha até o
ponto pré-definido mais próximo e retorna ao estado de Patrolling ( Patrulha ).
• Nesse caso, m_currentPoint guarda a última posição do estado de Patrulha do NPC.
case Constants.STATE_EVADING:
{
// Calcula distancia entre player e NPC, se for menor que 200 pixels, continua fugindo
var distance:Number = Math.sqrt( ( m_playerX - this.x ) * ( m_playerX - this.x ) + ( m_playerY - this.y ) * ( m_playerY - this.y ) );
if ( distance < 200 )
{
lookAtPoint( m_playerX, m_playerY, true );
gotoPoint( m_playerX, m_playerY );
}
// Caso contrario, vai para o proximo ponto do caminha prdefinido e ao atingir o ponto,
// muda estado para patrulhando novamente
else
{
lookAtPoint( m_points[m_currentPoint * 2], m_points[m_currentPoint * 2 + 1], false );
gotoPoint( m_points[m_currentPoint * 2], m_points[m_currentPoint * 2 + 1] );
if ( reached() )
{
setState( Constants.STATE_PATROLLING );
}
}
}
//…..
41. Inteligência Artificial
• Como vimos, o NPC utiliza de uma forma básica o conceito
de FSM juntamente comas técnicas de IA de acordo com as
regras utilizadas.
• As técnicas utilizadas nessa aula podem ser aplicadas à
qualquer tipo de linguagem ou plataforma de
desenvolvimento, dadas modificações de sintaxe, regras e
performance.
42. Agenda
• Introdução
• Tecnologia e demonstração
• Trigonometria
– Deslocando e rotacionando objetos
• Física
– Velocidade, aceleração e desaceleração
– Colisão radial
• Inteligência Artificial
– FSM (Máquina de estados)
– Percorrendo um caminho pré-definido
– Perseguindo e fugindo do jogador
• Referências
43. Referências
• Artificial Intelligence for Games
– Ian Millington. Morgan Kaufmann, 2006
• Programming Game AI by Example
– Mat Buckland. Wordware Publishing, Inc., 2004
• Real-Time Collision Detection
– Christer Ericson. Morgan Kaufmann, 2005
• Real-Time Rendering, 3rd Edition
– Tomas Akenine-Möller, Eric Haines, Naty Hoffman.
AK Peters, 2008