gpt4 book ai didi

c++ - TrollTech 的 Qt 教程第 11 章中令人困惑的源代码

转载 作者:行者123 更新时间:2023-11-28 00:55:03 30 4
gpt4 key购买 nike

这几天在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 是无稽之谈,不是吗?

最佳答案

你有一个小部件:

Widget

如果小部件的高度为height,则y == 0 行位于小部件的顶部,底部行有y == height - 1坐标。所以,如果你想在小部件的底线上显示一个点,你应该将它的 y 坐标设置为 height - 1

显然,他们使用小部件的底部作为地面,所以子弹只能在这个水平之上或之上。

关于c++ - TrollTech 的 Qt 教程第 11 章中令人困惑的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11920570/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com