{"id":3512,"date":"2025-08-14T12:11:32","date_gmt":"2025-08-14T11:11:32","guid":{"rendered":"http:\/\/www.aircrafttrafficsurvey.com\/?page_id=3512"},"modified":"2025-09-21T19:33:44","modified_gmt":"2025-09-21T18:33:44","slug":"contact-details","status":"publish","type":"page","link":"http:\/\/www.aircrafttrafficsurvey.com\/?page_id=3512","title":{"rendered":"Contact details"},"content":{"rendered":"\n<p class=\"has-medium-font-size\"><strong>For more information and chat about aircraft noise and airport activity then feel free to contact us;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">By phone : 07940 700031<br><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><a href=\"mailto:comms@aircrafttrafficsurvey.com\" title=\"\">By email: comms@aircrafttrafficsurvey.com<\/a><br><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><a href=\"https:\/\/x.com\/RichardHerson\">Join the conversation on X (twitter)<\/a><br><\/li>\n\n\n\n<li class=\"has-medium-font-size\"><a href=\"http:\/\/www.aircrafttrafficsurvey.com\/?p=3638\" data-type=\"page\" data-id=\"3512\">See our latest enhancements schedule<\/a><\/li>\n<\/ul>\n\n\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <title>Aircraft Noise (dBs) Simulation<\/title>\r\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n  <style>\r\n    body { font-family: sans-serif; padding: 20px; }\r\n    .slider-container { margin-bottom: 20px; }\r\n    label { display: block; margin-bottom: 5px; }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <h2>Aircraft Noise (dBs) Over Time<\/h2>\r\n\r\n  <div class=\"slider-container\">\r\n    <label for=\"altitudeSlider\">Altitude (feet): <span id=\"altitudeLabel\">9000<\/span><\/label>\r\n    <input type=\"range\" id=\"altitudeSlider\" min=\"500\" max=\"45000\" step=\"200\" value=\"9000\">\r\n  <\/div>\r\n\r\n  <div class=\"slider-container\">\r\n    <label for=\"speedSlider\">Speed (mph): <span id=\"speedLabel\">400<\/span><\/label>\r\n    <input type=\"range\" id=\"speedSlider\" min=\"100\" max=\"650\" step=\"10\" value=\"400\">\r\n  <\/div>\r\n\r\n  <canvas id=\"splChart\" width=\"800\" height=\"400\"><\/canvas>\r\n\r\n  <script>\r\n    const ctx = document.getElementById('splChart').getContext('2d');\r\n    const ambientFloor = 30;\r\n\r\n    function generateSPLCurve(altitudeFeet, speedMph) {\r\n      const altitude = altitudeFeet * 0.3048; \/\/ feet to metres\r\n      const speed = speedMph * 0.44704;       \/\/ mph to m\/s\r\n      const duration = (altitude * 1.5) \/ speed;\r\n      const extendedDuration = duration * 12;  \/\/ widen time range to capture SPL tail\r\n      const points = 200;\r\n      const data = [];\r\n\r\n      for (let i = 0; i < points; i++) {\r\n        const t = (i \/ points) * extendedDuration - (extendedDuration \/ 2);\r\n        const horizontalDistance = speed * t;\r\n        const distance = Math.sqrt(Math.pow(altitude, 2) + Math.pow(horizontalDistance, 2));\r\n        let spl = 90 - 20 * Math.log10(distance \/ 1000);\r\n        spl -= 0.0001 * distance;\r\n        spl = Math.max(spl, ambientFloor);\r\n        data.push({ x: t, y: spl });\r\n      }\r\n\r\n      const maxSPL = Math.max(...data.map(p => p.y));\r\n      const threshold = maxSPL - 20;\r\n      const audiblePoints = data.filter(p => p.y >= threshold);\r\n      const minTime = Math.min(...audiblePoints.map(p => p.x));\r\n      const maxTime = Math.max(...audiblePoints.map(p => p.x));\r\n\r\n      return { data, minTime, maxTime };\r\n    }\r\n\r\n    let chart = new Chart(ctx, {\r\n      type: 'line',\r\n      data: {\r\n        datasets: [{\r\n          label: 'Decibels (SPL)',\r\n          data: [],\r\n          borderColor: 'red',\r\n\t\t  borderWidth: 1, \/\/ \ud83d\udc48 This controls line thicknes\r\n          fill: true,\r\n          pointRadius: 5,\r\n          tension: 0.2\r\n        }]\r\n      },\r\n      options: {\r\n        scales: {\r\n          x: {\r\n            title: { display: true, text: 'Time (s)' },\r\n            type: 'linear'\r\n          },\r\n          y: {\r\n            title: { display: true, text: 'Decibels (SPL)' },\r\n            min: 40,\r\n            max: 115\r\n          }\r\n        },\r\n\t\tresponsive: true,  \/\/ \ud83d\udc48 Chart resizes with the window\r\n        plugins: {\r\n\t\t\r\n          tooltip: {\r\n            callbacks: {\r\n              label: function(context) {\r\n                const speedMph = parseInt(document.getElementById('speedSlider').value);\r\n                const time = parseFloat(context.parsed.x);\r\n                const speed = speedMph * 0.44704; \/\/ mph to m\/s\r\n                const horizontalDistance = (speed * time) \/ 1609.344;\r\n                const spl = context.parsed.y;\r\n                return [\r\n                  `Time: ${time.toFixed(2)} s`,\r\n                  `SPL: ${spl.toFixed(2)} dB`,\r\n                  `Horizontal Distance: ${(horizontalDistance.toFixed(2))} miles`\r\n                ];\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    function updateChart() {\r\n      const altitude = parseInt(document.getElementById('altitudeSlider').value);\r\n      const speed = parseInt(document.getElementById('speedSlider').value);\r\n      document.getElementById('altitudeLabel').textContent = altitude;\r\n      document.getElementById('speedLabel').textContent = speed;\r\n\r\n      const result = generateSPLCurve(altitude, speed);\r\n      chart.data.datasets[0].data = result.data;\r\n      chart.options.scales.x.min = result.minTime;\r\n      chart.options.scales.x.max = result.maxTime;\r\n      chart.update();\r\n    }\r\n\r\n    document.getElementById('altitudeSlider').addEventListener('input', updateChart);\r\n    document.getElementById('speedSlider').addEventListener('input', updateChart);\r\n\r\n    \/\/ Initial render\r\n    updateChart();\r\n  <\/script>\r\n<\/body>\r\n<\/html>","protected":false},"excerpt":{"rendered":"<p>For more information and chat about aircraft noise and airport activity then feel free to contact us;<\/p>\n","protected":false},"author":1,"featured_media":3533,"parent":49,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3512","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/pages\/3512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3512"}],"version-history":[{"count":24,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/pages\/3512\/revisions"}],"predecessor-version":[{"id":4887,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/pages\/3512\/revisions\/4887"}],"up":[{"embeddable":true,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/pages\/49"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=\/wp\/v2\/media\/3533"}],"wp:attachment":[{"href":"http:\/\/www.aircrafttrafficsurvey.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}