Ok donc j'ai regardé dans l'interpolation ces derniers temps. Malheureusement, presque tous les articles que j'ai lus ne traitent que de l'interpolation à un niveau décimal de 0,0 à 1,0 pour être exact. Je voudrais interpoler des nombres entiers entiers indépendamment de leur taille ou de leur nombre négatif ou autre. J'ai accompli ceci avec l'interpolation linéaire:Interpolation de cosinus avec entiers
public int interpolate(int y1, int y2, int length, int x){
return y1 + x * (y2 - y1)/(length-1);
}
Cependant je suis coincé avec l'interpolation de cosinus. This grand article parle d'interpolation de cosinus mais c'est sur un système de nombres de 0.0 à 1.0 comme indiqué ci-dessus. Voici ce que j'ai jusqu'à présent:
public int interpolate(int y1, int y2, int length, int x){
int v = (int)(y2 - Mathf.Cos(x * 3.1415f))/2;
return (y1 + x * (y2 - y1)/(length-1)) * v;
}
Il ne fonctionne pas si elle retourne un nombre presque aléatoire sans direction réelle rendant pas lisse du tout. C'est ici que j'ai besoin de votre aide. Longue histoire courte: Comment faire une fonction d'interpolation de cosinus qui traite des nombres entiers?
Vous semblez avoir mal compris l'article auquel vous avez lié. Il ne dit pas que son système de nombres est de 0.0 à 1.0; plutôt, il dit que vous devriez mettre mu = 0 quand vous êtes au premier point de terminaison et mu = 1 quand vous êtes au point de terminaison. Donc, si vos points d'extrémité sont (x1, y1) et (x2, y2), et que vous voulez interpoler à x, alors mu = x1 + (x-x1)/(x2-x1). – ruakh
@ruakh ne devrait-il pas être mu = (x-x1)/(x2-x1)? – pkExec
@pkExec: Oups, oui, merci. – ruakh