Liste aqui os splines mais comuns encontrados no desenvolvimento de jogos, quantos pontos o método precisa para interpolar uma curva e como criar um tipo de dados que permita obter uma interpolação dos pontos da curva. Exemplos: curvas de Bézier, splines B, splines cúbicos etc.
PS: Estou colocando isso como um wiki da comunidade para que possamos listar todos os tipos de interpolação de splines.
mathematics
splines
chiguire
fonte
fonte
Respostas:
O caso mais simples é uma interpolação linear para uma linha reta:
(x0, y0) * ------------------------ * (x1, y1)
Digamos que t esteja entre [0, 1]:
fonte
Os splines Catmull-Rom (um tipo de spline cúbico de hermita) podem ser bastante úteis, se você tiver um conjunto de pontos nos quais deseja criar um caminho suave entre (sem definir pontos de controle adicionais), como caminhos da câmera
Para todas as matemáticas, consulte:
http://en.wikipedia.org/wiki/Cubic_Hermite_spline
Se você estiver usando o D3DX, existem algumas funções úteis para lidar com eles (D3DXVec3CatmullRom)
fonte
Edit: Desculpe, como Jason aponta no comentário, a resposta a seguir não é sobre splines, mas sobre interpolação linear bidimensional (ou bilinear ). Estou optando por não excluí-lo, caso alguém ache informativo.
Eu criei um terreno 3D simples e depois quis que meu personagem atravessasse o terreno. Então, para encontrar a altura do personagem em qualquer ponto do terreno, usei interpolação bilinear .
Aqui está o código Java que eu uso para a interpolação bilinear:
Observe que a interpolação bicúbica pode apresentar interpolação mais suave ou mais realista em pontos distantes; mas eu escolho ir com o bilinear porque tenho uma grade densa, na tentativa de otimizar (talvez prematuramente).
fonte