Java 确定路径是否描述圆
我试图测试一条路径或多段线是否在java中描述了一个圆。我该怎么做?我正在考虑测试两个点之间的最大距离对于路径上的所有点是否几乎相同(记住一些错误)。这行吗?我还需要检查哪些可能性?圆的一般方程是Java 确定路径是否描述圆,java,geometry,Java,Geometry,我试图测试一条路径或多段线是否在java中描述了一个圆。我该怎么做?我正在考虑测试两个点之间的最大距离对于路径上的所有点是否几乎相同(记住一些错误)。这行吗?我还需要检查哪些可能性?圆的一般方程是a^2+b^2=r^2,中心为(0,0);其中r是圆的半径,a和b是a和b中点的坐标,得到r的值。如果r的值对于a和b的所有值都相同,则路径是圆。 注:-对于点(h,k)处的中心,方程式更改为:- (a-h)^2+(b-k)^2=r^2; 假设2D 计算bbox 因此,从得到的所有采样点x[i],y[
a^2+b^2=r^2
,中心为(0,0);其中r是圆的半径,a和b是a和b中点的坐标,得到r的值。如果r的值对于a和b的所有值都相同,则路径是圆。
注:-对于点(h,k)处的中心,方程式更改为:-
(a-h)^2+(b-k)^2=r^2;
假设2D
因此,从得到的所有采样点
x[i],y[i]
中找到最小和最大x,y
坐标值。让我们把它们称为x0,y0,x1,y1
wherex0看看这是否有助于你的意思,对于每个点,找到到另一个最远点的距离?如果这些距离在一个狭窄的范围内,我们大约有一个圆。我认为它会起作用。以分数(-5,0),(3,-4),(3,4)和(5,0)为例。它们在一个完美的圆上,只是分布不均匀。您的距离将为10、8.94、8.94和10。如果距离足够近,您似乎就在那里。路径/多段线是否可以表示圆弧(例如半圆)?
cx = 0.5*(x1+x0)
cy = 0.5*(y1+y0)
fabs((x1-x0)-(y1-y0)) <= zero_threshold
r = ~0.5*(x1-x0) = ~0.5*(y1-y0)
r = 0.25*(x1-x0 + y1-y0)
d = max ( fabs( (x[i]-cx)^2 + (y[i]-cy)^2 - r^2) )