电脑
Mathematica
先来绘制一个三维曲线。tt={Cos[v] Cos[9 Sin[v]], Cos[v] Sin[9 Sin[v]], Sin[v]};a = ParametricPlot3D[tt, {v, 0, 2 Pi}, Axes -> False, Boxed -> False]
观察者绕着Z轴转圈:x = Show[a, ViewPoint -> 2 {Cos[#], Sin[#], 0}, SphericalRegion -> True, ImageSize -> 365] & /@ Range[Pi/18, 2 Pi, Pi/18];
这些观察点的轨迹形成一个圆圈。
观察者绕着X轴旋转,似乎走到一半又走了回头路?
来看一个更加明显的例子:a = ParametricPlot3D[r[v, 2 Sin[v]], {v, 0, 2 Pi}, Axes -> False, Boxed -> False];x = Table[ Show[a, Graphics3D[{Green, PointSize[0.02], Point[{r[t, 2 Sin[t]]}]}], ViewPoint -> 2 r[t, 2 Sin[t]], SphericalRegion -> True, ImageSize -> 365], {t, Pi/180., 2 Pi, Pi/180.}];图中绿色点就相当于观察点吧,明显走了回头路啊。
但是,观察者应该遍历整个曲线啊。a = Show[ParametricPlot3D[r[v, 2 Sin[v]], {v, 0, 2 Pi}, Axes -> False, Boxed -> False], ListPointPlot3D[r[#, 2 Sin[#]] & /@ Range[0, 2 Pi, Pi/18], PlotStyle -> Green]];图中红色点是观察点。而绿色点是在曲线上的采样点。注意,ViewPoint的坐标,是曲线上点坐标的二倍。