BHoM / BHoM_Engine

Internal manipulation of the BHoM
GNU Lesser General Public License v3.0
26 stars 13 forks source link

Environment_Engine: Light Transmittance Query #969

Open FraserGreenroyd opened 5 years ago

FraserGreenroyd commented 5 years ago

Related to https://github.com/BHoM/BHoM/issues/484

If a user has provided a fragment for light transmittance by red/green/blue values, there should be a Query method for obtaining a single transmittance value from these.

tg359 commented 5 years ago

As with issue #970 the overall light transmittance of a material is just a weighting applied to different wavelengths based on human perception of colours.

The formula for which (originally here) is:

CompositeTransmittance(double TransmittanceRed, double TransmittanceGreen, double TransmittanceBlue){
    return 0.265 * TransmittanceRed+ 0.670 * TransmittanceGreen+ 0.065 * TransmittanceBlue;
}

So for RGB transmittances of 0.2, 0.3, and 0.4, we'd get an overall transmittance of 0.28.

tg359 commented 5 years ago

Additionally, I found another potentially useful method that might be worth including while adding this one - material transmissivity. This is the amount of light not absorbed in one traversal of the material. Transmittance - the value usually measured - is the total light transmitted through the pane including multiple reflections.

LightTransmissivity(double LightTransmittance){
    return (Math.Sqrt(0.8402528435 + 0.0072522239 * Math.Pow(LightTransmittance, 2)) - 0.9166530661) / 0.0036261119 / LightTransmittance;
}