已知两圆的圆心半径,求交点坐标——CAD VBA 解决
如下图,两圆坐标分别为(0,0)半径100,,80,0),半径100,交点坐标如下:
通过vba计算代码如下:
Public Function FindCircleIntersections(x1 As Double, y1 As Double, r1 As Double, x2 As Double, y2 As Double, r2 As Double) As VariantDim d As DoubleDim a As Double, h As DoubleDim intersections(1, 1) As Double ' 假设最多有两个交点Dim intersectionCount As IntegerDim discriminant As Double' 计算圆心距d = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)' 检查两圆是否相交或相切If d > Abs(r1 - r2) And d < (r1 + r2) Then' 计算交点a = (r1 ^ 2 - r2 ^ 2 + d ^ 2) / (2 * d)h = Sqr(r1 ^ 2 - a ^ 2)' 第一个交点intersections(0, 0) = x1 + a * (x2 - x1) / dintersections(0, 1) = y1 + Sqr(r1 ^ 2 - (intersections(0, 0) - x1) ^ 2)' 第二个交点intersections(1, 0) = intersections(0, 0) ' x坐标相同intersections(1, 1) = y1 - Sqr(r1 ^ 2 - (intersections(0, 0) - x1) ^ 2)intersectionCount = 2Else' 如果没有交点,返回一个空数组intersectionCount = 0End If' 返回结果If intersectionCount = 0 Then' 如果没有交点,返回空数组FindCircleIntersections = intersectionsElse' 如果有交点,返回包含交点的数组FindCircleIntersections = intersectionsEnd If
End FunctionSub a()
'@yngqq443440204 2024年9月10日18:00:47
Dim b As Variantb = FindCircleIntersections(0, 0, 100, 80, 0, 100)MsgBox "第一个点坐标为:" & b(0, 0) & " ," & b(0, 1) & "第二个点坐标为:" & b(1, 0) & " ," & b(1, 1)Stop
End Sub
CAD二次开发、插件、代码代写,详情见下方↓