Math 弹跳球通过曲面后如何重新定位

Math 弹跳球通过曲面后如何重新定位,math,graphics,language-agnostic,collision-detection,trigonometry,Math,Graphics,Language Agnostic,Collision Detection,Trigonometry,我有一个弹跳球,它可以与任意坡度的直线碰撞。球穿过几条线,我需要把球放回距离线“半径”的地方 球(具有变量x、y和半径)以速度x和速度(从向量directionX和directionY乘以变量得到)移动,我可以知道中心和线之间的距离(dist),因此我可以知道球穿过线的像素数 假设在这个示例中,球在直线后经过10个像素(radius-dist),我需要将球的中心设置为相反向量(directionX directionY)中的10个像素。我的问题是: 我如何计算如何在x和y之间分割这n个像素,以

我有一个弹跳球,它可以与任意坡度的直线碰撞。球穿过几条线,我需要把球放回距离线“半径”的地方

球(具有变量x、y和半径)以速度x和速度(从向量directionX和directionY乘以变量得到)移动,我可以知道中心和线之间的距离(dist),因此我可以知道球穿过线的像素数

假设在这个示例中,球在直线后经过10个像素(radius-dist),我需要将球的中心设置为相反向量(directionX directionY)中的10个像素。我的问题是:


我如何计算如何在x和y之间分割这n个像素,以便从中心坐标中减去它们?

我可以想象你拥有4种不同的分辨率,但不清楚你想要哪一种

在这里,黑色箭头是碰撞前的帧和你正在询问如何绘制的帧之间的球中心的移动

A) 你现在的处境

  • 赞成:简单
  • 控球:球处于身体不可接受的位置
B) 您可以计算球反弹后的位置(假设使用弹性楔块)

  • 赞成:最准确
  • 缺点:你没有一个让球接触到表面的框架(但是你在乎吗?)
C) 球的位置为A,回到与表面相切的位置,并进行与所述表面正交的校正

  • pro:在平行于曲面的方向上保持精度
  • 缺点:球的中心不在反射线上(即,我们可以随意使用笛卡尔定律)
D) 球仍在引入线上,但在与曲面相切时停止

  • 赞成者:只有速度/计时有问题
  • 反对:呃。。。。这里没有想法。还是不如B精确

嗯,不考虑所有的图画,只取球的中心就容易多了,并且认为它碰到的是真实表面的半径(和它平行),所以我们只有一个点的力学。因此,从前面的图像中,我们得到以下红色物体的公式:

那么我们需要做些什么呢? 无扰动轨迹从点
S
开始,在点
E
结束(情况A的终点)。我们将调用
C
两条线之间的碰撞点(红色线和轨迹,因此是轨迹D的端点)

我将假设我们总是在碰撞的情况下,因此未受干扰的轨迹和曲面之间的交点总是存在的

您还需要垂直于曲面的向量
u
。确保取一个指向球所在侧的单位向量。因此,如果你的斜率有一个等式
ax+by+c=0
,从向量
(a/sqrt(a*a+b*b),b/sqrt(a*a+b*b))
开始,如果它指向错误的一侧,将两个坐标乘以
-1

然后,要将线沿
u
方向移动一段距离
r
,需要方程
a(x-r*u.x)+b(y-r*u.y)+c=0
,因此
ax+by+c-r*(a*u.x+b*u.y)=0

因此,如果
r
是半径,并且
ax+by+c=0
你的曲面,红线的方程是
ax+by+c+r*sqrt(a*a+b*b)=0
-r
如果球在线下

我将写出
PQ
从点
p
开始到点
Q
结束的向量,因此所述向量的坐标将是
(Q.x-p.x,Q.y-p.y)
,两个向量之间的
表示标量积

因此,您可以用您命名的变量
directionX
directionY
dist
来表示
SE

  • A) 通过
    SE
    移动中心。耶,完成了
  • B) 获取
    C
    。将中心移动
    SE-2*(CE.u)*u
    :因此总移动量,但将超出曲面的
    CE
    法向分量移除两倍,有效地通过该曲面镜像
    CE
    向量
  • C) 获取
    C
    。通过
    SE-(CE.u)*u移动中心:相同,但仅移除
    CE
    的法线分量一次,有效地将
    CE
    向量投影到红线上
  • D) 获取
    C
    。通过
    SC
    移动中心

我可以想象你拥有4种不同的分辨率,但不清楚你想要哪一种

在这里,黑色箭头是碰撞前的帧和你正在询问如何绘制的帧之间的球中心的移动

A) 你现在的处境

  • 赞成:简单
  • 控球:球处于身体不可接受的位置
B) 您可以计算球反弹后的位置(假设使用弹性楔块)

  • 赞成:最准确
  • 缺点:你没有一个让球接触到表面的框架(但是你在乎吗?)
C) 球的位置为A,回到与表面相切的位置,并进行与所述表面正交的校正

  • pro:在平行于曲面的方向上保持精度
  • 缺点:球的中心不在反射线上(即,我们可以随意使用笛卡尔定律)
D) 球仍在引入线上,但在与曲面相切时停止

  • 赞成者:只有速度/计时有问题
  • 反对:呃。。。。这里没有想法。还是不如B精确
嗯,不管所有的图画,只要把球的中心取下来就容易得多,并且认为它击中了一个球。