それじゃあ面倒だが>>359方式で…途中の式は省く
1 / cos(r)^2 = 1 + tan(r)^2
を使えばtan(r)の2次式に変形できる

a * tan(r)^2 + b * tan(r) + c = 0
とすると

b = x1 - x0;
a = -g * b * b / (2 * v * v);
c = y0 - y1 + a;

/* d は判別式。d < 0 なら解なし */
d = b * b - 4 * a * c;

/* 解の公式でtan(r)を求める */
tan_r = (-b + sqrt(d)) / (2 * a);
//tan_r = (-b - sqrt(d)) / (2 * a); どちらの解も目標位置を通る

r = atan(tan_r);

loop:

t += dt;
x = x0 + v * cos(r) * t;
y = y0 + v * sin(r) * t - g * t * t / 2;

goto loop;

一応動いたけど左向きに発射するときは初速度をマイナスにしないとダメっぽい