The E6B flight computer, often called a "whiz wheel," is a form of circular slide rule used in aviation. It's an essential tool for pilots to perform various calculations related to flight planning and in-flight navigation. While modern electronic flight bags (EFBs) and GPS systems have become prevalent, understanding the principles behind the E6B remains fundamental for pilots.
This calculator provides simplified versions of some common E6B functions, allowing you to quickly estimate key flight parameters.
1. True Airspeed (TAS) Calculation
True Airspeed (TAS) is the actual speed of an aircraft relative to the air it is flying through. It's crucial for accurate navigation and performance planning. TAS is derived from Calibrated Airspeed (CAS), Pressure Altitude, and Outside Air Temperature (OAT).
Formula Approximation Used:
First, calculate ISA Temperature at Pressure Altitude: `ISA_Temp = 15 – (Pressure_Altitude / 1000 * 2)`
Then, calculate Temperature Deviation: `Temp_Dev = OAT – ISA_Temp`
Example: If your CAS is 120 knots, Pressure Altitude is 5000 feet, and OAT is 10°C, your TAS would be approximately 130.2 knots.
2. Time, Speed, Distance (TSD) Calculation
This fundamental calculation allows pilots to determine any one of the three variables (Time, Speed, or Distance) if the other two are known. Ensure you leave the field you want to calculate blank.
Example 1 (Calculate Distance): If you fly for 2 hours at 120 knots, you will cover 240 nautical miles.
Example 2 (Calculate Time): To cover 240 nautical miles at 120 knots, it will take 2 hours.
Example 3 (Calculate Speed): To cover 240 nautical miles in 2 hours, you need a speed of 120 knots.
3. Fuel Burn Calculation
Estimating fuel consumption is critical for flight safety and planning. This calculation helps determine the total fuel required for a flight based on the aircraft's fuel burn rate and the planned flight time.
Example: If your aircraft burns 8.5 gallons per hour and your flight time is 2 hours and 30 minutes, you will consume 21.25 gallons of fuel.
Remember that these calculations are approximations and should always be cross-referenced with official aircraft performance data and flight planning tools. Always add a safety margin to your fuel calculations.
.e6b-calculator-container {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #f9f9f9;
border: 1px solid #ddd;
border-radius: 8px;
padding: 25px;
max-width: 700px;
margin: 30px auto;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
color: #333;
}
.e6b-calculator-container h2 {
text-align: center;
color: #0056b3;
margin-bottom: 25px;
font-size: 1.8em;
}
.e6b-calculator-container h3 {
color: #0056b3;
margin-top: 30px;
margin-bottom: 15px;
font-size: 1.4em;
border-bottom: 2px solid #eee;
padding-bottom: 8px;
}
.e6b-calculator-container p {
line-height: 1.6;
margin-bottom: 15px;
}
.calculator-section {
background-color: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 20px;
margin-bottom: 25px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
}
.input-group {
margin-bottom: 15px;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
}
.input-group label {
flex: 1 1 150px;
font-weight: bold;
color: #555;
}
.input-group input[type="number"] {
flex: 2 1 180px;
padding: 10px 12px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 1em;
box-sizing: border-box;
transition: border-color 0.3s ease;
}
.input-group input[type="number"]:focus {
border-color: #007bff;
outline: none;
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.e6b-calculator-container button {
background-color: #007bff;
color: white;
padding: 12px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 1.1em;
transition: background-color 0.3s ease, transform 0.2s ease;
width: auto;
display: block;
margin-top: 20px;
}
.e6b-calculator-container button:hover {
background-color: #0056b3;
transform: translateY(-1px);
}
.e6b-calculator-container button:active {
transform: translateY(0);
}
.result {
margin-top: 20px;
padding: 15px;
background-color: #e9f7ef;
border: 1px solid #d4edda;
border-radius: 5px;
font-size: 1.1em;
font-weight: bold;
color: #155724;
text-align: center;
}
.result.error {
background-color: #f8d7da;
border-color: #f5c6cb;
color: #721c24;
}
.e6b-calculator-container ul {
list-style-type: disc;
margin-left: 20px;
margin-bottom: 15px;
}
.e6b-calculator-container li {
margin-bottom: 5px;
}
function isValidNumber(value) {
return !isNaN(parseFloat(value)) && isFinite(value);
}
function calculateTAS() {
var cas = document.getElementById("calibratedAirspeed").value;
var pa = document.getElementById("pressureAltitude").value;
var oat = document.getElementById("oat").value;
var resultDiv = document.getElementById("trueAirspeedResult");
if (!isValidNumber(cas) || !isValidNumber(pa) || !isValidNumber(oat)) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
resultDiv.className = "result error";
return;
}
cas = parseFloat(cas);
pa = parseFloat(pa);
oat = parseFloat(oat);
if (cas < 0) {
resultDiv.innerHTML = "Calibrated Airspeed cannot be negative.";
resultDiv.className = "result error";
return;
}
// ISA Temperature at Pressure Altitude (in °C)
var isaTemp = 15 – (pa / 1000 * 2);
// Temperature Deviation from ISA (in °C)
var tempDev = oat – isaTemp;
// Density Altitude (in feet)
var densityAltitude = pa + (120 * tempDev);
// Approximate TAS calculation
// TAS = CAS * (1 + (Density_Altitude / 1000) * 0.017)
var tas = cas * (1 + (densityAltitude / 1000) * 0.017);
resultDiv.innerHTML = "True Airspeed (TAS): " + tas.toFixed(1) + " knots";
resultDiv.className = "result";
}
function calculateTSD() {
var timeHours = document.getElementById("tsdTimeHours").value;
var timeMinutes = document.getElementById("tsdTimeMinutes").value;
var speed = document.getElementById("tsdSpeed").value;
var distance = document.getElementById("tsdDistance").value;
var resultDiv = document.getElementById("tsdResult");
var numEmpty = 0;
if (timeHours === "" && timeMinutes === "") numEmpty++;
if (speed === "") numEmpty++;
if (distance === "") numEmpty++;
if (numEmpty !== 1) {
resultDiv.innerHTML = "Please leave exactly ONE field blank to calculate.";
resultDiv.className = "result error";
return;
}
var totalTimeHours = 0;
if (isValidNumber(timeHours)) {
totalTimeHours += parseFloat(timeHours);
}
if (isValidNumber(timeMinutes)) {
totalTimeHours += parseFloat(timeMinutes) / 60;
}
if (timeHours !== "" && !isValidNumber(timeHours) || timeMinutes !== "" && !isValidNumber(timeMinutes) ||
speed !== "" && !isValidNumber(speed) || distance !== "" && !isValidNumber(distance)) {
resultDiv.innerHTML = "Please enter valid numbers for all filled fields.";
resultDiv.className = "result error";
return;
}
if (timeHours !== "" && parseFloat(timeHours) < 0 || timeMinutes !== "" && parseFloat(timeMinutes) < 0 ||
speed !== "" && parseFloat(speed) < 0 || distance !== "" && parseFloat(distance) < 0) {
resultDiv.innerHTML = "Time, Speed, and Distance cannot be negative.";
resultDiv.className = "result error";
return;
}
if (timeMinutes !== "" && (parseFloat(timeMinutes) 59)) {
resultDiv.innerHTML = "Minutes must be between 0 and 59.";
resultDiv.className = "result error";
return;
}
if (timeHours === "" && timeMinutes === "") { // Calculate Time
speed = parseFloat(speed);
distance = parseFloat(distance);
if (speed === 0) {
resultDiv.innerHTML = "Speed cannot be zero when calculating time.";
resultDiv.className = "result error";
return;
}
var calculatedTotalTime = distance / speed;
var calcHours = Math.floor(calculatedTotalTime);
var calcMinutes = Math.round((calculatedTotalTime – calcHours) * 60);
resultDiv.innerHTML = "Time: " + calcHours + " hours " + calcMinutes + " minutes";
resultDiv.className = "result";
} else if (speed === "") { // Calculate Speed
distance = parseFloat(distance);
if (totalTimeHours === 0) {
resultDiv.innerHTML = "Time cannot be zero when calculating speed.";
resultDiv.className = "result error";
return;
}
var calculatedSpeed = distance / totalTimeHours;
resultDiv.innerHTML = "Speed: " + calculatedSpeed.toFixed(1) + " knots";
resultDiv.className = "result";
} else if (distance === "") { // Calculate Distance
speed = parseFloat(speed);
var calculatedDistance = speed * totalTimeHours;
resultDiv.innerHTML = "Distance: " + calculatedDistance.toFixed(1) + " nautical miles";
resultDiv.className = "result";
}
}
function calculateFuelBurn() {
var fuelRate = document.getElementById("fuelBurnRate").value;
var flightTimeHours = document.getElementById("fuelFlightTimeHours").value;
var flightTimeMinutes = document.getElementById("fuelFlightTimeMinutes").value;
var resultDiv = document.getElementById("fuelBurnResult");
if (!isValidNumber(fuelRate) || !isValidNumber(flightTimeHours) || !isValidNumber(flightTimeMinutes)) {
resultDiv.innerHTML = "Please enter valid numbers for all fields.";
resultDiv.className = "result error";
return;
}
fuelRate = parseFloat(fuelRate);
flightTimeHours = parseFloat(flightTimeHours);
flightTimeMinutes = parseFloat(flightTimeMinutes);
if (fuelRate < 0 || flightTimeHours < 0 || flightTimeMinutes < 0) {
resultDiv.innerHTML = "Fuel burn rate and flight time cannot be negative.";
resultDiv.className = "result error";
return;
}
if (flightTimeMinutes 59) {
resultDiv.innerHTML = "Minutes must be between 0 and 59.";
resultDiv.className = "result error";
return;
}
var totalFlightTime = flightTimeHours + (flightTimeMinutes / 60);
var fuelConsumed = fuelRate * totalFlightTime;
resultDiv.innerHTML = "Total Fuel Consumed: " + fuelConsumed.toFixed(2) + " gallons";
resultDiv.className = "result";
}