好的,首先道歉,因为我知道这个问题不止一次被提出过.然而,即使在查看了其他问题和答案之后,我也无法将其用于我的情况.请参阅下面的示例:

我只是试图解决P1和P2之间的角度,假设0度如上所示,这样我就可以在正确的方向上指向2之间的箭头.所以我做这样的事......
Point p1 = new Point(200,300); Point p2 = new Point(300,200);
double difX = p2.x - p1.x; double difY = p2.y - p1.y;
double rotAng = Math.toDegrees(Math.atan2(difY,difX));
Run Code Online (Sandbox Code Playgroud)
它出现为:-45,它应该是45?然而,我不认为它会返回负面结果,例如,如果我将P1更改为300,300(低于P2),则角度应为0,但返回为-90.
所以我只是想知道是否有人可以指出我做错了什么来计算这个,或者甚至可以这样做呢?
如果这个问题已经得到回答,我很抱歉,虽然我确实有一个广泛的外观,但无法找到答案.总结一下情况我试图创建一个模拟器程序,处理不同的捕食者和猎物生物,目前有让每个生物检查它旁边的生物类型的问题,我更愿意检查是否instance属于同一个对象.
所以说例如我做了这个:
private class Creature {
...
Creature [] fish = new Creature();
Creature [] shark = new Creature();
Creature [] penguin = new Creature();
}
Run Code Online (Sandbox Code Playgroud)
然后在循环中创建每个类型的几个实例(生物),如下所示:
for (int f=1;f<rnd;f++) {
fish[f] = new Creature();
//set attributes of creature
Run Code Online (Sandbox Code Playgroud)
然后程序可以告诉他们相对于彼此的位置我创建了一个网格系统,如下所示:
Creature [][] gridloc = new Creature[x][y]; //relates to number of spaces tiles that determines movement.
Creature [] crloc = new Creature[tc]; //stores a reference to all creatures created.
...
crloc[tc] = fish[f]; gridloc[x][y]=crloc[tc] //or fish[f]
}
Run Code Online (Sandbox Code Playgroud)
无论如何总结甚至我在那里总结了相当多的代码,这一切都有效,但是当让每个生物在gridloc中检查旁边有什么例如捕食者时我不确定是否找到另一个生物来检查确定这是同一对象类型的实例还是不同的实例.所以类似于:
if (!gridloc[x][y].getObject().equals(gridloc[x+1][y].getObject()) //if …Run Code Online (Sandbox Code Playgroud)