Help
RSS
API
Feed
Maltego
Contact
Domain > advanced.khoshgeleh.workers.dev
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-10-15
104.21.11.107
(
ClassC
)
2025-11-24
172.67.191.210
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Mon, 24 Nov 2025 11:51:41 GMTContent-Type: text/html;charsetUTF-8Content-Length: 21291Connection: keep-aliveCache-Control: no-cache, no-store, must-revalidateVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sIarbkEqLgJGmefFm8jKeUA5zdclWsLMFpXuG4ZjimpeqxqkOv%2BNeIMnfr%2FPo9B8Dw0qQspoiPg0tv2hFEjQYoRpr4IYesCqPvkyyFz7z8n%2BkAZd331EmEfzR3Te5}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 9a38b2255a68ff01-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head> meta charsetUTF-8> title>Advanced Ballistic Missile Simulator/title> meta nameviewport contentwidthdevice-width, initial-scale1.0> script srchttps://cdn.jsdelivr.net/npm/chart.js>/script> link hrefhttps://fonts.googleapis.com/css2?familyPoppins:wght@300;400;500;600;700&displayswap relstylesheet> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css> style> @import url(https://fonts.googleapis.com/css2?familyJetBrains+Mono:wght@300;400;600&familyPoppins:wght@400;500;700&displayswap); :root { --space-gradient: linear-gradient(135deg, #0f2027, #203a43, #2c5364); --glass-bg: rgba(23, 25, 35, 0.6); --glass-border: rgba(255, 255, 255, 0.08); --primary: #00c6ff; --secondary: #0072ff; --accent: #ff4d94; --text: #e0e7ff; --text-secondary: #a0aec0; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Poppins, sans-serif; background: #203a43; color: var(--text); min-height: 100vh; padding: 2rem 1rem; line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; } header { text-align: center; margin-bottom: 2.5rem; position: relative; } header { text-align: center; margin-bottom: 3rem; position: relative; padding-bottom: 1rem; border-bottom: 1px solid #2c5364; } h1 { font-size: 2.8rem; background: aliceblue; background-clip: text; color: transparent; margin-bottom: 0.5rem; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); font-family: Poppins; font-weight: bold; } .subtitle { color: var(--text-secondary); font-size: 1.1rem; max-width: 600px; margin: 0 auto; } .input-section { margin-bottom: 2rem; } h2 { font-size: 1.6rem; margin-bottom: 1.5rem; display: flex; align-items: center; gap: 0.8rem; font-weight: 500; color: #ffffff; position: relative; padding-bottom: 0.8rem; } h2::after { content: ; position: absolute; bottom: 0; left: 0; width: 60px; height: 4px; background: #ddd; border-radius: 4px; } h2 i { color: var(--primary); } .input-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; } .input-group { display: flex; flex-direction: column; gap: 0.5rem; } .input-group label { font-size: 0.9rem; font-weight: 500; color: var(--text-secondary); display: flex; align-items: center; gap: 0.5rem; } .input-group input { padding: 0.85rem 1rem; border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(15, 20, 30, 0.4); color: var(--text); font-family: JetBrains Mono, monospace; font-size: 1rem; transition: all 0.25s ease; } .section-divider { height: 1px; background: #2c5364; margin: 2rem 0; width: 100%; } .input-group input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(0, 198, 255, 0.2); } .button-group { display: flex; justify-content: left; gap: 1rem; margin: 2rem 0; } .btn { padding: 1rem 2.5rem; border: none; border-radius: 15px; font-family: Poppins; font-size: 1.1rem; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 0.8rem; } .btn-primary { background: cadetblue; color: white; } .btn-secondary { background: rgba(255, 255, 255, 0.08); color: var(--text); } .btn:hover { background: rgba(23, 25, 35, 0.6); } .btn:active { transform: translateY(1px); } .results-section { position: relative; min-height: 200px; } #loading { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; background: rgba(10, 15, 25, 0.95); display: none; flex-direction: column; justify-content: center; align-items: center; gap: 1.8rem; z-index: 9999; backdrop-filter: blur(8px); } #loading p { font-size: 1.2rem; font-weight: 400; text-align: center; max-width: 300px; line-height: 1.6; color: var(--accent-light); animation: pulse 2s infinite; } .spinner { width: 50px; height: 50px; border: 4px solid rgba(255, 255, 255, 0.1); border-top: 4px solid var(--primary); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #results { background: #0f2027; padding: 1.5rem; border-radius: 20px; font-family: JetBrains Mono, monospace; font-size: 0.95rem; white-space: pre-wrap; line-height: 1.8; overflow-x: auto; margin-bottom: 2rem; border: 1px solid rgba(255, 255, 255, 0.05); } footer { text-align: center; margin-top: 2.5rem; color: #ffffff; font-size: 0.85rem; padding: 1.5rem 0; border-top: 1px solid rgba(23, 25, 35, 0.6); } .chart-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 1.5rem; margin-top: 2rem; } .chart-card { background: #0f2027; border-radius: 20px; padding: 1.5rem; border: 1px solid rgba(255, 255, 255, 0.08); } .chart-title { font-size: 1.2rem; margin-bottom: 1rem; color: var(--primary); display: flex; align-items: center; gap: 0.5rem; font-weight: normal; } .chart-wrapper { position: relative; height: 300px; width: 100%; } @media (max-width: 900px) { .chart-container { grid-template-columns: 1fr; } } @media (max-width: 600px) { h1 { font-size: 2rem; } .button-group { flex-direction: column; } .btn { width: 100%; justify-content: center; } } /style>/head>body> div classcontainer> header> h1>Advanced Ballistic Missile Simulator/h1> p classsubtitle>Physics-based simulation of ballistic missile trajectories with real atmospheric modeling/p> /header> main> div classglass-panel> section classinput-section> h2>Launch Parameters/h2> div classinput-grid> div classinput-group> label forwarhead_mass>Warhead Mass (kg)/label> input typenumber idwarhead_mass value1425> /div> div classinput-group> label forW0>Initial Weight (kg)/label> input typenumber idW0 value13000> /div> div classinput-group> label forlaunch_angle>Launch Angle (deg)/label> input typenumber idlaunch_angle value52> /div> div classinput-group> label forCd_boost>Drag Coef (Boost)/label> input typenumber idCd_boost value0.2 step0.01> /div> div classinput-group> label forCd_reentry>Drag Coef (Reentry)/label> input typenumber idCd_reentry value0.25 step0.01> /div> div classinput-group> label forr_rocket>Rocket Radius (m)/label> input typenumber idr_rocket value0.6 step0.01> /div> div classinput-group> label forISP_sl>ISP Sea Level (s)/label> input typenumber idISP_sl value250> /div> div classinput-group> label forISP_vac>ISP Vacuum (s)/label> input typenumber idISP_vac value270> /div> div classinput-group> label forinitial_G>Initial Thrust (G)/label> input typenumber idinitial_G value2.5 step0.1> /div> div classinput-group> label forstructural_ratio>Structural Ratio/label> input typenumber idstructural_ratio value0.1 step0.01> /div> /div> /section> div classsection-divider>/div> div classbutton-group> button classbtn btn-primary onclickrunSimulation()> span>Run Simulation/span> /button> button classbtn btn-secondary onclickresetForm()> span>Reset Values/span> /button> /div> section classresults-section> div idloading> div classspinner>/div> p>Calculating trajectory... This may take a few seconds/p> /div> div classsection-divider>/div> h2>Simulation Results/h2> pre idresults>Run simulation to see results.../pre> div classsection-divider>/div> div classchart-container> div classchart-card> h3 classchart-title>Flight Trajectory/h3> div classchart-wrapper> canvas idtrajectoryChart>/canvas> /div> /div> div classchart-card> h3 classchart-title>Velocity Profile/h3> div classchart-wrapper> canvas idvelocityChart>/canvas> /div> /div> div classchart-card> h3 classchart-title>Acceleration Forces/h3> div classchart-wrapper> canvas idaccelerationChart>/canvas> /div> /div> /div> /section> /div> /main> /div> footer> p>Advanced Ballistic Missile Simulator v2.0 | Physics Engine with Real Atmospheric Modeling/p>/footer> script> // Initialize chart variables let trajectoryChart null; let velocityChart null; let accelerationChart null; // Form reset function function resetForm() { document.getElementById(warhead_mass).value 1425; document.getElementById(W0).value 13000; document.getElementById(launch_angle).value 52; document.getElementById(Cd_boost).value 0.2; document.getElementById(Cd_reentry).value 0.25; document.getElementById(r_rocket).value 0.6; document.getElementById(ISP_sl).value 250; document.getElementById(ISP_vac).value 270; document.getElementById(initial_G).value 2.5; document.getElementById(structural_ratio).value 0.1; document.getElementById(results).textContent Run simulation to see results...; // Clear charts if (trajectoryChart) trajectoryChart.destroy(); if (velocityChart) velocityChart.destroy(); if (accelerationChart) accelerationChart.destroy(); } function atmosphere1976(h) { h Math.max(0, h); const Hb 0, 11000, 20000, 32000, 47000, 51000, 71000, 84852; const Tb 288.15, 216.65, 216.65, 228.65, 270.65, 270.65, 214.65, 186.946; const Lb -0.0065, 0, 0.001, 0.0028, 0, -0.0028, -0.002, 0; let Pb 101325, R 287.05, g0 9.80665; for (let i 0; i Hb.length - 1; i++) { if (h Hbi + 1) { const T Tbi + Lbi * (h - Hbi); let P; if (Lbi 0) { P Pb * Math.exp(-g0 * (h - Hbi) / (R * Tbi)); } else { P Pb * Math.pow(T / Tbi, -g0 / (Lbi * R)); } const rho P / (R * T); return rho, T; } else { const T_next Tbi + Lbi * (Hbi + 1 - Hbi); if (Lbi 0) { Pb Pb * Math.exp(-g0 * (Hbi + 1 - Hbi) / (R * Tbi)); } else { Pb Pb * Math.pow(T_next / Tbi, -g0 / (Lbi * R)); } } } return 0, 186.946; } async function runSimulation() { // Show loading indicator document.getElementById(loading).style.display flex; document.getElementById(results).textContent Calculating...; // Delay execution to allow UI to update await new Promise(resolve > setTimeout(resolve, 50)); try { const g0 9.80665, Re 6371000, dt 0.1, max_time 5000; const warhead_mass parseFloat(document.getElementById(warhead_mass).value); const W0 parseFloat(document.getElementById(W0).value); const launch_angle parseFloat(document.getElementById(launch_angle).value); const Cd_boost parseFloat(document.getElementById(Cd_boost).value); const Cd_reentry parseFloat(document.getElementById(Cd_reentry).value); const r_rocket parseFloat(document.getElementById(r_rocket).value); const ISP_sl parseFloat(document.getElementById(ISP_sl).value); const ISP_vac parseFloat(document.getElementById(ISP_vac).value); const initial_G parseFloat(document.getElementById(initial_G).value); const structural_ratio parseFloat(document.getElementById(structural_ratio).value); // Validate inputs if (warhead_mass, W0, launch_angle, Cd_boost, Cd_reentry, r_rocket, ISP_sl, ISP_vac, initial_G, structural_ratio.some(isNaN)) { throw new Error(Invalid input values. Please check all fields contain numbers.); } const A Math.PI * r_rocket ** 2; const prop_mass (1 - structural_ratio) * (W0 - warhead_mass); const struct_mass structural_ratio * (W0 - warhead_mass); const dry_mass warhead_mass + struct_mass; const T0 initial_G * g0 * W0; const theta_rad launch_angle * Math.PI / 180; let t 0, x 0, h 0, vx 0, vy 0, m W0, phase boost; let burnout_velocity NaN, impact_velocity NaN, impact_range_km NaN, impact_time 0; const T_vec , h_vec , x_vec , v_vec , a_vec ; while (t max_time) { const rho atmosphere1976(h); const g g0 * Re ** 2 / ((Re + h) ** 2); const a_centrifugal vx ** 2 / (Re + h); const g_eff g - a_centrifugal; const ISP ISP_sl + (ISP_vac - ISP_sl) * (1 - rho / 1.225); const v_total Math.sqrt(vx ** 2 + vy ** 2); const Cd (phase reentry) ? Cd_reentry : Cd_boost; const D 0.5 * rho * v_total ** 2 * Cd * A; const Dvx v_total > 0 ? D * (vx / v_total) : 0; const Dvy v_total > 0 ? D * (vy / v_total) : 0; let T 0, mdot 0; if (phase boost) { T T0; mdot T / (ISP * g0); if (m - mdot * dt dry_mass) { phase coast; T 0; mdot 0; } } else if (phase coast) { if (vy 0 && h > 10000) phase reentry; } const Tx (phase boost) ? T * Math.cos(theta_rad) : 0; const Ty (phase boost) ? T * Math.sin(theta_rad) : 0; const ax (Tx - Dvx) / m; const ay (Ty - Dvy - m * g_eff) / m; vx + ax * dt; vy + ay * dt; x + vx * dt; h + vy * dt; m - mdot * dt; t + dt; T_vec.push(t); x_vec.push(x / 1000); h_vec.push(h / 1000); v_vec.push(v_total); a_vec.push(Math.sqrt(ax ** 2 + ay ** 2) / g0); if (phase coast && isNaN(burnout_velocity)) { burnout_velocity v_total; } if (h 0 && isNaN(impact_velocity)) { impact_velocity v_total; impact_range_km x / 1000; impact_time t; break; } } const avg_velocity 1000 * impact_range_km / impact_time; document.getElementById(results).textContent `Initial Weight : ${W0.toFixed(2)} kg\n` + `Warhead Weight : ${warhead_mass.toFixed(2)} kg\n` + `Propellant Weight : ${prop_mass.toFixed(2)} kg\n` + `Booster Weight : ${(W0 - warhead_mass).toFixed(2)} kg\n\n` + `--- MISSION RESULTS ---\n` + `Burnout Velocity : ${burnout_velocity.toFixed(2)} m/s\n` + `Impact Velocity : ${impact_velocity.toFixed(2)} m/s\n` + `Impact Time : ${impact_time.toFixed(2)} s\n` + `Range : ${impact_range_km.toFixed(2)} km\n` + `Average Velocity : ${avg_velocity.toFixed(2)} m/s`; drawChart(trajectoryChart, Altitude (km), x_vec, h_vec, #00c6ff, Downrange (km)); drawChart(velocityChart, Velocity (m/s), T_vec, v_vec, #ff4d94, Time (s)); drawChart(accelerationChart, Acceleration (G), T_vec, a_vec, #00ff9d, Time (s)); } catch (error) { console.error(Simulation error:, error); document.getElementById(results).textContent Error: + error.message; } finally { // Hide loading indicator document.getElementById(loading).style.display none; } } function drawChart(id, label, x, y, color, xlabel) { const ctx document.getElementById(id).getContext(2d); // Destroy existing chart if it exists if (id trajectoryChart && trajectoryChart) trajectoryChart.destroy(); if (id velocityChart && velocityChart) velocityChart.destroy(); if (id accelerationChart && accelerationChart) accelerationChart.destroy(); const gradient ctx.createLinearGradient(0, 0, 0, 300); gradient.addColorStop(0, color + 80); gradient.addColorStop(1, color + 10); const newChart new Chart(ctx, { type: line, data: { labels: x, datasets: { label: label, data: y, borderColor: color, borderWidth: 3, pointRadius: 0, backgroundColor: gradient, fill: true, tension: 0.2 } }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { labels: { color: #e0e7ff, font: { size: 13 } } }, tooltip: { mode: index, intersect: false, backgroundColor: rgba(15, 20, 30, 0.9), titleColor: #00c6ff, bodyColor: #e0e7ff, borderColor: rgba(255, 255, 255, 0.1), borderWidth: 1 } }, scales: { x: { title: { display: true, text: xlabel, color: #a0aec0, font: { size: 13, weight: 500 } }, grid: { color: rgba(255, 255, 255, 0.05) }, ticks: { color: #a0aec0 } }, y: { title: { display: true, text: label, color: #a0aec0, font: { size: 13, weight: 500 } }, grid: { color: rgba(255, 255, 255, 0.05) }, ticks: { color: #a0aec0 } } }, interaction: { mode: nearest, axis: x, intersect: false }, animations: { tension: { duration: 1000, easing: linear } } } }); // Store reference to the chart if (id trajectoryChart) trajectoryChart newChart; if (id velocityChart) velocityChart newChart; if (id accelerationChart) accelerationChart newChart; } /script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Mon, 24 Nov 2025 11:51:41 GMTContent-Type: text/html;charsetUTF-8Content-Length: 21291Connection: keep-aliveCache-Control: no-cache, no-store, must-revalidateVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sdkpZIcftvN4GUIMVqLsL0EL%2F%2F6XTxPBTreie01t8Mvi338l2taAIvflgdgAU%2BJBtQtMF7CxK%2Fii5Z1WoSEsl0lPHYeK5KX2Qz4KxKliZ66tBRSv7wqnNJIdnrazw}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflareCF-RAY: 9a38b226da22b8b9-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langen>head> meta charsetUTF-8> title>Advanced Ballistic Missile Simulator/title> meta nameviewport contentwidthdevice-width, initial-scale1.0> script srchttps://cdn.jsdelivr.net/npm/chart.js>/script> link hrefhttps://fonts.googleapis.com/css2?familyPoppins:wght@300;400;500;600;700&displayswap relstylesheet> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css> style> @import url(https://fonts.googleapis.com/css2?familyJetBrains+Mono:wght@300;400;600&familyPoppins:wght@400;500;700&displayswap); :root { --space-gradient: linear-gradient(135deg, #0f2027, #203a43, #2c5364); --glass-bg: rgba(23, 25, 35, 0.6); --glass-border: rgba(255, 255, 255, 0.08); --primary: #00c6ff; --secondary: #0072ff; --accent: #ff4d94; --text: #e0e7ff; --text-secondary: #a0aec0; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Poppins, sans-serif; background: #203a43; color: var(--text); min-height: 100vh; padding: 2rem 1rem; line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; } header { text-align: center; margin-bottom: 2.5rem; position: relative; } header { text-align: center; margin-bottom: 3rem; position: relative; padding-bottom: 1rem; border-bottom: 1px solid #2c5364; } h1 { font-size: 2.8rem; background: aliceblue; background-clip: text; color: transparent; margin-bottom: 0.5rem; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); font-family: Poppins; font-weight: bold; } .subtitle { color: var(--text-secondary); font-size: 1.1rem; max-width: 600px; margin: 0 auto; } .input-section { margin-bottom: 2rem; } h2 { font-size: 1.6rem; margin-bottom: 1.5rem; display: flex; align-items: center; gap: 0.8rem; font-weight: 500; color: #ffffff; position: relative; padding-bottom: 0.8rem; } h2::after { content: ; position: absolute; bottom: 0; left: 0; width: 60px; height: 4px; background: #ddd; border-radius: 4px; } h2 i { color: var(--primary); } .input-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; } .input-group { display: flex; flex-direction: column; gap: 0.5rem; } .input-group label { font-size: 0.9rem; font-weight: 500; color: var(--text-secondary); display: flex; align-items: center; gap: 0.5rem; } .input-group input { padding: 0.85rem 1rem; border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(15, 20, 30, 0.4); color: var(--text); font-family: JetBrains Mono, monospace; font-size: 1rem; transition: all 0.25s ease; } .section-divider { height: 1px; background: #2c5364; margin: 2rem 0; width: 100%; } .input-group input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(0, 198, 255, 0.2); } .button-group { display: flex; justify-content: left; gap: 1rem; margin: 2rem 0; } .btn { padding: 1rem 2.5rem; border: none; border-radius: 15px; font-family: Poppins; font-size: 1.1rem; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 0.8rem; } .btn-primary { background: cadetblue; color: white; } .btn-secondary { background: rgba(255, 255, 255, 0.08); color: var(--text); } .btn:hover { background: rgba(23, 25, 35, 0.6); } .btn:active { transform: translateY(1px); } .results-section { position: relative; min-height: 200px; } #loading { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; background: rgba(10, 15, 25, 0.95); display: none; flex-direction: column; justify-content: center; align-items: center; gap: 1.8rem; z-index: 9999; backdrop-filter: blur(8px); } #loading p { font-size: 1.2rem; font-weight: 400; text-align: center; max-width: 300px; line-height: 1.6; color: var(--accent-light); animation: pulse 2s infinite; } .spinner { width: 50px; height: 50px; border: 4px solid rgba(255, 255, 255, 0.1); border-top: 4px solid var(--primary); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #results { background: #0f2027; padding: 1.5rem; border-radius: 20px; font-family: JetBrains Mono, monospace; font-size: 0.95rem; white-space: pre-wrap; line-height: 1.8; overflow-x: auto; margin-bottom: 2rem; border: 1px solid rgba(255, 255, 255, 0.05); } footer { text-align: center; margin-top: 2.5rem; color: #ffffff; font-size: 0.85rem; padding: 1.5rem 0; border-top: 1px solid rgba(23, 25, 35, 0.6); } .chart-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 1.5rem; margin-top: 2rem; } .chart-card { background: #0f2027; border-radius: 20px; padding: 1.5rem; border: 1px solid rgba(255, 255, 255, 0.08); } .chart-title { font-size: 1.2rem; margin-bottom: 1rem; color: var(--primary); display: flex; align-items: center; gap: 0.5rem; font-weight: normal; } .chart-wrapper { position: relative; height: 300px; width: 100%; } @media (max-width: 900px) { .chart-container { grid-template-columns: 1fr; } } @media (max-width: 600px) { h1 { font-size: 2rem; } .button-group { flex-direction: column; } .btn { width: 100%; justify-content: center; } } /style>/head>body> div classcontainer> header> h1>Advanced Ballistic Missile Simulator/h1> p classsubtitle>Physics-based simulation of ballistic missile trajectories with real atmospheric modeling/p> /header> main> div classglass-panel> section classinput-section> h2>Launch Parameters/h2> div classinput-grid> div classinput-group> label forwarhead_mass>Warhead Mass (kg)/label> input typenumber idwarhead_mass value1425> /div> div classinput-group> label forW0>Initial Weight (kg)/label> input typenumber idW0 value13000> /div> div classinput-group> label forlaunch_angle>Launch Angle (deg)/label> input typenumber idlaunch_angle value52> /div> div classinput-group> label forCd_boost>Drag Coef (Boost)/label> input typenumber idCd_boost value0.2 step0.01> /div> div classinput-group> label forCd_reentry>Drag Coef (Reentry)/label> input typenumber idCd_reentry value0.25 step0.01> /div> div classinput-group> label forr_rocket>Rocket Radius (m)/label> input typenumber idr_rocket value0.6 step0.01> /div> div classinput-group> label forISP_sl>ISP Sea Level (s)/label> input typenumber idISP_sl value250> /div> div classinput-group> label forISP_vac>ISP Vacuum (s)/label> input typenumber idISP_vac value270> /div> div classinput-group> label forinitial_G>Initial Thrust (G)/label> input typenumber idinitial_G value2.5 step0.1> /div> div classinput-group> label forstructural_ratio>Structural Ratio/label> input typenumber idstructural_ratio value0.1 step0.01> /div> /div> /section> div classsection-divider>/div> div classbutton-group> button classbtn btn-primary onclickrunSimulation()> span>Run Simulation/span> /button> button classbtn btn-secondary onclickresetForm()> span>Reset Values/span> /button> /div> section classresults-section> div idloading> div classspinner>/div> p>Calculating trajectory... This may take a few seconds/p> /div> div classsection-divider>/div> h2>Simulation Results/h2> pre idresults>Run simulation to see results.../pre> div classsection-divider>/div> div classchart-container> div classchart-card> h3 classchart-title>Flight Trajectory/h3> div classchart-wrapper> canvas idtrajectoryChart>/canvas> /div> /div> div classchart-card> h3 classchart-title>Velocity Profile/h3> div classchart-wrapper> canvas idvelocityChart>/canvas> /div> /div> div classchart-card> h3 classchart-title>Acceleration Forces/h3> div classchart-wrapper> canvas idaccelerationChart>/canvas> /div> /div> /div> /section> /div> /main> /div> footer> p>Advanced Ballistic Missile Simulator v2.0 | Physics Engine with Real Atmospheric Modeling/p>/footer> script> // Initialize chart variables let trajectoryChart null; let velocityChart null; let accelerationChart null; // Form reset function function resetForm() { document.getElementById(warhead_mass).value 1425; document.getElementById(W0).value 13000; document.getElementById(launch_angle).value 52; document.getElementById(Cd_boost).value 0.2; document.getElementById(Cd_reentry).value 0.25; document.getElementById(r_rocket).value 0.6; document.getElementById(ISP_sl).value 250; document.getElementById(ISP_vac).value 270; document.getElementById(initial_G).value 2.5; document.getElementById(structural_ratio).value 0.1; document.getElementById(results).textContent Run simulation to see results...; // Clear charts if (trajectoryChart) trajectoryChart.destroy(); if (velocityChart) velocityChart.destroy(); if (accelerationChart) accelerationChart.destroy(); } function atmosphere1976(h) { h Math.max(0, h); const Hb 0, 11000, 20000, 32000, 47000, 51000, 71000, 84852; const Tb 288.15, 216.65, 216.65, 228.65, 270.65, 270.65, 214.65, 186.946; const Lb -0.0065, 0, 0.001, 0.0028, 0, -0.0028, -0.002, 0; let Pb 101325, R 287.05, g0 9.80665; for (let i 0; i Hb.length - 1; i++) { if (h Hbi + 1) { const T Tbi + Lbi * (h - Hbi); let P; if (Lbi 0) { P Pb * Math.exp(-g0 * (h - Hbi) / (R * Tbi)); } else { P Pb * Math.pow(T / Tbi, -g0 / (Lbi * R)); } const rho P / (R * T); return rho, T; } else { const T_next Tbi + Lbi * (Hbi + 1 - Hbi); if (Lbi 0) { Pb Pb * Math.exp(-g0 * (Hbi + 1 - Hbi) / (R * Tbi)); } else { Pb Pb * Math.pow(T_next / Tbi, -g0 / (Lbi * R)); } } } return 0, 186.946; } async function runSimulation() { // Show loading indicator document.getElementById(loading).style.display flex; document.getElementById(results).textContent Calculating...; // Delay execution to allow UI to update await new Promise(resolve > setTimeout(resolve, 50)); try { const g0 9.80665, Re 6371000, dt 0.1, max_time 5000; const warhead_mass parseFloat(document.getElementById(warhead_mass).value); const W0 parseFloat(document.getElementById(W0).value); const launch_angle parseFloat(document.getElementById(launch_angle).value); const Cd_boost parseFloat(document.getElementById(Cd_boost).value); const Cd_reentry parseFloat(document.getElementById(Cd_reentry).value); const r_rocket parseFloat(document.getElementById(r_rocket).value); const ISP_sl parseFloat(document.getElementById(ISP_sl).value); const ISP_vac parseFloat(document.getElementById(ISP_vac).value); const initial_G parseFloat(document.getElementById(initial_G).value); const structural_ratio parseFloat(document.getElementById(structural_ratio).value); // Validate inputs if (warhead_mass, W0, launch_angle, Cd_boost, Cd_reentry, r_rocket, ISP_sl, ISP_vac, initial_G, structural_ratio.some(isNaN)) { throw new Error(Invalid input values. Please check all fields contain numbers.); } const A Math.PI * r_rocket ** 2; const prop_mass (1 - structural_ratio) * (W0 - warhead_mass); const struct_mass structural_ratio * (W0 - warhead_mass); const dry_mass warhead_mass + struct_mass; const T0 initial_G * g0 * W0; const theta_rad launch_angle * Math.PI / 180; let t 0, x 0, h 0, vx 0, vy 0, m W0, phase boost; let burnout_velocity NaN, impact_velocity NaN, impact_range_km NaN, impact_time 0; const T_vec , h_vec , x_vec , v_vec , a_vec ; while (t max_time) { const rho atmosphere1976(h); const g g0 * Re ** 2 / ((Re + h) ** 2); const a_centrifugal vx ** 2 / (Re + h); const g_eff g - a_centrifugal; const ISP ISP_sl + (ISP_vac - ISP_sl) * (1 - rho / 1.225); const v_total Math.sqrt(vx ** 2 + vy ** 2); const Cd (phase reentry) ? Cd_reentry : Cd_boost; const D 0.5 * rho * v_total ** 2 * Cd * A; const Dvx v_total > 0 ? D * (vx / v_total) : 0; const Dvy v_total > 0 ? D * (vy / v_total) : 0; let T 0, mdot 0; if (phase boost) { T T0; mdot T / (ISP * g0); if (m - mdot * dt dry_mass) { phase coast; T 0; mdot 0; } } else if (phase coast) { if (vy 0 && h > 10000) phase reentry; } const Tx (phase boost) ? T * Math.cos(theta_rad) : 0; const Ty (phase boost) ? T * Math.sin(theta_rad) : 0; const ax (Tx - Dvx) / m; const ay (Ty - Dvy - m * g_eff) / m; vx + ax * dt; vy + ay * dt; x + vx * dt; h + vy * dt; m - mdot * dt; t + dt; T_vec.push(t); x_vec.push(x / 1000); h_vec.push(h / 1000); v_vec.push(v_total); a_vec.push(Math.sqrt(ax ** 2 + ay ** 2) / g0); if (phase coast && isNaN(burnout_velocity)) { burnout_velocity v_total; } if (h 0 && isNaN(impact_velocity)) { impact_velocity v_total; impact_range_km x / 1000; impact_time t; break; } } const avg_velocity 1000 * impact_range_km / impact_time; document.getElementById(results).textContent `Initial Weight : ${W0.toFixed(2)} kg\n` + `Warhead Weight : ${warhead_mass.toFixed(2)} kg\n` + `Propellant Weight : ${prop_mass.toFixed(2)} kg\n` + `Booster Weight : ${(W0 - warhead_mass).toFixed(2)} kg\n\n` + `--- MISSION RESULTS ---\n` + `Burnout Velocity : ${burnout_velocity.toFixed(2)} m/s\n` + `Impact Velocity : ${impact_velocity.toFixed(2)} m/s\n` + `Impact Time : ${impact_time.toFixed(2)} s\n` + `Range : ${impact_range_km.toFixed(2)} km\n` + `Average Velocity : ${avg_velocity.toFixed(2)} m/s`; drawChart(trajectoryChart, Altitude (km), x_vec, h_vec, #00c6ff, Downrange (km)); drawChart(velocityChart, Velocity (m/s), T_vec, v_vec, #ff4d94, Time (s)); drawChart(accelerationChart, Acceleration (G), T_vec, a_vec, #00ff9d, Time (s)); } catch (error) { console.error(Simulation error:, error); document.getElementById(results).textContent Error: + error.message; } finally { // Hide loading indicator document.getElementById(loading).style.display none; } } function drawChart(id, label, x, y, color, xlabel) { const ctx document.getElementById(id).getContext(2d); // Destroy existing chart if it exists if (id trajectoryChart && trajectoryChart) trajectoryChart.destroy(); if (id velocityChart && velocityChart) velocityChart.destroy(); if (id accelerationChart && accelerationChart) accelerationChart.destroy(); const gradient ctx.createLinearGradient(0, 0, 0, 300); gradient.addColorStop(0, color + 80); gradient.addColorStop(1, color + 10); const newChart new Chart(ctx, { type: line, data: { labels: x, datasets: { label: label, data: y, borderColor: color, borderWidth: 3, pointRadius: 0, backgroundColor: gradient, fill: true, tension: 0.2 } }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { labels: { color: #e0e7ff, font: { size: 13 } } }, tooltip: { mode: index, intersect: false, backgroundColor: rgba(15, 20, 30, 0.9), titleColor: #00c6ff, bodyColor: #e0e7ff, borderColor: rgba(255, 255, 255, 0.1), borderWidth: 1 } }, scales: { x: { title: { display: true, text: xlabel, color: #a0aec0, font: { size: 13, weight: 500 } }, grid: { color: rgba(255, 255, 255, 0.05) }, ticks: { color: #a0aec0 } }, y: { title: { display: true, text: label, color: #a0aec0, font: { size: 13, weight: 500 } }, grid: { color: rgba(255, 255, 255, 0.05) }, ticks: { color: #a0aec0 } } }, interaction: { mode: nearest, axis: x, intersect: false }, animations: { tension: { duration: 1000, easing: linear } } } }); // Store reference to the chart if (id trajectoryChart) trajectoryChart newChart; if (id velocityChart) velocityChart newChart; if (id accelerationChart) accelerationChart newChart; } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]