给定两个图形点确定在哪个方向(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
答案 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的下方
这意味着它指向北方和东方。计算出角度后,您可以确定准确的方向。