Geometry 如何找到两个点的坐标(作为自然数),这两个点形成一条由x轴限制的圆的切线?

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

坐标为(Px,Py)和(Qx,Qy)的两点p和Q满足以下特性:

  • 坐标Px、Py、Qx和Qy是整数
  • Px=−Qx
  • 线PQ与圆心为(0,0)且半径为r的圆相切
  • 0 我如何找到所有这样的点对p和Q

    例如,在下面的图像中,我有一个半径为r=2、极限为a=6的圆。点P=(6,2)和Q=(−6.−7) 是一种解决方案,因为:

  • P和Q的坐标是整数
  • Px=−Qx
  • 线PQ与圆相切
  • 0 但这只是一双。我需要找到所有这样的一对。有有限数量的解决方案

    那么,有没有办法检查点的坐标是否与圆相切,是否为整数,然后将它们全部列出?我已经研究了斜率方程和从圆心到直线方程的最短路径,然而,在第一种情况下,它需要知道坐标(我可以通过强制每个数字来实现,但我看不到模式,因为我的直觉告诉我应该应用某种方程),在第二种情况下,我必须知道斜率方程

    这是我提出的算法,但我认为它不正确或不够好:

  • 找到所有1的斜率方程y=mx+b≤ 二甲苯≤ a和−A.≤ Qx≤ −一,
  • 对于每个y=mx+b,检查它是否与圆相切(如何做到?)
  • 如果为true,则返回该对
  • 线路PQ具有以下等式:

    (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)