我有一个线段A(x1,y1),B(x2,y2)和一个带有中心C(x3,y3)的圆。我也有圆的半径。我如何获得切线?
这些切线应始终与线段平行。
P.S。对不起,如果这对你没有意义,我在数学方面非常糟糕。问我任何问题,我只是不知道还有什么需要解决这个任务。感谢。
答案 0 :(得分:0)
我假设您正在寻找斜率= =线斜率的切线。我将详细介绍算法,并将实际代码留给您。
答案 1 :(得分:0)
段定义方向向量
D = (dx, dy) = (b.x - ax, b.y - a.y)
dlen = Length(D) = Sqrt(dx * dx + dy * dy)
半径矢量垂直于切线,它的长度为R.设圆中心为(0,0)(我们将在之后进行校正)。所以
x * x + y * y = R^2
x * dx + y * dy = 0 //scalar product
为未知的x,y解决这个系统,我们有
x = +- R * dy / dlen
y = -+ R * dx / dlen
在修正后,切线的两个基点是
px1 = x3 + R * dy / dlen
py1 = y3 - R * dx / dlen
px2 = x3 - R * dy / dlen
py2 = y3 + R * dx / dlen
这些切线的方向矢量为D,因此您可以将切线的第二个点定义为
px1_2 = x3 + R * dy / dlen + dx
py1_2 = y3 - R * dx / dlen + dy
第一个切线是直通(px1,py1)和(px1_2,py1_2)
请注意,该解决方案适用于任何段的方向(包括水平和垂直)
答案 2 :(得分:0)
以隐式形式
写出AB线的等式a X + b Y + c = 0
其中系数被归一化以便a² + b² = 1
。 https://en.wikipedia.org/wiki/Linear_equation#Two-point_form
两个请求的切线与AB平行,方程
a X + b Y + c' = 0
并且足以表示线条与圆心的距离为R
,
|a Xc + b Yc + c'| = R
在c'
中提供两个解决方案。