Beispiel #1
0
def figures ():
    '''Draw some thin film plots.'''
    # Simple patch plot. This is not all that interesting.
    thickness_nm_list = numpy.linspace(0.0, 750.0, 36)
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 9.50)
    thinfilm_patch_plot (1.500, 1.003, 1.500, thickness_nm_list,
        illuminant, 'ThinFilm Patch Plot', 'ThinFilm-Patch')

    # Plot the colors of films vs thickness.
    # Scale the illuminant to get a better range of color.
    thickness_nm_list = numpy.linspace(0.0, 1000.0, 800)
    # Gap in glass/plastic.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 4.50)
    thinfilm_color_vs_thickness_plot (
        1.500, 1.003, 1.500, thickness_nm_list, illuminant,
        'Thin Film - Gap In Glass/Plastic (n = 1.50)\nIlluminant D65',
        'ThinFilm-GlassGap')
    # Soap bubble.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 9.50)
    thinfilm_color_vs_thickness_plot (
        1.003, 1.33, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Soap Bubble (n = 1.33)\nIlluminant D65',
        'ThinFilm-SoapBubble')
    # Oil slick on water.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 15.00)
    thinfilm_color_vs_thickness_plot (
        1.003, 1.44, 1.33, thickness_nm_list, illuminant,
        'Thin Film - Oil Slick (n = 1.44) on Water (n = 1.33)\nIlluminant D65',
        'ThinFilm-OilSlick')
    # Large index of refraction bubble.
    # This has the brightest colors, but is a bit of an artificial example.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 3.33)
    thinfilm_color_vs_thickness_plot (
        1.003, 1.60, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Large Index (n = 1.60) Bubble\nIlluminant D65',
        'ThinFilm-LargeBubble')

    # A very thick film to test the aliasing limits.
    # You have to go to very large thicknesses to get much aliasing.
    thickness_nm_list = numpy.linspace(0.0, 200000.0, 800)
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant (illuminant, 9.50)
    thinfilm_color_vs_thickness_plot (
        1.003, 1.33, 1.003, thickness_nm_list, illuminant,
        'Not-so-thin Film - Soap Bubble (n = 1.33)\nIlluminant D65',
        'ThinFilm-Thick')

    # Plot the spectrum of the refection for a couple of thicknesses.
    # Use a constant illuminant for a cleaner plot.
    # FIXME: Should this really be using an illuminant?
    illuminant = illuminants.get_constant_illuminant()
    illuminants.scale_illuminant (illuminant, 9.50)
    thinfilm_spectrum_plot (1.003, 1.33, 1.003, 400.0, illuminant,
        'Thin Film Interference Spectrum - 400 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-400nm')
    thinfilm_spectrum_plot (1.003, 1.33, 1.003, 500.0, illuminant,
        'Thin Film Interference Spectrum - 500 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-500nm')
Beispiel #2
0
def figures():
    '''Draw some thin film plots.'''
    # simple patch plot
    thickness_nm_list = xrange(0, 1000, 10)
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_patch_plot(1.500, 1.003, 1.500, thickness_nm_list, illuminant,
                        'ThinFilm Patch Plot', 'ThinFilm-Patch')

    # plot the colors of films vs thickness.
    # we scale the illuminant to get a better range of color.
    #thickness_nm_list = xrange (0, 1000, 2)   # faster
    thickness_nm_list = xrange(0, 1000, 1)  # nicer
    # gap in glass/plastic
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 4.50)
    thinfilm_color_vs_thickness_plot(
        1.500, 1.003, 1.500, thickness_nm_list, illuminant,
        'Thin Film - Gap In Glass/Plastic (n = 1.50)\nIlluminant D65',
        'ThinFilm-GlassGap')
    # soap bubble
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.33, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Soap Bubble (n = 1.33)\nIlluminant D65',
        'ThinFilm-SoapBubble')
    # oil slick on water
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 15.00)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.44, 1.33, thickness_nm_list, illuminant,
        'Thin Film - Oil Slick (n = 1.44) on Water (n = 1.33)\nIlluminant D65',
        'ThinFilm-OilSlick')
    # large index of refraction bubble
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 3.33)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.60, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Large Index (n = 1.60) Bubble\nIlluminant D65',
        'ThinFilm-LargeBubble')

    # plot the spectrum of the refection for a couple of thicknesses - using constant illuminant for cleaner plot
    illuminant = illuminants.get_constant_illuminant()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_spectrum_plot(
        1.003, 1.33, 1.003, 400.0, illuminant,
        'Thin Film Interference Spectrum - 400 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-400nm')
    thinfilm_spectrum_plot(
        1.003, 1.33, 1.003, 500.0, illuminant,
        'Thin Film Interference Spectrum - 500 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-500nm')
Beispiel #3
0
def figures():
    '''Draw some thin film plots.'''
    # Simple patch plot. This is not all that interesting.
    thickness_nm_list = numpy.linspace(0.0, 750.0, 36)
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_patch_plot(1.500, 1.003, 1.500, thickness_nm_list, illuminant,
                        'ThinFilm Patch Plot', 'ThinFilm-Patch')

    # Plot the colors of films vs thickness.
    # Scale the illuminant to get a better range of color.
    thickness_nm_list = numpy.linspace(0.0, 1000.0, 800)
    # Gap in glass/plastic.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 4.50)
    thinfilm_color_vs_thickness_plot(
        1.500, 1.003, 1.500, thickness_nm_list, illuminant,
        'Thin Film - Gap In Glass/Plastic (n = 1.50)\nIlluminant D65',
        'ThinFilm-GlassGap')
    # Soap bubble.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.33, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Soap Bubble (n = 1.33)\nIlluminant D65',
        'ThinFilm-SoapBubble')
    # Oil slick on water.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 15.00)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.44, 1.33, thickness_nm_list, illuminant,
        'Thin Film - Oil Slick (n = 1.44) on Water (n = 1.33)\nIlluminant D65',
        'ThinFilm-OilSlick')
    # Large index of refraction bubble.
    # This has the brightest colors, but is a bit of an artificial example.
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 3.33)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.60, 1.003, thickness_nm_list, illuminant,
        'Thin Film - Large Index (n = 1.60) Bubble\nIlluminant D65',
        'ThinFilm-LargeBubble')

    # A very thick film to test the aliasing limits.
    # You have to go to very large thicknesses to get much aliasing.
    thickness_nm_list = numpy.linspace(0.0, 200000.0, 800)
    illuminant = illuminants.get_illuminant_D65()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_color_vs_thickness_plot(
        1.003, 1.33, 1.003, thickness_nm_list, illuminant,
        'Not-so-thin Film - Soap Bubble (n = 1.33)\nIlluminant D65',
        'ThinFilm-Thick')

    # Plot the spectrum of the refection for a couple of thicknesses.
    # Use a constant illuminant for a cleaner plot.
    # FIXME: Should this really be using an illuminant?
    illuminant = illuminants.get_constant_illuminant()
    illuminants.scale_illuminant(illuminant, 9.50)
    thinfilm_spectrum_plot(
        1.003, 1.33, 1.003, 400.0, illuminant,
        'Thin Film Interference Spectrum - 400 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-400nm')
    thinfilm_spectrum_plot(
        1.003, 1.33, 1.003, 500.0, illuminant,
        'Thin Film Interference Spectrum - 500 nm thick\nConstant Illuminant',
        'ThinFilm-Spectrum-500nm')