Maxima で射方投射の速度ベクトルと軌道を描く

gnuplot で射方投射の速度ベクトルと軌道を描く」の Maxima 版。

$\theta = 45$° の射方投射を規格化した時間と座標で書くとこんな感じ。

In [1]:
x(t):= 2 * t$
y(t):= 2 * t - t**2$

vx(t):= 2$
vy(t):= 2 - 2*t$

point と vector のデータを作成します。

In [2]:
/* 丸を打つ座標のリスト */
pointxy: makelist([x(t/2), y(t/2)], t, 0, 4)$

scaling: 0.2$
/* 2次元ベクトルは vector([始点のx, 始点のy], [x成分, y成分]) */
/* 速度ベクトル */
vecV: makelist(
        vector([x(t/2), y(t/2)], scaling*[vx(t/2), vy(t/2)]), t, 0, 4)$

/* 速度の x 成分 */
vecVx: makelist(
         vector([x(t/2), y(t/2)], scaling*[vx(t/2), 0]), t, 0, 4)$

/* 速度の y 成分 */
vecVy: makelist(
         vector([x(t/2), y(t/2)], scaling*[0, vy(t/2)]), t, 0, 4)$
In [3]:
draw2d(
  /* 全体的なフォントの設定例 */
  font = "Arial", font_size = 14, 
  /* title のフォントサイズの変更例。gnuplot の流儀。 */
  title = "{/=16 射方投射の速度ベクトルと軌道}", 

  /* 表示範囲 */
  xrange = [-0.5, 4.5], yrange = [-0.5, 2],
  /* 縦横比 */
  proportional_axes=xy,
  /* グリッド。y 軸の目盛を 1 ごとに */
  grid = true,
  ytics = 1, 
  xaxis = true, yaxis = true,
  
  /* 射法投射の軌道 */
  line_width = 2, 
  color = purple,
  parametric(x(t), y(t), t, 0, 2), 

  /* ベクトルの矢の設定 */
  head_length = 0.1,
  head_angle  = 20, 
  
  /* 速度の x 成分 */
  color = blue, 
  line_width = 1.5,
  /* 1つだけに凡例をつける */ 
  key = "速度の x 成分",
  vecVx[1], 
  key = "",
  vecVx, 

  /* 速度の y 成分 */
  color = red, 
  line_width = 1.5,
  /* 1つだけに凡例をつける */ 
  key = "速度の y 成分",
  vecVy[1], 
  key = "",
  vecVy, 

  /* 速度ベクトル */
  color = black, 
  line_width = 2,
  /* 1つだけに凡例をつける */ 
  key = "速度ベクトル",
  vecV[1],
  key = "",
  vecV, 
  
  /* 丸を打つ */
  point_type = 6,
  point_size = 0.7,
  color = dark-green,
  points(pointxy)
)$

In [4]:
/* 弘大 JupyterHub では 
   set_draw_defaults(file_name="~/.maxplot",terminal='svg)$
   されているので。*/
system("cp ~/.maxplot.svg ./maxvec-shahou.svg")$