単純にURLの奴と比較すると
double subx = Math.Abs(cmd.dx - cmd.sx),suby = Math.Abs(cmd.dy - cmd.sy);
⇒double subx = cmd.dx - cmd.sx ,suby = cmd.dy - cmd.sy;
あと
double vx = cmd.dx - cmd.sx > 0 ? cmd.vx : -cmd.vx;
が要るのか謎

まぁ普通は>>355が言うように角度は与えないな。
普通は速度一定で角度をatan使って計算する。