gpt4 book ai didi

C++ 反向 vector TL 引擎

转载 作者:行者123 更新时间:2023-11-28 08:11:39 25 4
gpt4 key购买 nike

当发生碰撞时,我在游戏中反转 vector 时遇到了一些问题,我需要做的是每次弹珠撞击物体时将值翻转为当前值的倒数。 vector 是我需要反转的方向,以使反弹看起来逼真。

最佳答案

所以你说的是数学意义上的 vector ,而不是容器。我们仍然假设您已经使用 std::vector<fieldT> 实现了它例如在哪里typedef double fieldT .你似乎想让一些障碍物反射(reflect)方向。当“镜子”位于您的一个基本 vector 的方向时,这很容易,那么您只需要取反该分量——xy-平面(3D 中)中的“镜子”就可以了

v[2] = -v[2];

即翻转 z 分量,在 yz 平面中它将是

v[0] = -v[0];

如果反射发生在任意方向,情况会变得更加复杂。一种可能性是确定平面方向上的速度分量——这是通过计算速度 vector 和平面法向 vector 之间的标量积来完成的——然后减去法向 vector 的两倍,并用该因子加权。

std::vector<fieldT> n   // normal vector of the plane
, v // speed vector
;

fieldT eta=0;
for (unsigned i=0; i<n.size(); ++i) //scalar product between v and n
eta += v[i]*n[i];
for (unsigned i=0; i<n.size(); ++i) //substract twice the weighted normal vector
v[i] -= 2*eta*n[i];

一种更通用的方法是通过矩阵应用对反射进行建模:反射本质上是正交线性映射的应用。

关于C++ 反向 vector TL 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931434/

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