The idea is to have an easily invertible function that maps the effective position---where the projectile would be if there were no drag---to the actual position of the projectile. Then to hit a target point, we simply invert the target coordinates and aim at that point instead.
Basics
Let the function that maps the effective position of the projectile to the actual position be
The trajectory of a dragless projectile is
The trajectory of the projectile after drag is then
To hit a point , we instead aim at
as if there were no drag.
Choosing the function
Of course, is a very large space. Let us see what sort of functions might be appropriate.
- should be continuous.
- doesn't necessarily have to be onto---it's fine if shells can't reach some parts of the world. But it should probably be one-to-one, as otherwise we will almost certainly suffer discontinuities in the inverse.
- One possibility for simplification is making depend on and/or affect only the distance from the origin. However, this could cause some strange trajectories with high-angle fire.
- Another is to separate the and directions so that and .
- In fact, we may even consider dispensing with modifying at all, in which case , , and .
- could of course also depend on fixed properties of the projectile.
- should map the origin to the origin, and we should have (no scaling near the origin).
Some x-only possibilities
- for some maximum horizontal range parameter . This corresponds to linear drag in the horizontal axis only.
- . This corresponds to quadratic drag in the horizontal axis only.
Other considerations
- At the least additional work would be needed to deal with inherited velocity.
- Affecting only the horizontal axis will cause shells to plunge pretty heavily at the end. Though maybe that could be a feature. On the other hand, if they keep their vertical velocity in space, they will tend to curve upwards...