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...