给定一个对象的坐标,我如何确定它在旋转坐标系的哪个象限上?

cor*_*zza 3 python simulation math coordinates

我正在制作一个简单的模拟程序,但遇到了一些问题……模拟世界的居民有 4 只眼睛:左、上、右和下。一次只有一只眼睛可以活动,并且这只眼睛需要指向最近物体的方向(基本上告诉居住者是左、上、右或下最近的物体)。每只眼睛在坐标系中都有它的象限,它从主坐标系旋转 45 度。所有的数字(位置、坐标)实际上都与未旋转的坐标系有关,我只是使用旋转的坐标系来解释,它实际上并不存在。

这是一张可以更好地解释它的图片: 在此处输入图片说明 那么,最后一个问题是:如何找出物体在这些象限中的哪一个?给定对象在未旋转坐标系中的位置。

附加信息:

  • 关于对象位置的所有信息都存储为 4 个数字向量(矩形),如 [x, y, width, height]
  • 当然是二维的

Ada*_*man 5

x , y是物体在非旋转坐标系中的坐标,平移后眼睛位于原点。您可以利用两个线性函数的基本属性,它们的图表将您的模拟空间划分为您绘制的四个象限(“左”、“上”、“右”和“下”)。

从左下角到右上角的倾斜线由y=x给出。这意味着(假设y向上增长并且x向右增长)位于“向下”和“向右”象限中的点具有满足y < x 的坐标。类似地,“上”和“左”象限中的点具有满足y > x 的坐标。

为了区分“下”和“右”以及“上”和“左”象限,我们可以使用另一条线(从左上角到右下角),其公式为y=-x。这次我们看到属于“左”和“下”象限的点具有服从y < -x 的坐标。类似地,属于“右”和“上”象限的点具有满足y > -x 的坐标。

结合这些条件,我们看到坐标为x , y的对象位于:

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

这些条件假设所有四个象限相交的点是用于表示xy的坐标系的原点。在使用这些条件之前,您应该使用眼睛的已知位置执行必要的平移。

请注意,如果要相对于不同位置的几只眼睛执行此过程,则每次必须使用不同的平移。这样做的一个不良后果是,您可能会从两只不同的眼睛看到相同物体的不同象限。这是问题的结果,与您如何解决它无关。

您还需要对恰好位于象限边界上的对象进行分类。选择将要求您更改上面的一些严格的不等式,以便它们允许相等。