圆柱表面给定两点间最短路径的参数方程求解
问题描述
假设我们有一个圆柱,它的方程是:
$$x^2 + y^2 = R^2$$
现在给定两个点:$A = (R, 0, 0)$ 和 $B = (0, R, h)$,我们需要找出连接这两点的最短长度曲线的参数方程。
我的尝试过程
解决这类曲面最短路径问题,最直观的思路就是把曲面展开成平面——毕竟平面上两点之间线段最短嘛!
我是这么操作的:把圆柱沿着过点$A$的母线剪开,展开成一个平面。在这个展开平面里,我把点$A$设为原点,让$x'$轴沿着圆柱原来的周长方向(也就是展开前绕轴线的弧长方向),$y'$轴平行于圆柱的轴线(也就是z轴方向)。
这时候展开平面和原圆柱的坐标对应关系是:
$$x' = R\theta \quad , \quad y' = z$$
这里$\theta$是原圆柱坐标系里的极角(x-y平面内从x轴正方向转过的角度),$R\theta$就是对应的弧长,这样长度单位才能统一。
现在看展开平面里的点$A$和$B$:
- 点$A$的展开坐标是$(0, 0)$
- 点$B$在原圆柱里的极角是$\frac{\pi}{2}$(因为从$(R,0)$转到$(0,R)$),z坐标是$h$,所以展开后的坐标是$\left(R \cdot \frac{\pi}{2}, h\right)$
这时候连接$A$和$B$的最短路径就是平面上的直线段,这条直线的斜率是$\frac{h}{R \cdot \frac{\pi}{2}} = \frac{2h}{\pi R}$,所以直线方程是:
$$y' = \frac{2h}{\pi R} x'$$
接下来把展开平面的坐标转换回圆柱的三维坐标就行啦。我们知道圆柱的参数方程用$\theta$表示的话是:
$$x = R\cos\theta, \quad y = R\sin\theta, \quad z = z$$
把$x' = R\theta$和$y' = z$代入直线方程,就能得到:
$$z = \frac{2h}{\pi} \theta$$
这样我们就可以用$\theta$作为参数,写出最短路径的参数方程了,$\theta$的取值范围是从0到$\frac{\pi}{2}$:
$$\begin{cases}
x(\theta) = R\cos\theta \
y(\theta) = R\sin\theta \
z(\theta) = \frac{2h}{\pi} \theta
\end{cases} \quad \theta \in \left[0, \frac{\pi}{2}\right]$$
如果觉得用$\theta$作为参数不够直观,也可以用一个归一化的参数$t \in [0,1]$来表示,令$\theta = \frac{\pi}{2} t$,代入后得到:
$$\begin{cases}
x(t) = R\cos\left(\frac{\pi}{2}t\right) \
y(t) = R\sin\left(\frac{\pi}{2}t\right) \
z(t) = h t
\end{cases} \quad t \in [0,1]$$
这个参数方程描述的就是圆柱表面连接$A$和$B$的最短路径,也就是圆柱上的测地线。
备注:内容来源于stack exchange,提问作者user948761

