假如我有两个x,y,w,h两个,一个是静止的,另一个是vx,vy。我已经计算出它们彼此重叠,我也知道重叠矩形。我感兴趣的是下图中的红色矢量:
这与最小调整向量不同,因为如您所见,最小调整只是向左移动矩形A,而红色向量向左和向上移动。有没有一种有效的方法来计算它?
答案 0 :(得分:3)
移动向量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|
}
希望我没有犯一些愚蠢的错误,但无论如何,背后的想法应该是直截了当的。如果没有制作V0
的参数线方程...你也可以利用dot
产品,但这会产生相同的结果......