Como fazer uma curva em forma de S?

To usando o jME para fazer meu jogo, e descobri que posso fazer um terreno usando um mapa de alturas. mas eu n sei como fazer ele ter uma forma mais natural, só consigo fazer umas retas toscas e dai o terreno fica todo quadrado, dai eu fui procura no google como se faz uma curva em forma de S (segue em anexo) que garanta o ponto 1 numa ponta e o ponto 2 na outra, descobri uma tal de curva de Bezier ou algo assim… foi ler como se faz e n entendi nada =/

alguem tem como explica melhor ou mostra um codigo que calcule os coeficientes de 64 pontos?(sendo “ponto 1” o que aparece na figura como “ponto 1” e o 64th ponto o que aparece na figura como “ponto 2”)

ja preparei um switch(que embora mais chato e feio, pelomenos é mais eficiente que usar a formula) para resceber os coeficientes pq desisti de faze uma foruma pra calcula eles T.T mas tbm n acho os coeficientes…

o switch funciona assim:

for(int c = 0; c < calc.length; c++) switch(c){ case 0: calc[c] = startpointheight; case 1: calc[c] = startpointheight + coeficient * endpointheight; // pena que eu n sei o coeficiente do ponto 1 break; case 2: calc[c] = startpointheight + coeficient * endpointheight; // pena que eu n sei o coeficiente do ponto 2 break;

http://en.wikipedia.org/wiki/Spline_(mathematics)

Procura uma biblioteca em C chamada Allegro, que ela implementa isso.
Já vi algo em java, mas ainda não consegui achar.

EDIT: Vê se isso serve: http://www.cse.unsw.edu.au/~lambert/splines/source.html

consegui extrair os coeficientes usando o programa, vlw ;D

calculando com a formula levava 0.154234 SECS.
usando o switch leva 1.86317E-4 SECS. (0.000186317 ou 0.0000186317 n tenho certeza ;D)

caso alguem ainda tenha interece tem uma classe do jME(Java Monkey Engine) que implementa isso e fui descobrir hoje procurando sobre tratamento de colisões…
link: BezierCurve