You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中外接圆圆心与半径获取:我的函数出错了怎么办?

Lua外接圆函数问题修复

你的代码存在两个核心问题,导致运行后无法得到预期结果甚至报错:

  • 缺少返回值:函数计算出圆心坐标和半径后,没有通过return语句将结果返回给调用者,调用时无法获取这些数据。
  • 未处理三点共线场景:当三个点在同一直线上时,分母d会等于0,执行除法操作会触发运行时错误。

以下是修正后的代码:

local function getCircumcircle(x1, y1, x2, y2, x3, y3)
    local d = 2 * (x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2))
    -- 处理三点共线的情况,用极小值判断避免浮点精度误差
    if math.abs(d) < 1e-9 then
        return nil, "三点共线,无法确定外接圆"
    end
    local t1, t2, t3 = x1*x1+y1*y1, x2*x2+y2*y2, x3*x3+y3*y3
    local x = (t1*(y2-y3) + t2*(y3-y1) + t3*(y1-y2)) / d
    local y = (t1*(x3-x2) + t2*(x1-x3) + t3*(x2-x1)) / d
    local radius = math.sqrt((x1-x)*(x1-x) + (y1-y)*(y1-y))
    -- 返回圆心坐标和半径
    return x, y, radius
end

关键说明:

  1. 返回值处理:函数最后通过return x, y, radius将圆心(x,y)和半径返回,调用者可以通过cx, cy, r = getCircumcircle(...)直接获取结果。
  2. 共线判断:使用math.abs(d) < 1e-9替代直接判断d == 0,避免浮点运算精度问题导致的误判,共线时返回错误提示。
  3. 几何计算精度:涉及浮点运算的几何场景,用极小阈值判断相等是通用的避坑手段。

内容的提问来源于stack exchange,提问作者darkfrei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:42:46