1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//! Built-in material data: Grossular (Tsavorite) and Andradite (Demantoid) garnets.
use super::{CrystalSystem, GemMaterial, OpticalCharacter};
use crate::optics::{
absorption::{AbsorptionBand, AbsorptionTensor},
dispersion::DispersionModel,
};
use glam::Vec3;
impl GemMaterial {
/// Continuation of [`Self::built_in_materials_garnets_pyrope_through_spessartine`]
/// (split purely to keep each part under clippy's function-length lint):
/// Grossular (Tsavorite) and Andradite (Demantoid). See that function's doc
/// comment for the shared garnet-group dispersion-fit convention (2-parameter
/// Cauchy, B-G->F-C converted).
pub(super) fn built_in_materials_garnets_grossular_and_andradite() -> Vec<Self> {
vec![
// Grossular (Tsavorite variety, Ca3Al2(SiO4)3:V/Cr): n_d=1.734, B-G 0.028
// -> Delta n(F-C) = 0.01621, A=1.734-0.008486/0.5893^2=1.709572,
// B=0.008486. Abbe V_d~45.71.
Self {
name: "Grossular Garnet (Tsavorite)".to_string(),
crystal_system: CrystalSystem::Cubic,
optical_character: OpticalCharacter::Isotropic,
dispersion: DispersionModel::Cauchy {
a: 1.709_572,
b: 0.008_486,
c: 0.0,
},
birefringence_delta: 0.0,
// Chromophore: V3+/Cr3+ (the same chromophore family as Emerald
// above, in a garnet host) absorbing violet-blue (430nm) and
// red-orange (610nm), leaving tsavorite's vivid green transmitted --
// the same two-window mechanism as Emerald's own entry above. Widths
// (30nm/40nm) and peaks (1.6/1.8) TUNED for a strong green; band
// CENTRES cited.
absorption: AbsorptionTensor::isotropic(vec![
AbsorptionBand::new(430.0, 30.0, 1.6),
AbsorptionBand::new(610.0, 40.0, 1.8),
]),
c_axis: Vec3::Y,
biaxial_delta_beta_alpha: None,
scattering_sigma_s: 0.0,
scattering_g: 0.0,
edge_rounding_radius: 0.0,
absorption_path_scale: 1.0,
absorption_unit: super::AbsorptionUnit::ModelUnit,
zoning: None,
uniaxial_extraordinary_dispersion: None,
},
// Andradite (Demantoid variety, Ca3Fe2(SiO4)3:Cr): n_d=1.887, B-G 0.057
// (demantoid's famously-cited dispersion, HIGHER than diamond's 0.044 B-G-
// equivalent figure) -> Delta n(F-C) = 0.03300,
// A=1.887-0.017276/0.5893^2=1.837264, B=0.017276. Abbe V_d~26.88.
Self {
name: "Andradite Garnet (Demantoid)".to_string(),
crystal_system: CrystalSystem::Cubic,
optical_character: OpticalCharacter::Isotropic,
dispersion: DispersionModel::Cauchy {
a: 1.837_264,
b: 0.017_276,
c: 0.0,
},
birefringence_delta: 0.0,
// Chromophore: Cr3+ 440/620nm pair, giving demantoid its vivid
// saturated green -- the strongest of the five garnets modelled here.
// Widths (30nm/45nm) and peaks (1.8/2.0) TUNED; band CENTRES cited.
absorption: AbsorptionTensor::isotropic(vec![
AbsorptionBand::new(440.0, 30.0, 1.8),
AbsorptionBand::new(620.0, 45.0, 2.0),
]),
c_axis: Vec3::Y,
biaxial_delta_beta_alpha: None,
scattering_sigma_s: 0.0,
scattering_g: 0.0,
edge_rounding_radius: 0.0,
absorption_path_scale: 1.0,
absorption_unit: super::AbsorptionUnit::ModelUnit,
zoning: None,
uniaxial_extraordinary_dispersion: None,
},
]
}
}