从2分获得Square角落

时间:2014-11-24 11:28:28

标签: java math points

我有两个值,想要从中创建一个矩形。

enter image description here

所以,让我们说:

1 = 1,1
2 = 10,8

所以我想计算左上角会产生 1,8 而右下角会产生 10,1 。 我怎样才能用Java实现这一目标?有没有这样的库或甚至可以使用标准设备?

3 个答案:

答案 0 :(得分:1)

根据您的图表和示例,您需要一个具有垂直和水平边的矩形。如果你看一下你当前的例子,你所做的就是将x1和y2作为其中一个点,将x2 / y1作为另一个点。

因此,鉴于Point s p1p2,您可以执行以下操作:

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));
相关问题