Tree Height Estimator (Shadow/Angle Method)

ANALife Services AuthorityNational Calculator Authority›Tree Height Estimator (Shadow/Angle Method)

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Tree Height Estimator (Shadow/Angle Method)

Estimate the height of a tree using either the Shadow Method (similar triangles) or the Angle of Elevation Method (trigonometry). Choose your preferred method below.

Select Method:

Shadow Method

Angle of Elevation Method

Tree Shadow Length

meters (m) feet (ft)

The length of the shadow cast by the tree.

Known Object Height (Stick / Person)

m

Height of a person or stick whose shadow you can measure.

Known Object Shadow Length

m

Length of the shadow cast by the known object at the same time.

Horizontal Distance to Tree Base

meters (m) feet (ft)

Your distance from the base of the tree (measured horizontally).

Angle of Elevation to Tree Top

°

The angle from horizontal to the top of the tree (measured with a clinometer or phone app).

Observer Eye Height

m

Height of your eyes above the ground (adds to the calculated height).

Calculate Tree Height Enter values above and click Calculate.

function treToggleMethod() { var method = document.querySelector('input[name="tre_method"]:checked').value; document.getElementById('tre_shadow_inputs').style.display = (method === 'shadow') ? 'block' : 'none'; document.getElementById('tre_angle_inputs').style.display = (method === 'angle') ? 'block' : 'none'; document.getElementById('tre_result').innerHTML = 'Enter values above and click Calculate.'; document.getElementById('tre_result').className = 'calc-result'; }

document.getElementById('tre_shadow_unit').addEventListener('change', function() { var u = this.value; document.getElementById('tre_stick_unit_label').textContent = u; document.getElementById('tre_stick_shadow_unit_label').textContent = u; });

document.getElementById('tre_distance_unit').addEventListener('change', function() { document.getElementById('tre_eye_unit_label').textContent = this.value; });

function treCalc() { var resultDiv = document.getElementById('tre_result'); var method = document.querySelector('input[name="tre_method"]:checked').value;

if (method === 'shadow') { var treeShadow = parseFloat(document.getElementById('tre_tree_shadow').value); var stickHeight = parseFloat(document.getElementById('tre_stick_height').value); var stickShadow = parseFloat(document.getElementById('tre_stick_shadow').value); var unit = document.getElementById('tre_shadow_unit').value;

if (isNaN(treeShadow) || isNaN(stickHeight) || isNaN(stickShadow)) { resultDiv.innerHTML = 'Please fill in all three shadow method fields.'; resultDiv.className = 'calc-result calc-result-error'; return; } if (treeShadow All values must be greater than zero.'; resultDiv.className = 'calc-result calc-result-error'; return; }

// Similar triangles: Tree Height / Tree Shadow = Stick Height / Stick Shadow var treeHeight = (stickHeight / stickShadow) * treeShadow; var ratio = (stickHeight / stickShadow).toFixed(4);

resultDiv.innerHTML = 'Estimated Tree Height: ' + treeHeight.toFixed(2) + ' ' + unit + '' + 'Height-to-shadow ratio: ' + ratio + ' | ' + 'Tree Shadow: ' + treeShadow + ' ' + unit + ' × ratio = ' + treeHeight.toFixed(2) + ' ' + unit + ''; resultDiv.className = 'calc-result calc-result-success';

} else { var distance = parseFloat(document.getElementById('tre_distance').value); var angleDeg = parseFloat(document.getElementById('tre_angle').value); var eyeHeight = parseFloat(document.getElementById('tre_eye_height').value); var unit = document.getElementById('tre_distance_unit').value;

if (isNaN(distance) || isNaN(angleDeg) || isNaN(eyeHeight)) { resultDiv.innerHTML = 'Please fill in all three angle method fields.'; resultDiv.className = 'calc-result calc-result-error'; return; } if (distance Horizontal distance must be greater than zero.'; resultDiv.className = 'calc-result calc-result-error'; return; } if (angleDeg = 90) { resultDiv.innerHTML = 'Angle must be between 0° and 90° (exclusive).'; resultDiv.className = 'calc-result calc-result-error'; return; } if (eyeHeight Eye height cannot be negative.'; resultDiv.className = 'calc-result calc-result-error'; return; }

// Tree Height = distance × tan(angle) + eye_height var angleRad = angleDeg * (Math.PI / 180); var tanPart = distance * Math.tan(angleRad); var treeHeight = tanPart + eyeHeight;

resultDiv.innerHTML = 'Estimated Tree Height: ' + treeHeight.toFixed(2) + ' ' + unit + '' + '' + 'tan(' + angleDeg + '°) = ' + Math.tan(angleRad).toFixed(4) + ' | ' + distance + ' × ' + Math.tan(angleRad).toFixed(4) + ' = ' + tanPart.toFixed(2) + ' ' + unit + ' + eye height ' + eyeHeight + ' ' + unit + ' = ' + treeHeight.toFixed(2) + ' ' + unit + ''; resultDiv.className = 'calc-result calc-result-success'; } }

#### Formulas Used

Shadow Method (Similar Triangles):

Tree Height = (Known Object Height ÷ Known Object Shadow) × Tree Shadow Length

This relies on the fact that at the same moment, all vertical objects cast shadows proportional to their height.

Angle of Elevation Method (Trigonometry):

Tree Height = (Horizontal Distance × tan(Elevation Angle)) + Observer Eye Height

The tangent of the elevation angle gives the vertical rise over horizontal run. Eye height is added because the angle is measured from eye level, not ground level.

#### Assumptions & References

More Calculators

Read Next

Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...

References