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

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

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

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

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

社区建议QQ群:365716997

分类

+1 投票
576 浏览

仿照ColorFunction写VectorColorFunction:

fn = Log[x + I y, z*E^(I w)];
colorBody = Hue[(Arg[fn] + \[Pi])/(2 \[Pi]), 1, 1, 1];
ParallelTable[
 VectorPlot3D[{Re[fn], -Im[fn], Abs[fn]}, {x, -2 \[Pi], 
   2 \[Pi]}, {y, -2 \[Pi], 2 \[Pi]}, {z, -2 \[Pi], 2 \[Pi]}, 
  VectorScale -> {Medium, Automatic, #5^(1/4) &}, 
  VectorColorFunction -> (Function[{x, y, 
        z}, #] &@(colorBody))], {w, -\[Pi], \[Pi], 0.5}]

结果并不能得到预期结果,而且严重的报错。这是怎么回事呢?

分类:BUG | 用户: EmberEdison (806 分)
重新分类 用户:EmberEdison

1个回答

+2 投票
 
已采纳

……疑似是个Bug。你把colorBody最后表示不透明度的1去掉就能正常出图。实际上如果你去检查你那图的InputForm,会发现箭头其实画出来了,但是被加上了一个莫名很小的不透明度。所以用下面的方法修复其实也可:

fn = Log[x + I y, z*E^(I w)];
colorBody = Hue[(Arg[fn] + π)/(2 π), 1, 1, 1];
w = 1;
(VectorPlot3D[{Re[fn], -Im[fn], Abs[fn]}, {x, 0, 2 π}, {y, 0, 2 π}, {z, 0,
      2 π}, VectorScale -> {Medium, Automatic, #5^(1/4) &},
     VectorColorFunction -> (Function[{x, y, z}, #] &@(colorBody))] // Quiet) /.
 RGBColor[r_, g_, b_, a_] :> RGBColor[r, g, b]

顺便下面是一个更简单的重现问题的方法:

VectorPlot3D[{1, 1, 1}, {x, 0, 1}, {y, 0, 1}, {z, 0, 1}, 
 VectorColorFunction -> (Hue[1, 0, 0] &)]

你不妨去SE进一步问问,或者直接报给WRI。

用户: xzczd (2.1k 分)
修改于 用户:xzczd
帮我联系客服吧,是bug的话我就不弄它了。我不会联系客服。。
已反馈。(话说那在线反馈系统总算修好了……)
然而这个bug在11.0并没有被修复= =能帮忙看下有木有反馈么
...