我正在努力寻找一种方法来获取坐标x和坐标Y的最接近点的右侧和下方(如果存在),否则将什么也不会打印。
public class CheckForIntersection {
double x1, x2, x3, x4, y1, y2, y3, y4, a, b, c, d, e, f, checkLinear, x, y;
CheckForIntersection(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.x3 = x3;
this.y3 = y3;
this.x4 = x4;
this.y4 = y4;
checkintersection();
}
public double getx() {
return x;
}
public double gety() {
return y;
}
public void checkintersection() {
a = y1 - y2;
b = -(x1 - x2);
c = y3 - y4;
d = -(x3 - x4);
e = (y1 - y2) * x1 - (x1 - x2) * y1;
f = (y3 - y4) * x3 - (x3 - x4) * y3;
checkLinear = (a * d) - (b * c);
x = ((e * d) - (b * f)) / checkLinear;
y = ((a * f) - (e * c)) / checkLinear;
System.out.println(a + " " + b + " " + c + " " + d + " " + e + " " + f);
checknearestNeighbour(x, y);
if (checkLinear == 0) {
System.out.println("the intersection is parallel");
} else {
System.out.println("X coordinate:" + x + " X coordinate:" + y);
}
}
}
以下参数的结果应为2.88889、1.1111。
答案 0 :(得分:2)
我认为“网格”是指这样的结构:
x - x - x
| | |
x - o - o
| | |
o - x - x
其中x =节点&o =无节点 (假设所有交叉点之间的距离相等)
要确定所有音符的坐标,您需要一个起点(坐标原点)。 可以在网格的左上方或左下方,由您决定。
然后,您可以逐行循环(一个循环为水平线,一个循环为每行中的元素),在每个相交处检查是否有节点(此ofc需要一种确定相交的方法) 。由于它是一个网格(相同的距离),因此您可以为步骤运行一个简单的计数器,并确定一行中每个交叉点的坐标。如果找到节点,请存储这些信息
您现在可以在遍历网格以提高效率时回答问题,也可以在收集信息后分步进行。