螺线管圆环

h = ParametricPlot3D[
    RotationTransform[a, {0, 0, 1}][{6, 0, 0} + 
      RotationTransform[80 a, {0, 1, 0}][{0, 0, 1}]], {a, 0, 2 Pi}, 
    PlotPoints -> 50, Evaluated -> True, Boxed -> False, 
    Axes -> False, 
    PlotStyle -> 
     Directive[Orange, Opacity[1], Specularity[White, 50]], 
    ImageSize -> 900, PlotRangePadding -> {-0.02, -0.02}] /. 
   Line[pts_, rest___] :> Tube[pts, 0.095, rest];

Export["solenoid.png", h]

任意无限连续可微的空间曲线上,如果在其外套上一个螺线管,则如何求螺线管的曲线参数方程?

这个情形属于最简单的之一,比直线螺线管当然复杂些。 

思路是取x-z坐标平面上一点,做XOZ平面的旋转(加上螺线管中心大圆半径尺度的平移,该平面上旋转的角度只能与中心的空间曲线的弧长成比例,否则螺线管的螺距就不均匀了,所以涉及到空间曲线的弧长的积分;这种在一般平面的旋转其实是以切线T方向为轴的空间旋转而已),然后移动这个点,求它的轨迹。

从而就是一个旋转和平移+旋转的复合而已。


如果考虑任意无限连续可微的空间曲线,能想到的一般的方法只能是Frenet坐标中的主法线(N,normal)和副法线(B,binormal)作为旋转所在的平面,然后沿着切线(T, tangent)的方向移动,通过这种方式获取点的轨迹的空间参数。不过,如果曲线本身复杂,求Frenet坐标也会高难,进而计算坐标变换就不宜; 而且曲线的参数t与旋转的要一致,也可能产生较大的计算量。


这种计算每次都让我想起goodbear和当时的一个很随性的问题http://blog.csdn.net/stereohomology/article/details/4666222.

后来过了很多年,看goodbear的复旦BBS的帐号的昵称:

goodbear (0518|男人没一个好东西) 于 2009年10月12日22:57:45 星期一 提到

这才意识到,goodbear是个女生!


是的,我一向是个愚钝的人。至今没有变得更敏捷。


对于任意可微的空间曲线,也可以建立类似的方程,不过取一些简单的作为例子吧:


近些时间,发现Mathematica的 Export (到GIF)函数,以及 Tube 函数, 都存在各种各样的bug, 非常遗憾. 比如, 把上面的曲线Tube化之后居然意外地有很多接头出现:


改用Graphics3D + Spline方式, 不能彻底改善接头的问题:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值