Salut,
j'ai voulu m'exercer avec un système de caméra et je me débrouille pas mal. Je définis quelques points, des waypoints, et ensuite j'utilise GetTickCount pour calculer un facteur mu entre 0 et 1 que j'utilise pour une interpolation de bézier pour calculer la position de la caméra.
Le code pour l'interpolation d'un axe est le suivant:
float interpolate(float mu, float p0, float p1, float p2, float p3){
/*
Piecewise cubic bezier curve as defined by Adobe in Postscript
The two end points are p0 and p3
Their associated control points are p1 and p2
*/
float a, b, c;
c = 3 * (p1 - p0);
b = 3 * (p2 - p1) - c;
a = p3 - p0 - c - b;
return (a * mu * mu * mu + b * mu * mu + c * mu + p0);
}
Si mu devient plus grand que 1, je le diminue et je rajoute le temps passé à mon temps de référence pour calculer le nouveau mu:
while (mu > 1){
mu -= 1;
waypointTickValue += 1000; //GetTickCount();
currentWayPoint =(++currentWayPoint)%NumWayPoint; // infinite loop
}
Le problème arrive au passage d'un waypoint, lorsque mu devient plus grand que 1 mais j'arrive pas à voir l'erreur.
En fait, il y a une différence de vitesse, la caméra semble ralentir, presque s'arreter et ensuite continue à vitesse constante de nouveau entre les prochains points.
Est-ce que quelqu'un aurait une idée comment faire ?
Merci de votre aide.