As Russia continues to rain terror across Ukraine with kamikaze drones, I have been working overtime to upgrade the open-source ballistic calculator pyballistic to handle aerial targets. There will never be enough anti-aircraft defenses to cover a country that large, with an attacker who can send drones across any point in a border more than 1,400 miles long. But maybe we can save lives by increasing the number of ordinary firearms that can successfully hit these drones.
Many shooters know that they have to adjust a ballistic solution when a target is at a different height from them – uphill or downhill. They may be familiar with a heuristic known as the Rifleman’s Rule (a.k.a. the cosine rule) for making that adjustment. But not many shooters or ballistic calculators are prepared for the extreme high-angle shots necessary to hit a drone, which is most likely to be within range of small arms when passing nearly overhead.
So our next release of py_ballisticcalc (v2.2) includes terms and calculations designed for this problem. And we need shooters to be aware of the second frame of reference that becomes critical in these scenarios: the slant frame.
Two Frames: Horizontal and Slant
In ballistics, we have two natural points of reference: gravity, and our line of sight.
Gravity’s Horizontal Frame: Gravity defines our vertical axis: hang a weight on a string and the string will be “vertical.” The horizontal plane is everything perpendicular to that. In this frame, we measure a projectile’s position by its horizontal distance from the shooter and its height above or below that plane. The ballistic coordinate system for the gravity frame looks like this:

The Shooter’s Slant Frame: The second frame is defined by the shooter’s Line of Sight (LoS) to the target. When you’re looking up at a drone, your LoS is tilted at a significant look angle (or slant angle) to the horizon. In this frame, we switch from horizontal distance and height to slant distance and slant height. The straight-line distance to the target is its slant range. From the shooter’s perspective, what matters is how his bullets will fly relative to the view through his sight as he points at the target. Tactical concepts like maximum ordinate and danger space are measured relative to that line, not the horizon, so instead of height relative to the horizontal plane we concentrate on slant height.
For flat fire, these two frames are nearly identical. But as the look angle increases, the difference becomes dramatic, and the shooter’s frame of reference – the slant frame – becomes critical for hitting targets.
Visualizing the Difference
The relationship between these two frames is a simple trigonometric rotation, but seeing it can make it click. The diagram below shows a single point on a high-angle trajectory. You can see how the slant-distance and slant-height (in purple and black) relate to the standard distance and height (in blue and green) based on the look angle (theta).

The “Rifleman’s Rule” approximates this transformation by using the cosine of the sight angle to adjust the horizontal range. It’s a good approximation at moderate angles, but it ignores the fact that gravity is no longer acting perpendicular to the bullet’s path and that air density changes with altitude. For the extreme angles required to hit an aerial target, the approximation is inadequate.
This isn’t just an academic exercise. For defenders trying to stop an aerial drone, getting the correct holdover relative to their sight picture is a matter of life and death. By properly calculating and understanding the slant trajectory, we can give them the data they need to make that shot.