Java 给定两个图形点,确定第二个点与第一个点的方向

Java 给定两个图形点,确定第二个点与第一个点的方向,java,math,coordinates,Java,Math,Coordinates,给定两个图形点,确定第二个点从第一个点开始的方向(N、NE、NW、E、W、S、SE、SW)并显示。如果点相同,则显示“此处” 我可以计算两个点之间的角度,但仍然无法计算出另一个点相对于第一个点的方向 例如,下面是两点的坐标 int x1 = 1; int x2 = 2; int y1 = 3; int y2 = 4; Math.toDegrees( (Math.atan2(y_diff, x_diff))+360 ) % 360 你可以通过比较x,y坐标来确定方向, 例如,您的输入是 int

给定两个图形点,确定第二个点从第一个点开始的方向(N、NE、NW、E、W、S、SE、SW)并显示。如果点相同,则显示“此处”

我可以计算两个点之间的角度,但仍然无法计算出另一个点相对于第一个点的方向

例如,下面是两点的坐标

int x1 = 1;
int x2 = 2;
int y1 = 3;
int y2 = 4;

Math.toDegrees( (Math.atan2(y_diff, x_diff))+360 ) % 360

你可以通过比较x,y坐标来确定方向, 例如,您的输入是

int x1  = 1;
int x2  = 2;
int y1  = 3;
int y2  = 4;
然后计算如下:

x2-x1(等于1)

y2-y1(等于1)

这意味着点1位于点2的左侧,点1位于点2的下方


这意味着它指向北方和东方之间。计算角度后,您可以确定准确的方向。

尝试以下方法

创建一个空字符串,首先比较
y
坐标(因为两个字母的方向总是以“N”或“S”开头)。仅当
y
坐标不相等时才添加“N”或“S”(因为如果它们相等,则方向为“E”、“W”或“here”)。然后对
x
坐标执行相同操作。如果它们不相等,将向字符串中添加“E”或“W”

我在这里使用JavaScript来演示它是如何工作的。这段代码可以很容易地用Java重写

常数方向=(x1,y1,x2,y2)=>{
设d=“”;
d+=y1y2?:S“;
d+=x1x2?“W”:“;
在此处返回d==“”?:d;
};
控制台日志(方向(1,2,3,4))//氖
控制台日志(方向(4,2,5,1))//东南方
日志(方向(0,0,0,1))//N
控制台日志(方向(3,2,1,1))//西南
日志(方向(0,1,2,1))//E

日志(方向(0,0,0,0))//此处
是为了确定点1是指向其他点的方向(N、NE、NW、E、W、S、SE、SW),这是您过度考虑的。你不需要角度。只需计算第二个点的x坐标是否小于第一个点的x坐标,如果小于,则位于西面。诸如此类。(假设北部在+y方向,东部在+x方向)@Prasoon我很乐意帮忙