Geometry 如何找到两个点的坐标(作为自然数),这两个点形成一条由x轴限制的圆的切线?
坐标为(Px,Py)和(Qx,Qy)的两点p和Q满足以下特性:Geometry 如何找到两个点的坐标(作为自然数),这两个点形成一条由x轴限制的圆的切线?,geometry,coordinates,points,Geometry,Coordinates,Points,坐标为(Px,Py)和(Qx,Qy)的两点p和Q满足以下特性: 坐标Px、Py、Qx和Qy是整数 Px=−Qx 线PQ与圆心为(0,0)且半径为r的圆相切 0
(x-Px)/(Qx-Px)=(y-Py)/(Qy-Py) or
(x-Px)*(Qy-Py)-(y-Py)*(Qx-Px)=0 or
x*(Qy-Py)+y*(Px-Qx)-Px*Qy+Px*Py+Py*Qx-Py*Px =
x*(Qy-Py)+y*2*Px-Px*(Qy+Py)=0
从零点到该线的距离(圆半径)为
注意,半径和命名符都是整数,所以分母也必须是整数。当2*Px和| Qy Py |是某些点的成员时(例如-12^2+9^2=15^2),这是可能的。因此,您可以使用“生成三元组”方法从上述链接中大大减少搜索并找到所有可能的点对(使用半径检查)
Px=k*m*n(对于m>=n,radiusr=Px*(Qy+Py)/Sqrt((2*Px)^2+(Qy-Py)^2)
Px = k * m * n (for m>=n, radius < k*m*n <= a)
|Qy-Py| = k * (m^2 - n^2)