我有两个值,想要从中创建一个矩形。
所以,让我们说:
1 = 1,1
2 = 10,8
所以我想计算左上角会产生 1,8 而右下角会产生 10,1 。 我怎样才能用Java实现这一目标?有没有这样的库或甚至可以使用标准设备?
答案 0 :(得分:1)
根据您的图表和示例,您需要一个具有垂直和水平边的矩形。如果你看一下你当前的例子,你所做的就是将x1和y2作为其中一个点,将x2 / y1作为另一个点。
因此,鉴于Point
s p1
和p2
,您可以执行以下操作:
Point p3 = new Point(p1.x, p2.y);
Point p4 = new Point(p2.x, p1.y);
当然,如果你没有Point
个对象,你可以相应地使用数字作为变量。
答案 1 :(得分:1)
这里有一些代码:
public class Test {
public static void main(String[] args) {
int x1, x2, x3, x4, y1, y2, y3, y4;
x1 = 1; y1 = 1;
x3 = 10; y3 = 8;
x4 = x1;y4 = y3;
x2 = x3; y2 = y1;
System.out.println("(x4,y4)=("+ x4 + "," + y4 + ")\t\t (x3,y3)=(" + x3 + "," + y3+")");
System.out.println("(x1,y1)=("+ x1 + "," + y1 + ")\t\t (x2,y2)=(" + x2 + "," + y2+")");
}
}
结果是:
(x4,y4)=(1,8) (x3,y3)=(10,8)
(x1,y1)=(1,1) (x2,y2)=(10,1)
答案 2 :(得分:1)
您需要做的就是获取现有点的最小值/最大值x / y:
Point p1 = ...
Point p2 = ...
Point upperLeft = new Point(Math.min(p1.x, p2.x), Math.min(p1.y, p2.y));
Point lowerRight = new Point(Math.max(p1.x, p2.x), Math.max(p1.y, p2.y));
注意:这假设x随着你向右走的增加而y随着你的下降而增加。如果您在上升时增加y,请更改为:
Point upperLeft = new Point(Math.min(p1.x, p2.x), Math.max(p1.y, p2.y));
Point lowerRight = new Point(Math.max(p1.x, p2.x), Math.min(p1.y, p2.y));