三维空间中与线段等距的点的方程求解
嘿,我来帮你搞定这个问题!你已经清楚三维空间里到单个点等距的点会构成球面,方程是$x2+y2+z2=r2$,这个基础没问题。现在要找的是到线段AB等距的点的集合——也就是你说的那种“药丸形状”,中间是圆柱,两端各接一个半球,对吧?我来一步步拆解它的数学表达:
首先先明确线段的参数:我们有两个端点$A(x_1,y_1,z_1)$和$B(x_2,y_2,z_2)$,线段AB可以用参数方程表示为$A + t\vec{AB}$,其中$t∈[0,1]$,$\vec{AB}=(x_2-x_1,y_2-y_1,z_2-z_1)$就是从A指向B的向量。
接下来分三种情况描述这个“药丸体”的不同部分:
1. 中间的圆柱部分
当点$P(x,y,z)$到线段AB的垂足落在线段内部(不是A或B端点)时,P属于这个圆柱区域。
此时的核心条件是:点P到直线AB的距离等于设定的等距半径r。用向量叉乘可以写出距离公式:
$$\frac{|\vec{AP} \times \vec{AB}|}{|\vec{AB}|} = r$$
把向量展开后,平方两边去掉绝对值和分母,得到具体的方程:
$$[(y-y_1)(z_2-z_1)-(z-z_1)(y_2-y_1)]^2 + [(z-z_1)(x_2-x_1)-(x-x_1)(z_2-z_1)]^2 + [(x-x_1)(y_2-y_1)-(y-y_1)(x_2-x_1)]^2 = r^2 \cdot [(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2]$$
同时要满足垂足在线段内部的条件:$\vec{AP}·\vec{AB} ≥ 0$ 且 $\vec{BP}·\vec{AB} ≤ 0$(也就是参数t在0到1之间对应的区域)。
2. 端点A处的半球部分
当点P到线段AB的垂足就是端点A时,P属于这个半球。
此时的条件是:点P到A的距离等于r,并且P在过A且垂直于AB的平面远离B的一侧(这样才会和圆柱衔接成药丸的一端)。对应的方程和条件是:
$$(x-x_1)^2 + (y-y_1)^2 + (z-z_1)^2 = r^2$$
$$\vec{AP}·\vec{AB} ≤ 0$$
3. 端点B处的半球部分
和A端的情况对称,当垂足是端点B时,P属于这个半球:
$$(x-x_2)^2 + (y-y_2)^2 + (z-z_2)^2 = r^2$$
$$\vec{BP}·\vec{AB} ≥ 0$$
把这三个部分合起来,就是完整的“药丸形状”的点集——它是一个无缝拼接的闭集,由圆柱面和两个半球面共同构成。
备注:内容来源于stack exchange,提问作者Vlad

