Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - visuphy/DiffractionGrating: Interactive web simulation of diffraction grating · GitHub
Skip to content

Repository files navigation

Diffraction Grating Simulator

An interactive, web-based simulator that provides a real-time visualization of the diffraction pattern produced by a reflective or transmissive grating. This tool allows users to explore the principles of optical diffraction by adjusting a comprehensive set of parameters for both the incident light and the grating itself.

Live Demo

Experience the simulator live at: visuphy.github.io/DiffractionGrating

Screenshot

Screenshot of the Diffraction Grating Simulator

Features

  • Dual Light Modes: Simulate diffraction for both Monochromatic and White Light sources.
  • Comprehensive Beam Controls:
    • Adjust the Wavelength (λ) of monochromatic light with a dynamic range.
    • Set the Bandwidth (Δλ) to observe the effect of spectral line width.
    • Modify the Angle of Incidence (α) of the light source.
  • Detailed Grating Properties:
    • Control Grating Spacing (d) or, alternatively, the Groove Density (lines/mm).
    • Select the number of Diffraction Orders (±m) to display.
    • Define the number of Illuminated Grooves (N) to see its effect on resolving power.
    • Switch between Reflective and Transmissive grating types.
  • Interactive Analysis:
    • In monochromatic mode, click on any diffraction order to view its key quantitative properties.
    • Displayed data includes the precise diffraction angle, angular dispersion, temporal dispersion (GVD), and the system's resolving power.
  • Littrow Condition Display: The simulator calculates and displays the wavelength and angle required to satisfy the Littrow condition for m=1 based on the current setup.

How to Use

  1. Launch the Simulator: Open the live demo link in your browser.
  2. Select Light Properties:
    • Choose between Monochromatic or White Light.
    • If monochromatic, use the sliders or input boxes to set the Wavelength and Bandwidth.
    • Adjust the Angle of Incidence for the incoming beam.
  3. Configure Grating Properties:
    • Use the sliders or input fields to set the Grating Spacing or Groove Density. Note that changing one will automatically update the other.
    • Set the maximum number of diffraction orders and illuminated grooves.
    • Select whether the grating is Reflective or Transmissive.
  4. Analyze the Results:
    • Observe the diffraction pattern on the canvas.
    • For detailed analysis, switch to Monochromatic mode and click on a specific diffracted ray (e.g., m = 1). The calculated physical properties for that order will appear in the top-left corner of the canvas.

Technical Details

This simulator is built entirely with client-side web technologies:

  • HTML5: For the structure and layout of the user interface.
  • CSS3: For styling the controls and ensuring a responsive design.
  • JavaScript: For the core simulation logic, physics calculations, and rendering on the HTML5 Canvas.

No external libraries or frameworks are required, ensuring the simulator is lightweight and fast-loading.

Contributing

Feedback and contributions are welcome! If you encounter any bugs, have suggestions for new features, or would like to improve the code, please feel free to:

  • Report an issue: Open an issue on the GitHub Issues page.
  • Submit a pull request: Fork the repository, make your changes, and submit a pull request for review.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Acknowledgments

About

Interactive web simulation of diffraction grating

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages