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

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

这是一张可以更好解释的图片:

因此,最后一个问题是:如何找出对象在哪些象限中?给定对象在未旋转坐标系中的位置.

附加信息:

>有关对象位置的所有信息都存储为4值向量(矩形),并存储为[x,y,宽度,高度]
>当然是2D

解决方法:

令x,y为对象在平移的非旋转坐标系中的坐标,以使眼睛位于原点.您可以利用两个线性函数的基本属性,这些线性函数的图表将您的模拟空间划分为所绘制的四个象限(“左”,“上”,“右”和“下”).

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

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

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

>“左”象限iff y> x和y< -X
>“向下”象限iff y< x和y< -X
>“右”象限iff y< x和y> -X
>“上”象限iff y> x和y> -X

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

请注意,如果要相对于具有不同位置的几只眼睛执行此过程,则每次必须使用不同的平移.一个不希望的结果是,您可能从两只不同的眼睛到达同一对象的不同象限.这是问题的结果,与解决问题的方式无关.

您还需要选择准确位于象限边界上的对象的分类.这种选择将要求您更改上述一些严格的不平等现象,以便允许平等.

上一篇:java-HLA-timeAdvanceRequest()的用法


下一篇:使用Java生成mp3 / wav / ogg波形