Geometry 如何得到两个矩形的穿透向量?
假设我有两个矩形,x,y,w,h,一个静止,另一个在vx,vy移动。我已经计算过它们彼此重叠,我也知道重叠矩形。我感兴趣的是下图中的红色向量:Geometry 如何得到两个矩形的穿透向量?,geometry,collision,rectangles,Geometry,Collision,Rectangles,假设我有两个矩形,x,y,w,h,一个静止,另一个在vx,vy移动。我已经计算过它们彼此重叠,我也知道重叠矩形。我感兴趣的是下图中的红色向量: 这与最小调整向量不同,因为正如您所看到的,最小调整只会向左移动,而红色向量会向左和向上移动。有没有一种有效的计算方法?运动矢量V0和穿透矢量V1是反平行的 所以你可以利用它: 其中,dx,dy是重叠区域的大小 if (|V0.x|>=|V0.y|) { V1.x=-sign(V0.x)*|dx| V1.y=-sign(V0.y)*|dx*V
这与最小调整向量不同,因为正如您所看到的,最小调整只会向左移动,而红色向量会向左和向上移动。有没有一种有效的计算方法?运动矢量
V0
和穿透矢量V1
是反平行的
所以你可以利用它:
其中,dx,dy
是重叠区域的大小
if (|V0.x|>=|V0.y|)
{
V1.x=-sign(V0.x)*|dx|
V1.y=-sign(V0.y)*|dx*V0.y/V0.x|
}
if (|V0.x|<|V0.y|)
{
V1.y=-sign(V0.y)*|dy|
V1.x=-sign(V0.x)*|dy*V0.x/V0.y|
}
if(|V0.x |>=|V0.y |)
{
V1.x=-符号(V0.x)*| dx|
V1.y=-符号(V0.y)*| dx*V0.y/V0.x|
}
如果(| V0.x |需要向量R.TopLeft-R.BottomRight,其中R是重叠矩形?