逆向公式转换
我有一个计算 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;
但转换不等于..我认为这是因为我不知道如何交谈〜和&运营商。
I have a formula which calculate position for Y, here it is:
double y = ...;
double minX = ..;
double scaleY = ..;
int MAX_COORD = (1 << 16) - 1;
int sy = ~(int)((y - minY) / scaleY * MAX_COORD) & 0xFFFF;
and now i have sy, and i need to calculate y like this:
y = (sy * scaleY) / MAX_COORD + minY;
but conversion is not equals.. i think it because I don't know how to converse ~ and & operators.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
~x 是 -x-1,它是它自己的逆元。
x & 0xffff 与 x % 65536 相同。由于多个值可以映射到相同的结果,因此您无法反转它,但如果结果在适当的范围内,您可以将其视为恒等式,即忽略它。
~x is -x-1, it is it's own inverse.
x & 0xffff is the same as x % 65536. Since several values can map to the same result you cannot invert it, but if the result is in the proper range you can just treat it like the identity, i.e. leave it out.