[英]java draw arc tangent to line
我有一条线,有一个startPoint
p1 (x,y) 和一个endPoint
p2 (x,y)。 我想绘制一条弧,其startPoint
为 p2,到endPoint
p3 (x,y)。 圆弧所属的圆的半径是已知的。 我正在努力实现的目标:
在上图中,忽略字母。 我从谷歌图片中获取了这张图片。
我怎样才能画一条已知radius
r、 startPoint
(线 L 的终点)和endPoint
, tangent
线 L tangent
?
编辑:
我知道如何画圆弧,只是不知道如何画与线端点相切的圆弧。
更新:我找到了另一个完美的示例图片:
这张图片来自 w3schools,我正在努力实现几乎相同的目标。 w3schools 网址
你有点 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.