在给定一个物体坐标的情况下,如何确定它在旋转坐标系的哪个象限?

3
我正在制作一个简单的模拟程序,但遇到了一些问题...模拟世界的居民有四只眼睛:左、上、右和下。每次只能激活一只眼睛,并且该眼睛需要指向最近的物体(基本上告诉居民最近的物体是左、上、右还是下)。每只眼睛在坐标系中都有它的象限,它由主坐标系旋转45度得到。所有数字(位置、坐标)实际上与未旋转的坐标系有关,我只是用旋转后的坐标系来解释,它并不存在。

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

额外信息:

  • 有关物体位置的所有信息都存储为4个数字向量(矩形),格式为[x,y,宽度,高度]
  • 它当然是二维的
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,则位于“上”象限
这些条件假定所有四个象限相遇的点是用于表达xy的坐标系的原点。在使用这些条件之前,您应该使用已知的眼睛位置执行必要的翻译。
请注意,如果您想相对于几个具有不同位置的眼睛执行此过程,则每次都必须使用不同的翻译。这样做的一个不希望的结果是,您可能会从两个不同的眼睛到达相同对象的不同象限。这是问题的结果,与您如何解决问题无关。
您还需要选择关于恰好位于象限边界上的对象的分类。该选择将要求您更改某些严格不等式,以使它们允许相等。

太棒了!眼睛没有自己的位置,一切都取决于居住者的位置。 - corazza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接