java - 根据四个角获取正方形的中心

标签 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;
}

我最初的想法是计算中心和角点的距离,然后用距离和角度计算中心点。 当正方形处于正常位置时,这种方法效果很好,但一旦旋转,中心就会偏离。

The dots represent the calculated centers.

点代表计算的中心。

最佳答案

我认为代码对于它的作用来说太复杂了。如果您知道该图形是一个正方形,那么找到中心所需要做的就是计算任意两个对角之间的中点。

mid[0] = (points[0][0] + points[2][0]) / 2;
mid[1] = (points[0][1] + points[2][1]) / 2;

关于java - 根据四个角获取正方形的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504492/

相关文章:

java - 如何在 TextView 中动态显示字符串列表中的项目

java - 从 Java 中查找 unix 命令 PID

JavaFX 位置未设置错误消息

algorithm - 如何使用 32 位整数计算 (2^32)/n

Python 3.3 边余弦规则计算器错误

C++ 用余弦插值数组

java - 根据单击的项目膨胀操作模式菜单

android - 某些 unicode 字符不会在某些设备上呈现

variables - 在 Sass 中乘以百分比

java - 在圆上绘制点