Witam
mam problem z fixed pointami.
Oto fragment kodu
public static void main(String[] args)
{
int PRESISION = 10;
int i = 0;
int[] tabX = {10,10,10,10};
int t = 1;
int newX = (int) (0.5 * ((2 * tabX[i + 1]) + (-tabX[i] + tabX[i + 2]) * t
+ (2 * tabX[i] - 5 * tabX[i + 1] + 4 * tabX[i + 2] - tabX[i + 3]) * (t * t) + (-tabX[i] + 3 * tabX[i + 1]
- 3 * tabX[i + 2] + tabX[i + 3])
* (t * t * t)));
System.out.println("newX = "+newX);
System.out.println("precision = "+PRESISION);
for (int j = 0; j < tabX.length; j++)
{
tabX[j] <<= PRESISION;
System.out.println("tabx = "+tabX[j]);
}
t <<= PRESISION;
System.out.println("t = "+t);
long newY = (long) (512 * ((2048 * tabX[i + 1]) + (-tabX[i] + tabX[i + 2]) * t+
(2048 * tabX[i] - 5120 * tabX[i + 1] + 4096 * tabX[i + 2] - tabX[i + 3]) * (t * t) +
(-tabX[i] + 3072 * tabX[i + 1]- 3072 * tabX[i + 2] + tabX[i + 3])* (t * t * t)));
System.out.println("newY = "+(newY)+" "+(newY>>PRESISION)+" "+(newY>>(PRESISION+4))+" "+(newY>>(PRESISION+5))+" "+(-newY>>>(PRESISION+PRESISION)));
// TODO Auto-generated method stub
}
Chodzi mi o to zeby newY i newX mialy taki sam wynik. newX jest zrobiony na floatach. Natomiast newY w zamysle mial byz zrobiony na fixed pointach. Wyniki sa calkowicie rozbiezne - czy ma ktos pomysl jak to ugryzc?
pozdrawiam