The Rate of Turn (ROT) is a critical concept in aviation and marine navigation, defining the number of degrees of heading change per unit of time (usually expressed in degrees per second). Understanding ROT is essential for pilots performing instrument turns, holding patterns, and precise course reversals.
The Aviation Formula
For aircraft, the rate of turn is determined by the True Airspeed (TAS) and the angle of bank. The standard formula used in aerodynamics is:
ROT = (1,091 × tan(Bank Angle)) / True Airspeed
Where:
ROT: Rate of Turn in degrees per second.
Bank Angle: The angle of the wings relative to the horizon (degrees).
True Airspeed: The speed of the aircraft relative to the air mass (knots).
1,091: A mathematical constant derived from the acceleration of gravity and unit conversions (combining knots to ft/s and gravitational constant).
Standard Rate Turn
In Instrument Flight Rules (IFR) flying, a "Standard Rate Turn" is defined as 3 degrees per second. At this rate, an aircraft will complete a full 360-degree circle in exactly 2 minutes (120 seconds). Most turn coordinators in aircraft cockpits are calibrated to indicate this specific rate.
Turn Radius Calculation
This calculator also provides the Turn Radius, which is the physical distance from the center of the turn to the aircraft. The formula for radius in Nautical Miles (NM) is:
Radius = TAS² / (11.26 × tan(Bank Angle))
As airspeed increases, the radius of the turn increases significantly (by the square of the speed) if the bank angle remains constant. To maintain a specific radius at higher speeds, a steeper bank angle is required.
Practical Example
If an aircraft is flying at 120 knots TAS with a 20-degree bank angle:
Calculate Tangent: tan(20°) ≈ 0.364
Calculate Numerator: 1,091 × 0.364 ≈ 397.12
Divide by Speed: 397.12 / 120 ≈ 3.31 degrees per second
This implies the aircraft is turning slightly faster than a standard rate turn.
function calculateRateOfTurn() {
// 1. Get input values
var tasInput = document.getElementById('tasInput');
var bankInput = document.getElementById('bankAngleInput');
var tas = parseFloat(tasInput.value);
var bankAngle = parseFloat(bankInput.value);
// Reset errors
document.getElementById('tasError').style.display = 'none';
document.getElementById('bankError').style.display = 'none';
// 2. Validate inputs
var hasError = false;
if (isNaN(tas) || tas <= 0) {
document.getElementById('tasError').style.display = 'block';
hasError = true;
}
if (isNaN(bankAngle) || bankAngle = 90) {
document.getElementById('bankError').style.display = 'block';
hasError = true;
}
if (hasError) {
document.getElementById('rotResults').style.display = 'none';
return;
}
// 3. Calculation Logic
// Convert degrees to radians for JS Math functions
var bankRadians = bankAngle * (Math.PI / 180);
// Calculate Rate of Turn (Degrees Per Second)
// Formula: ROT = (1091 * tan(bank)) / TAS
var rot = (1091 * Math.tan(bankRadians)) / tas;
// Calculate Time for 360 turn (Seconds) -> Convert to Minutes:Seconds
// Formula: 360 / ROT
var timeSecondsTotal = 0;
if (rot > 0) {
timeSecondsTotal = 360 / rot;
}
// Calculate Radius (Nautical Miles)
// Formula: Radius = TAS^2 / (11.26 * tan(bank))
// Note: 11.26 is the constant for Radius in NM when TAS is in Knots
var radius = 0;
if (bankAngle > 0) {
radius = (tas * tas) / (11.26 * Math.tan(bankRadians));
}
// 4. Formatting Results
// ROT formatting
var rotFormatted = rot.toFixed(2) + ' deg/sec';
// Time formatting (MM:SS)
var minutes = Math.floor(timeSecondsTotal / 60);
var seconds = Math.round(timeSecondsTotal % 60);
// Pad seconds with zero if needed
var secondsStr = seconds = 2.9 && rot = 1.4 && rot <= 1.6) {
category = "Half Standard Rate (approx)";
} else if (rot 4.0) {
category = "Steep Turn";
}
// Handle Bank Angle 0 case specifically
if (bankAngle === 0) {
rotFormatted = "0.00 deg/sec";
timeFormatted = "Infinite";
radiusFormatted = "Infinite";
category = "Straight & Level";
}
// 5. Update DOM
document.getElementById('rotValue').innerHTML = rotFormatted;
document.getElementById('timeValue').innerHTML = timeFormatted;
document.getElementById('radiusValue').innerHTML = radiusFormatted;
document.getElementById('turnCategory').innerHTML = category;
// Show results
document.getElementById('rotResults').style.display = 'block';
}