某些情况下(如在三维绘图),需要绘制系统坐标系。 首先来看一下三维迪卡尔坐标系的组成:坐标原点(0,0,0),带箭头的坐标轴,坐标轴标签。因此在绘制坐标系时,需要绘制这些元素。
如果无需标签(x、y、z轴的颜色依次是红、绿、蓝),可一行代码搞定
frame3D = {RGBColor[#], Arrowheads[0.05], Arrow@Tube[{{0, 0, 0}, #}, 0.01]} & /@ IdentityMatrix[3]; Graphics3D[frame3D]实际上,MMA功能强大,使用灵活,实现同一功能有不同的方法(函数),上述有标签的坐标系也可以使用 MapThread函数实现
(*使用MapThread函数实现*) f[i_, t_, p_] := {RGBColor[i], Arrowheads[0.05], Arrow@Tube[{{0, 0, 0}, i}, 0.01], Text[Style[t, FontSize -> 16], p]} frame3D = MapThread[ f, {{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, {"X", "Y", "Z"}, {{1.1, 0, 0}, {0, 1.1, 0}, {0, 0, 1.1}}}]; Graphics3D[frame3D]上述无标签的坐标系也可以使用Table函数实现
(*使用Table函数实现*) frame3D = Table[{RGBColor[i], Arrowheads[0.05], Arrow@Tube[{{0, 0, 0}, i}, 0.01]}, {i, {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}] Graphics3D[frame3D]效果一样,已经通过测试。