轴对齐矩形长方体(MBR)在一个维度上的交点

时间:2015-01-24 15:48:01

标签: algorithm math indexing geometry time-series

目前我正在对时间序列索引算法进行基准测试。由于大多数时候没有可用的参考实现,我必须编写自己的实现(全部使用Java)。目前,我在PDF格式的Indexing multi-dimensional time-series with support for multiple distance measures文章的第6.2节中稍稍陷入困境:http://hadjieleftheriou.com/papers/vldbj04-2.pdf

MBR(最小边界矩形)基本上是具有一些坐标和方向的矩形立方体。作为示例,P和Q是两个MBR,其中P.coord = {0,0,0}并且P.dir = {1,1,3}并且Q.coords = {0.5,0.5,1}并且Q.dir = {1,1,1}其中第一个条目代表时间维度。

现在我想计算Q和P之间的MINDIST(Q,P):

但是我不确定如何实现“时间维度中两个MBR的交集”(Dim 1),因为我不确定时间维度中的交集实际意味着什么。还不清楚h_Q,l_Q,l_P,h_P是什么意思,因为没有解释这个符号(我的猜测是它们意味着交叉点中维度的最高值或最低值)。

如果有人可以向我解释如何计算第一维中两个MBR的交集并且可能通过对符号的解释启发我,我将非常感激。谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,你的论文中的图14解释了时间的交集。并且矩形是轴对齐的,因此在每个坐标上使用高和低是有意义的。

你看到的乘法符号不是叉积,只是一个正常的乘法,因为它的两边都有一个标量,而不是矢量。

然而,我必须同意第14页的讨论相当模糊,但他们似乎告诉我们,两种类型的交叉点(完整的和部分的),当它们有下标时,意味着沿着交叉点的交叉点的范数。坐标。

因此,似乎你可以将时间交集因式分解得到一个公式:

rewritten formula

值得注意的是,可能违反直觉,当你的物体在时间平面上相交时,他们的MINDIST被定义为0。

因此以下伪代码;

mindist(P, Q)
{
    if( Q.coord[0] + Q.dir[0] < P.coord[0] ||
        Q.coord[0] > P.coord[0] + P.dir[0] )
            return 0;

    time = min(Q.coord[0] + Q.dir[0], P.coord[0] + P.dir[0]) - max(Q.coord[0], P.coord[0]);

    sum = 0;
    for(d=1; d<D; ++d)
    {
        if( Q.coord[d] + Q.dir[d] < P.coord[d] )
            x = Q.coord[d] + Q.dir[d] - P.coord[d];
        else if( P.coord[d] + P.dir[d] < Q.coord[d] )
            x = P.coord[d] + P.dir[d] - Q.coord[d];
        else
            x = 0;

        sum += x*x;
    }

    return sqrt(time * sum);
}

请注意,论文中的绝对值是不必要的,因为我们只检查哪些值更大,因此我们知道我们只添加正数。