如何获得两个透视的穿透矢量?

时间:2014-11-18 03:40:11

标签: geometry collision rectangles

假如我有两个x,y,w,h两个,一个是静止的,另一个是vx,vy。我已经计算出它们彼此重叠,我也知道重叠矩形。我感兴趣的是下图中的红色矢量:

enter image description here

这与最小调整向量不同,因为如您所见,最小调整只是向左移动矩形A,而红色向量向左和向上移动。有没有一种有效的方法来计算它?

1 个答案:

答案 0 :(得分:3)

移动向量V0和渗透向量V1是反平行的

所以你可以利用它: img 其中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|
 }

希望我没有犯一些愚蠢的错误,但无论如何,背后的想法应该是直截了当的。如果没有制作V0的参数线方程...你也可以利用dot产品,但这会产生相同的结果......