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

如何找到与四个已知三维坐标点距离在1.9-2.5范围内的点?

寻找满足距离约束的三维点

咱们要解决的问题很明确:给定四个三维坐标点,找到一个点,使得它到这四个输入点的距离全部处于1.9到2.5之间。下面是两组测试点(其中一组无满足条件的点,另一组存在),以及基础的距离计算代码:

基础代码与测试数据

import numpy as np

dist_min = 1.9
dist_max = 2.5
# 该组无满足条件的点
input_points1 = [[ 7.57447956,  6.67658376, 10.79921475],
                [ 8.98026868,  7.69010703, 12.89377068],
                [ 6.22242062,  7.73362942, 12.87947421],
                [ 10.0000000,  9.00000000, 8.500000000]]
# 该组存在满足条件的点
input_points2 = [[ 7.57447956,  6.67658376, 10.79921475],
                 [ 8.98026868,  7.69010703, 12.89377068],
                 [ 6.22242062,  7.73362942, 12.87947421],
                 [ 6.22473072,  4.74175054, 12.96455411]]

def Distance(point1, point2):
    return np.linalg.norm(point1 - point2)

问题本质分析

这个问题的核心是找四个空心球壳的交集:每个输入点作为球心,内半径1.9、外半径2.5的区域。如果这些球壳有共同的重叠部分,就存在满足条件的点;反之则没有。

  • input_points1的四个球壳没有重叠区域,所以找不到符合要求的点
  • input_points2的四个球壳存在交集,因此存在这样的点

验证与寻找有效点的思路

你可以通过随机采样或者数值优化的方式来验证和寻找有效点,这里给出一个简单的随机采样实现:

def find_valid_point(input_points, dist_min, dist_max, num_samples=100000):
    # 先确定候选点的大致范围:输入点的包围盒向外扩展最大距离
    points_np = np.array(input_points)
    min_coords = points_np.min(axis=0) - dist_max
    max_coords = points_np.max(axis=0) + dist_max
    
    for _ in range(num_samples):
        # 生成随机候选点
        candidate = np.random.uniform(min_coords, max_coords)
        # 计算到四个输入点的距离
        distances = [Distance(candidate, np.array(p)) for p in input_points]
        # 检查所有距离是否都在约束范围内
        if all(dist_min <= d <= dist_max for d in distances):
            return candidate
    # 采样次数内没找到就返回None
    return None

# 测试input_points2,大概率会返回一个有效点
print("找到的有效点:", find_valid_point(input_points2, dist_min, dist_max))
# 测试input_points1,会返回None
print("input_points1的结果:", find_valid_point(input_points1, dist_min, dist_max))

运行这段代码,你会看到input_points2能输出一个符合要求的三维点,而input_points1则返回None,正好对应两组数据的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:45:47