java绘制圆弧切线到

时间:2017-10-12 11:34:39

标签: java math

我有一行,startPoint p1(x,y)和endPoint p2(x,y)。我想绘制一个弧,其startPoint为p2,为endPoint p3(x,y)。弧是其中一部分的圆的半径是已知的。我想要实现的目标:

example

在上图中,忽略了这些字母。我从谷歌图片中拍摄了这张图片。

如何绘制知道radius r,startPoint(L行的终点)和endPointtangent到L行的弧?

编辑:

我知道如何绘制圆弧,我只是不知道如何绘制与该线的端点相切的圆弧。

更新: 我找到了另一个完美的示例图片:

example 2

这张照片来自w3schools,我正在尝试实现几乎相同的东西。 w3schools url

1 个答案:

答案 0 :(得分:1)

你有点P1,P2,P3和矢量

D = P2 - P1   //(x2-x1, y2-y1)

获取单位矢量

uD = D / Length(D)

和垂直单位矢量

uP = (-uD.y, uD.x)

检查所需的垂直方向

dp = uP.dot.(x3-x1, y3-y1) 

如果dp为负,则取消uP向量以提供圆心的正确位置

然后找到圆心

C = P2 + uP * Radius

如果您需要开始和结束角度以形成弧线,请使用atan2(ArcTan2)函数计算它们

P2C = P2 - C  //really -uP*radius
A2 = atan2(P2C.y, P2C.x)

P3C = P3 - C
A3 = atan2(P3C.y, P3C.x)
相关问题