公告:网站程序已升级到1.8.3,修复了提问时可能报错的问题,请清除浏览器缓存
2019-11-10

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
455 浏览

想给一个变形圆柱壳上色,最好是彩虹色。

圆柱壳坐标(X,Y,R),假设其半径为 r=1,长度L=10,变形为dw,是X和Y的函数。

r=1;
L=10;
dw=0.005` Re[

   E^(I Y) (1 - (0.51 + 

         0.82 I) E^((-2.016*^-13 + 0.111 I) X) - (5.19 - 

         2.39 I) E^((-9.763*^-15 - 13.42 I) X) + (5.20 + 

         2.63 I) E^((-3.44*^-15 + 12.15 I) X) + (5.20 - 

         2.63 I) E^((3.44*^-15 - 12.15 I) X) - (5.19 + 

         2.39 I) E^((9.76*^-15 + 13.42 I) X) - (0.51 - 

         0.82 I) E^((2.01*^-13 - 0.11 I) X) - (0.19 + 

         2.56*^-13 I) X)];

变形后的圆柱壳绘图:

Wr = ParametricPlot3D[{(dw + r) Cos[Y], (dw + r) Sin[Y], X}, {X, 0, 

   L}, {Y, 0, 2 Pi}, Axes -> False, Boxed -> False, Mesh -> None, 

  ColorFunction -> Function[{x, y, z, X, Y}, Hue[dw]], 

  ColorFunctionScaling -> False, ViewPoint -> {0, -Infinity, 0}, 

  PlotRange -> All, PlotPoints -> 90]

得到图像如下:

这个图里就三种颜色,太难看了。能不能用彩虹色表示变形量dw的大小?就像有限元软件里显示的云图那样?

用户: lkc_dlut (76 分)
标签修改 用户:lkc_dlut

3 个回答

+1 投票

在绘图函数ParametricPlot3D[{fx, fy, fz},{u,umin,umax}, {v,vmin,vmax}]中,选项ColorFunction可以接收5个参数:

  • 前3个参数是方程的值fx, fy, fz,
  • 后2个参数是方程的参数u, v

 从代码上看,你是了解该函数的。

但忽略了dw的值在定义域内本身很小,还有负值的情况,所以显示的基本上都是红色。

因此可以加个绝对值,再乘个系数。比如,

ColorFunction -> Function[{x, y, z, X, Y}, Hue[10 Abs[dw]]]

用户: 野鹤 (4.9k 分)
+1 投票

自定义一个颜色数据方案,添加到ColorData里引用即可。详见:

https://mathematica.stackexchange.com/questions/57885/is-it-possible-to-insert-new-colour-schemes-into-colordata

用户: lkc_dlut (76 分)
+1 投票

感谢@野鹤的回答,确实是因为没有考虑定义域导致颜色集中在一个很小的域内,乘以合适的系数后得到的图如下:

比原帖图漂亮了很多。

为了和有限元软件的结果对比,我在stackexchange论坛里找到一个自定义颜色库的代码,然后做出了以下的图:

显示结果和有限元的颜色库非常像了。

自定义颜色方案代码链接见我前一个回答。

希望对需要的人有所帮助。

用户: lkc_dlut (76 分)
...