gpt4 book ai didi

c# - 以任意角度从墙上弹回球?

转载 作者:行者123 更新时间:2023-12-03 22:58:12 29 4
gpt4 key购买 nike

我试图让用户画一个 Racket ,然后他们可以用它来击球。但是,我似乎无法让球正确反弹,因为球速度的 x 和 y 分量没有与墙对齐。我该如何解决这个问题?

我尝试了 Gareth Rees 提供的建议 here ,但显然我对矢量的了解还不够多,无法理解它。例如,我不知道您在向量中存储的到底是什么 - 我知道它是一个带方向的值,但您是否存储了它之间的 2 个点、斜率、角度?

我真正需要的是给定墙壁的角度以及球撞击时的 x 和 y 速度,然后找到新的 x 和 y 速度。

最佳答案

Gareth Rees 得到了正确的公式,但我找到了图片和解释 here更清楚一点。即基本公式为:

Vnew = -2*(V dot N)*N + V
where
V = Incoming Velocity Vector
N = The Normal Vector of the wall

由于您不熟悉向量表示法,对于此公式,您需要了解以下内容:向量基本上只是 x,y 对,因此 V = (v.x, v.y)N = (n.x, n.y)。平面最好用平面的法线来描述,即垂直于平面的单位长度矢量。然后是几个公式,b*V = (b*v.x, b*v.y); V dot N = v.x*n.x+v.y*n.y,即是标量;和 A + B = (a.x+b.x, a.y+b.y)。最后,要根据任意向量找到一个单位向量,它是 N = M/sqrt(M dot M)

如果表面是弯曲的,则在接触点处使用法线。

关于c# - 以任意角度从墙上弹回球?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048840/

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