我和我的 friend 花了一两个小时在Java中编写代码,以查找x[](对于x坐标)和y[](对于y坐标)表示的点数组是否大致形成一个圆。

我们做了很多研究,但是每次我们最终要解决3个变量的非常大的联立方程时。

我们正在考虑的是获取数组的前三个点并找到这三个点的中心(圆心),然后我们可以找到由这三个点构成的圆的半径,如果其他点也满足从中心的距离大约等于半径,那么我们有一个圆。

我们应该怎么做?

最佳答案

“我们应该怎么做?”

基本上,通过做一些数学运算。

假设您有N点P1至Pn。

  • 选择一对点P1和P2。
  • 在点P1和P2之间找到直线L1的中点M1。
  • 在与L1成直角的另一条线R1穿过M1。
  • 对点P2和P3重复步骤1至3,以给您第二条线R2。
  • 查找R1和R2的交点。那就是圆的候选中心C。
  • 对于每个点Pi,计算从C到Pi的距离。

  • 如果您的点“大致”成圆形,则每个点到中心的距离将“大致”相同。

    可以使用一些简单的代数将步骤1到6转换为解析公式。制定公式,然后将其转换为代码。

    09-30 19:48