我只是在处理过程中胡乱摆弄了一下,因为我比其他任何语言都更了解它,并偶然发现了这个网站Custom 2d physics engine。到目前一切尚好。我在两个矩形相撞的地方,我需要解决这个碰撞。根据论文,我应该使用以下代码:
void ResolveCollision( Object A, Object B )
{
// Calculate relative velocity
Vec2 rv = B.velocity - A.velocity
// Calculate relative velocity in terms of the normal direction
float velAlongNormal = DotProduct( rv, normal )
// Do not resolve if velocities are separating
if(velAlongNormal > 0)
return;
// Calculate restitution
float e = min( A.restitution, B.restitution)
// Calculate impulse scalar
float j = -(1 + e) * velAlongNormal
j /= 1 / A.mass + 1 / B.mass
// Apply impulse
Vec2 impulse = j * normal
A.velocity -= 1 / A.mass * impulse
B.velocity += 1 / B.mass * impulse
}这是用C++写的,所以我需要把它移植到java上。在这里我被两件事卡住了。1:作者所说的“正常”是什么意思?我如何获得“正常”?第二件事是这3行代码:
Vec2 impulse = j * normal
A.velocity -= 1 / A.mass * impulse
B.velocity += 1 / B.mass * impulse他创建了一个只有1个数字的向量?J*正常?我真的不清楚到底发生了什么,这对我没有真正的好处。
发布于 2015-11-20 23:39:27
他可能指的是“正常”的this。所以法线是一个有2个元素的向量,因为你指的是2D物理的教程。j*normal会将normal的每个元素与标量j相乘。
normal、velocity和impulse是坐标x,y的2个元素的向量。从您参考的系列教程中,您可以看到接近尾部的法线定义的here。
发布于 2015-11-21 00:05:49
二维或三维形状边界点上的“法线”向量是这样的向量:
沿着直线(2d)或平面(3d)的法向量是相同的,因此在这些情况下,您还会听到人们谈论直线或曲面的“法线”。
法向量在图形和物理代码中用于各种重要的计算。
如何准确计算点、线或曲面的法向量取决于表示对象几何图形的数据结构。
https://stackoverflow.com/questions/33830445
复制相似问题