index.html 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Scattnlay web</title>
  8. <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
  9. </head>
  10. <body>
  11. <input type="number" id="fromWL" step="any" value="400.0">from WL<br>
  12. <input type="number" id="toWL" step="any" value="800">to WL<br>
  13. <input type="number" id="R" step="any" value="100">R<br>
  14. <input type="number" id="reN" step="any" value="4">Re(n)<br>
  15. <input type="number" id="imN" step="any" value="0">Im(n)<br>
  16. <button id="Evaluate">Run Mie!</button>
  17. <div id="PlotQsca"></div>
  18. <script src="/nmie.js"></script>
  19. <script>
  20. var fromWL = parseFloat(document.getElementById("fromWL").value);
  21. var toWL = parseFloat(document.getElementById("toWL").value);
  22. var R = parseFloat(document.getElementById("R").value);
  23. var reN = parseFloat(document.getElementById("reN").value);
  24. var imN = parseFloat(document.getElementById("imN").value);
  25. const range = (start, stop, step = 1) =>
  26. Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step)
  27. Module.addOnPostRun(() => {
  28. const nmie = new Module.nmie()
  29. Evaluate.onclick = () => {
  30. nmie.AddTargetLayerReIm(R, reN, imN)
  31. var WLs = range(fromWL,toWL,1)
  32. var Qsca = [], Qabs = [];
  33. WLs.forEach(function(WL) {
  34. nmie.SetWavelength(WL);
  35. nmie.RunMieCalculation();
  36. Qsca.push(nmie.GetQsca());
  37. Qabs.push(nmie.GetQabs());
  38. });
  39. console.log('Qsca = ', Qsca);
  40. var trace1 = {
  41. x: WLs,
  42. y: Qsca,
  43. type: 'scatter',
  44. };
  45. var trace2 = {
  46. x: WLs,
  47. y: Qabs,
  48. type: 'scatter'
  49. };
  50. var data = [trace1, trace2];
  51. Plotly.newPlot('PlotQsca', data, {}, {showSendToCloud: true});
  52. };
  53. })
  54. </script>
  55. </body>
  56. </html>