我和我的 friend 花了一两个小时在 java 中编写代码来查找是否由 x[]
表示的点数组(对于 x
坐标)和y[]
(for y
coordinates) 大致形成一个圆或不。
我们做了很多研究,但每次我们最终都会求解 3 个变量的非常大的联立方程。
我们想的是取数组的前3个点,找到这3个点的圆心(圆心),然后我们就可以找到这3个点的圆的半径,如果其他点也满足距离形成中心大致等于半径然后我们有一个圆。
我们如何做到这一点?
最佳答案
"How can we do this?"
基本上,通过做一些数学运算。
假设您有 N 个点 P1 到 Pn。
- 选取一对点 P1 和 P2。
- 找到点 P1 和 P2 之间的直线 L1 的中点 M1。
- 构造另一条直线 R1 与 L1 成直角并通过 M1。
- 对点 P2 和 P3 重复步骤 1 到 3,得到第二条线 R2。
- 找到 R1 和 R2 的交点。也就是候选圆心C。
- 对于每个点Pi,计算从C到Pi的距离。
如果您的点“大致”在一个圆圈内,则每个点到中心的距离将“大致”相同。
步骤 1 到 6 可以用一些简单的代数转化为解析公式。计算出公式,然后将它们转化为代码。
关于java - 确定一组点是否大致构成一个圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174576/