Итак, я искал интерполяцию в последнее время. К сожалению, почти каждая статья, которую я прочитал, обсуждает только интерполяцию на десятичном уровне от 0.0 до 1.0. Я хотел бы интерполировать целые числа целого числа независимо от того, насколько они велики или нет или нет. Я сделал это с линейной интерполяцией:Интерполяция косинуса с помощью целых чисел
public int interpolate(int y1, int y2, int length, int x){
return y1 + x * (y2 - y1)/(length-1);
}
Однако я застрял с интерполяцией косинуса. This отличная статья говорит о косинусной интерполяции, однако она находится в системе чисел от 0.0 до 1.0, как указано выше. Вот то, что я до сих пор:
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;
}
Это не работает, хотя он возвращает почти случайное число с не реальное направление не делает его не гладкой на всех. Здесь мне нужна ваша помощь. Короче говоря: как сделать функцию интерполяции косинуса, которая имеет дело с целыми числами?
Вы, кажется, неправильно поняли статью, с которой вы связались. Он не говорит, что его система чисел от 0.0 до 1.0; скорее, он говорит, что вы должны установить mu = 0, когда вы находитесь на первой конечной точке, и mu = 1, когда вы находитесь на конечной точке. Итак, если ваши конечные точки (x1, y1) и (x2, y2), и вы хотите интерполировать по x, то mu = x1 + (x-x1)/(x2-x1). – ruakh
@руах не должен быть mu = (x-x1)/(x2-x1)? – pkExec
@pkExec: Упс, да, спасибо. – ruakh