обратное преобразование формулы - PullRequest
1 голос
/ 17 мая 2010

У меня есть формула, которая вычисляет позицию для Y, вот она:

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

и теперь у меня есть sy, и мне нужно вычислить y следующим образом:

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

но преобразование не равно ... я думаю, потому что я не знаю, как преобразовать ~ и & операторы.

1 Ответ

1 голос
/ 17 мая 2010

~ x - это -x-1, это его собственная обратная сторона.

x & 0xffff - это то же самое, что и x% 65536. Поскольку несколько значений могут отображаться на один и тот же результат, вы не можете инвертировать его, но если результат находится в правильном диапазоне, вы можете просто трактовать его как тождество, то есть оставить его вне .

...