作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这几天在TrollTech的Qt Tutorial学习Qt,对this page中计算子弹位置的源码很迷惑:
QRect CannonField::shotRect() const
{
const double gravity = 4;
double time = timerCount / 20.0;
double velocity = shootForce;
double radians = shootAngle * 3.14159265 / 180;
double velx = velocity * cos(radians);
double vely = velocity * sin(radians);
double x0 = (barrelRect.right() + 5) * cos(radians);
double y0 = (barrelRect.right() + 5) * sin(radians);
double x = x0 + velx * time;
double y = y0 + vely * time - 0.5 * gravity * time * time;
QRect result(0, 0, 6, 6);
result.moveCenter(QPoint(qRound(x), height() - 1 - qRound(y)));
return result;
}
倒数第三行:
result.moveCenter(QPoint(qRound(x), height() - 1 - qRound(y)));
我认为 - 1
是无稽之谈,不是吗?
最佳答案
你有一个小部件:
如果小部件的高度为height
,则y == 0
行位于小部件的顶部,底部行有y == height - 1
坐标。所以,如果你想在小部件的底线上显示一个点,你应该将它的 y
坐标设置为 height - 1
。
显然,他们使用小部件的底部作为地面,所以子弹只能在这个水平之上或之上。
关于c++ - TrollTech 的 Qt 教程第 11 章中令人困惑的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11920570/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!