找到两条(切线)线与封闭圆相交的位置

问题描述 投票:0回答:1

我有两个同心圆和两条从外圆上的(单个)点出发的切线。我想确定切线的延伸与外圆相交的位置。如果重要的话,这是用 JS 编写的,在画布上绘图。

enter image description here

我知道 A、R、r、Tb、Tc 的坐标和/或值,[当然还有圆心,我们可以假设它位于 (0, 0)]。我需要找到“B”和“C”的坐标。

欢迎任何帮助/建议。

javascript canvas geometry drawing
1个回答
0
投票

首先找到切点

T
TB
TC
)。到切点的小圆半径矢量垂直于切线,因此这些矢量的标量积为零。向量的长度为
r
,所以我们有方程组:

Tx*(Tx-Ax)+Ty*(Ty-Ay)=0       [1]
Tx^2+Ty^2 = r^2               [2]

对其进行变换,我们得到未知

Tx
坐标

的二次方程
Tx^2-Tx*Ax+Ty^2-TyAy=0
r*r = Tx*Ax+TyAy
Ty = (r^2 - Tx*Ax) / Ay            [3]
Tx^2*Ay^2+(r^2 - Tx*Ax)^2 = r^2*Ay^2

Tx^2*(Ay^2+Ax^2) + Tx*(-2*r^2*Ax) + (r^4-r^2*Ay^2) = 0

解决这个问题,我们得到两个(一般情况下)坐标

TBx, TCx
的解,然后如果
Ay!=0
则从 [3] 计算 Y 坐标,否则从 [2] 计算 Y 坐标。

A-B
向量只是
A-TB
向量的两倍,所以

Bx = Ax + 2*(TBx-Ax) = 2*TBx - Ax
By = Ay + 2*(TCy-Ay) = 2*TBy - Ay

C

类似
© www.soinside.com 2019 - 2024. All rights reserved.