如何根据对象坐标确定其在旋转坐标系中的象限?

3 投票
1 回答
3523 浏览
提问于 2025-04-17 10:48

我正在制作一个简单的模拟程序,但遇到了一些问题……在这个模拟世界里,居民有四只眼睛:左边、上面、右边和下面。每次只能有一只眼睛是活动的,这只眼睛需要指向最近的物体的方向(也就是说,它要告诉居民最近的物体是在左边、上面、右边还是下面)。每只眼睛在坐标系统中都有自己的象限,这个象限是相对于主坐标系统旋转了45度的。所有的数字(位置、坐标)实际上都是与未旋转的坐标系统有关的,我只是用旋转后的坐标系统来解释,实际上并不存在这个旋转的坐标系统。

这里有张图可以更好地解释这个问题: enter image description here 所以,最后的问题是:如何找出物体在哪个象限?给定物体在未旋转坐标系统中的位置。

附加信息:

  • 物体位置的所有信息都存储为一个四个数字的向量(一个矩形),格式为[x, y, width, height]
  • 当然这是二维的

1 个回答

5

假设 xy 是一个物体在没有旋转的坐标系统中的位置坐标,并且我们把视点放在原点。我们可以利用两个简单的线性函数的基本特性,这些函数的图形把你模拟的空间分成了四个象限,分别是“左”、“上”、“右”和“下”。

从左下角到右上角的倾斜线可以用 y=x 来表示。这意味着(假设 y 向上增长,x 向右增长)在“下”和“右”这两个象限中的点,其坐标满足 y < x。同样,在“上”和“左”这两个象限中的点,其坐标满足 y > x

为了区分“下”和“右”以及“上”和“左”这两个象限,我们可以使用另一条线(从左上到右下),它的公式是 y=-x。这次我们看到,属于“左”和“下”象限的点,其坐标满足 y < -x。同样,属于“右”和“上”象限的点,其坐标满足 y > -x

结合这些条件,我们可以判断坐标为 xy 的物体位于:

  • “左”象限当且仅当 y > xy < -x
  • “下”象限当且仅当 y < xy < -x
  • “右”象限当且仅当 y < xy > -x
  • “上”象限当且仅当 y > xy > -x

这些条件假设所有四个象限交汇的点是坐标系统的原点。你需要在使用这些条件之前,先根据视点的位置进行必要的转换。

需要注意的是,如果你想相对于不同位置的多个视点进行这个过程,你每次都必须使用不同的转换。这可能导致同一个物体从两个不同的视点看去,落在不同的象限中。这是问题的一个结果,和你如何解决它无关。

你还需要决定如何处理恰好位于象限边界上的物体。这个选择会要求你修改一些严格的不等式,使它们允许等式成立。

撰写回答