2010-05-17 5 views
1

j'ai une formule qui calcule la position Y, voici:conversion formule inverse

double y = ...; 
double minX = ..; 
double scaleY = ..; 
int MAX_COORD = (1 << 16) - 1; 
int sy = ~(int)((y - minY)/scaleY * MAX_COORD) & 0xFFFF; 

et j'ai maintenant sy, et je dois calculer y comme ceci:

y = (sy * scaleY)/MAX_COORD + minY; 

mais la conversion n'est pas égale .. Je pense que parce que je ne sais pas comment converser ~ et opérateurs &.

+0

Et la question est. – WhirlWind

Répondre

1

~ x est -x-1, c'est son propre inverse. 0xffff est identique à x% 65536. Puisque plusieurs valeurs peuvent correspondre au même résultat, vous ne pouvez pas l'inverser, mais si le résultat est dans la bonne plage, vous pouvez simplement le traiter comme l'identité, c'est-à-dire le laisser en dehors.