Eu implementei isso no meu Starterkit de jogos de desenho de linha e evitei usar as soluções com excesso de engenharia. Você provavelmente precisa de um ponto a cada 10 pixels de distância, para poder obter uma linha decentemente suave sem usar muita memória ou fazer chamadas. Então é uma simples questão de mover os objetos do ponto A para o B. Para fazê-los parecerem fluindo suavemente pelo caminho, basta girá-los na direção do movimento. Isso é feito ao longo do tempo e não instantaneamente, para que você fique suave, seguindo um movimento de linha curva sem a necessidade de usar curvas de Bezier ou similares.
Os pontos são armazenados em uma matriz simples, dentro de uma classe Path que também sabe desenhar o caminho usando o OpenGL. Você pode ter qualquer número de pontos de caminho, mas eu os limitaria de 50 a 300, dependendo do dispositivo e da suavidade necessária.
Para interpolar a linha, você deve procurar o algoritmo de média de slides de McMaster (teoria) .
O objeto está se movendo para o primeiro ponto somente quando o usuário desenhou pelo menos dois pontos, para evitar que o objeto gire violentamente. Uma vez que se move para o primeiro ponto, é o mesmo código que para o segundo, terceiro, quarto e assim por diante.