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

如何计算空间中点与曲面之间的近似最小距离

空间点到曲面的近似最小距离计算

已知某曲面的方程(例如:x²+y²=400)以及一个空间点(例如:(1,2,3)),需计算该点与曲面之间的近似最小距离。以下是实现该需求的Python函数:

def distance_to_surface(equation, point):  
    # 定义函数,返回曲面方程的梯度
    x, y, z = symbols('x y z')
    expr = eval(equation)
    dx = diff(expr, x)
    dy = diff(expr, y)
    dz = diff(expr, z)
    grad_expr = np.array([dx, dy, dz])
    grad_func = lambdify((x, y, z), grad_expr, modules=['numpy' , "sympy"])
    
    # 通过求解方程找到曲面上的一个点
    # 此处固定输入点的x、y坐标,求解对应的z值得到曲面上的点
    x0, y0, z0 = point
    z_func = lambdify((x, y), z - expr, 'numpy')
    z_surface = z_func(x0, y0)
    surface_point = np.array([x0, y0, z_surface])
    
    # 计算输入点与曲面上该点的向量
    v = point - surface_point
    
    # 计算曲面在该点处的法向量
    epsilon = 1e-6
    normal = np.array([
        grad_func(x0 + epsilon, y0) - grad_func(x0 - epsilon, y0),
        grad_func(x0, y0 + epsilon) - grad_func(x0, y0 - epsilon),
        -1
    ])
    normal = normal / np.linalg.norm(normal)
    
    # 计算输入点到曲面的距离
    distance = np.abs(np.dot(v, normal))
    
    return distance

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:03:22