给定两个图形点确定第二个点距离第一个点的方向

时间:2018-02-07 05:50:16

标签: java math coordinates

给定两个图形点确定在哪个方向(N,NE,NW,E,W,S,SE,SW),第二个点来自第一个并显示。如果点是'here'相同的显示。

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

例如,下面是两点的坐标

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

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

2 个答案:

答案 0 :(得分:2)

尝试以下方法。

创建一个空字符串并首先比较y坐标(因为双字母方向始终以'N'或'S'开头)。仅当y坐标不相等时才添加“N”或“S”(因为如果它们相等,则方向为“E”,“W”或“此处”)。然后使用x坐标执行相同操作。如果它们不相等,则会在字符串中添加“E”或“W”。

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

const direction = (x1, y1, x2, y2) => {
    let d = "";
    d += y1 < y2 ? "N" : y1 > y2 ? "S" : "";
    d += x1 < x2 ? "E" : x1 > x2 ? "W" : "";
    return d === "" ? "here" : d;
};

console.log(direction(1, 2, 3, 4)); //NE
console.log(direction(4, 2, 5, 1)); //SE
console.log(direction(0, 0, 0, 1)); //N
console.log(direction(3, 2, 1, 1)); //SW
console.log(direction(0, 1, 2, 1)); //E
console.log(direction(0, 0, 0, 0)); //here

答案 1 :(得分:0)

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

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

然后计算以下内容,

x2 - x1(等于1)

y2 - y1(等于1)

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

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