gpt4 book ai didi

javascript - 求线段和圆之间的切线

转载 作者:行者123 更新时间:2023-11-28 03:51:02 25 4
gpt4 key购买 nike

我有一条线段 A (x1, y1)、B (x2, y2) 和一个以 C (x3, y3) 为圆心的圆。我还有圆的半径。如何获得切线?

This is what I am trying to make

这些切线应始终与线段平行。

附注抱歉,如果这对你来说没有意义,我的数学非常糟糕。有任何问题都可以问我,我只是不知道还需要什么来解决这个任务。谢谢。

最佳答案

线段定义方向向量

 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) 的线

请注意,该解决方案适用于线段的任何方向(包括水平和垂直)

关于javascript - 求线段和圆之间的切线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com