根据4个角落获得正方形的中心

Jul*_*amp 2 java math trigonometry

我的代码有问题,应该给我一个正方形的中心.正方形在double [] []数组中保存为角.

static double[] getMid(double[][] points){
    double[] mid = new double[2];
    double a = Math.sqrt( (points[0][0] - points[1][0]) * (points[0][0] - points[1][0]) 
                        + (points[0][1] - points[1][1]) * (points[0][1] - points[1][1]) );
    a/=2;
    double c = a / Math.sin(Math.toRadians(45));

    mid[0] = Math.sin(Math.toRadians(45)) * c + points[1][0];
    mid[1] = Math.cos(Math.toRadians(45)) * c + points[1][1];

    StdDraw.point(mid[0], mid[1]);

    return mid;
}
Run Code Online (Sandbox Code Playgroud)

我最初的想法是计算中心和角落的距离,然后用距离和角度计算中心点.当正方形处于正常位置时,这可以正常工作,但是一旦它旋转,中心就会偏离.

点表示计算的中心.

点表示计算的中心.

NPE*_*NPE 6

我认为代码太复杂了.如果你知道这个数字是一个正方形,你需要做的就是计算任意两个相对角之间的中点.

mid[0] = (points[0][0] + points[2][0]) / 2;
mid[1] = (points[0][1] + points[2][1]) / 2;
Run Code Online (Sandbox Code Playgroud)