runtime_units/unit_definitions/luminance.rs
1//! Luminance (base UnitDefinition candela per square meter, cd · m⁻²).
2use crate::{prefix, quantity};
3quantity! {
4 /// Luminance (base UnitDefinition candela per square meter, cd · m⁻²).
5 quantity: Luminance; "luminance";
6 /// Dimension of luminance, L⁻²J (base UnitDefinition candela per square meter, cd · m⁻²).
7 dimension: ISQ<
8 N2, // length
9 Z0, // mass
10 Z0, // time
11 Z0, // electric current
12 Z0, // thermodynamic temperature
13 Z0, // amount of substance
14 P1>; // luminous intensity
15 units {
16 @yottacandela_per_square_meter: prefix!(yotta); "Ycd/m²", "yottacandela per square meter",
17 "yottacandelas per square meter";
18 @zettacandela_per_square_meter: prefix!(zetta); "Zcd/m²", "zettacandela per square meter",
19 "zettacandelas per square meter";
20 @exacandela_per_square_meter: prefix!(exa); "Ecd/m²", "exacandela per square meter",
21 "exacandelas per square meter";
22 @petacandela_per_square_meter: prefix!(peta); "Pcd/m²", "petacandela per square meter",
23 "petacandelas per square meter";
24 @teracandela_per_square_meter: prefix!(tera); "Tcd/m²", "teracandela per square meter",
25 "teracandelas per square meter";
26 @gigacandela_per_square_meter: prefix!(giga); "Gcd/m²", "gigacandela per square meter",
27 "gigacandelas per square meter";
28 @megacandela_per_square_meter: prefix!(mega); "Mcd/m²", "megacandela per square meter",
29 "megacandelas per square meter";
30 @kilocandela_per_square_meter: prefix!(kilo); "kcd/m²", "kilocandela per square meter",
31 "kilocandelas per square meter";
32 @hectocandela_per_square_meter: prefix!(hecto); "hcd/m²", "hectocandela per square meter",
33 "hectocandelas per square meter";
34 @decacandela_per_square_meter: prefix!(deca); "dacd/m²", "decacandela per square meter",
35 "decacandelas per square meter";
36 /// Derived UnitDefinition of luminance.
37 @candela_per_square_meter: prefix!(none); "cd/m²", "candela per square meter",
38 "candelas per square meter";
39 @decicandela_per_square_meter: prefix!(deci); "dcd/m²", "decicandela per square meter",
40 "decicandelas per square meter";
41 @centicandela_per_square_meter: prefix!(centi); "ccd/m²", "centicandela per square meter",
42 "centicandelas per square meter";
43 @millicandela_per_square_meter: prefix!(milli); "mcd/m²", "millicandela per square meter",
44 "millicandelas per square meter";
45 @microcandela_per_square_meter: prefix!(micro); "µcd/m²", "microcandela per square meter",
46 "microcandelas per square meter";
47 @nanocandela_per_square_meter: prefix!(nano); "ncd/m²", "nanocandela per square meter",
48 "nanocandelas per square meter";
49 @picocandela_per_square_meter: prefix!(pico); "pcd/m²", "picocandela per square meter",
50 "picocandelas per square meter";
51 @femtocandela_per_square_meter: prefix!(femto); "fcd/m²", "femtocandela per square meter",
52 "femtocandelas per square meter";
53 @attocandela_per_square_meter: prefix!(atto); "acd/m²", "attocandela per square meter",
54 "attocandelas per square meter";
55 @zeptocandela_per_square_meter: prefix!(zepto); "zcd/m²", "zeptocandela per square meter",
56 "zeptocandelas per square meter";
57 @yoctocandela_per_square_meter: prefix!(yocto); "ycd/m²", "yoctocandela per square meter",
58 "yoctocandelas per square meter";
59
60 @candela_per_square_picometer: prefix!(yotta); "cd/pm²", "candela per square picometer",
61 "candelas per square picometer";
62 @candela_per_square_nanometer: prefix!(exa); "cd/nm²", "candela per square nanometer",
63 "candelas per square nanometer";
64 @candela_per_square_micrometer: prefix!(tera); "cd/µm²", "candela per square micrometer",
65 "candelas per square micrometer";
66 @candela_per_square_millimeter: prefix!(mega); "cd/mm²", "candela per square millimeter",
67 "candelas per square millimeter";
68 @candela_per_square_centimeter: 1.0_E4; "cd/cm²", "candela per square centimeter",
69 "candelas per square centimeter";
70 @candela_per_square_kilometer: prefix!(micro); "cd/km²", "candela per square kilometer",
71 "candelas per square kilometer";
72 @candela_per_square_megameter: prefix!(pico); "cd/Mm²", "candela per square megameter",
73 "candelas per square megameter";
74 @candela_per_square_gigameter: prefix!(atto); "cd/Gm²", "candela per square gigameter",
75 "candelas per square gigameter";
76 @candela_per_square_terameter: prefix!(yocto); "cd/Tm²", "candela per square terameter",
77 "candelas per square terameter";
78
79 @candela_per_square_inch: 1.550_003_100_006_200_2_E3; "cd/in²", "candela per square inch",
80 "candelas per square inch";
81 @candela_per_square_foot: 1.076_391_041_670_972_2_E1; "cd/ft²", "candela per square foot",
82 "candelas per square foot";
83 @footlambert: 3.426_259_099_635_390_5_E0; "fl", "footlambert", "footlamberts";
84 @lambert: 3.183_098_861_837_906_7_E3; "la", "lambert", "lamberts";
85 @stilb: 1.0_E4; "sb", "stilb", "stilbs";
86 }
87}
88
89// #[cfg(test)]
90// mod test {
91// storage_types! {
92// use crate::num::One;
93// use crate::si::area as a;
94// use crate::si::luminance as l;
95// use crate::si::luminous_intensity as i;
96// use crate::si::quantities::*;
97// use crate::tests::Test;
98
99// #[test]
100// fn check_dimension() {
101// let _: Luminance<V> = LuminousIntensity::new::<i::candela>(V::one())
102// / Area::new::<a::square_meter>(V::one());
103// }
104
105// #[test]
106// fn check_units() {
107// test::<i::yottacandela, a::square_meter, l::yottacandela_per_square_meter>();
108// test::<i::zettacandela, a::square_meter, l::zettacandela_per_square_meter>();
109// test::<i::exacandela, a::square_meter, l::exacandela_per_square_meter>();
110// test::<i::petacandela, a::square_meter, l::petacandela_per_square_meter>();
111// test::<i::teracandela, a::square_meter, l::teracandela_per_square_meter>();
112// test::<i::gigacandela, a::square_meter, l::gigacandela_per_square_meter>();
113// test::<i::megacandela, a::square_meter, l::megacandela_per_square_meter>();
114// test::<i::kilocandela, a::square_meter, l::kilocandela_per_square_meter>();
115// test::<i::hectocandela, a::square_meter, l::hectocandela_per_square_meter>();
116// test::<i::decacandela, a::square_meter, l::decacandela_per_square_meter>();
117// test::<i::candela, a::square_meter, l::candela_per_square_meter>();
118// test::<i::decicandela, a::square_meter, l::decicandela_per_square_meter>();
119// test::<i::centicandela, a::square_meter, l::centicandela_per_square_meter>();
120// test::<i::millicandela, a::square_meter, l::millicandela_per_square_meter>();
121// test::<i::microcandela, a::square_meter, l::microcandela_per_square_meter>();
122// test::<i::nanocandela, a::square_meter, l::nanocandela_per_square_meter>();
123// test::<i::picocandela, a::square_meter, l::picocandela_per_square_meter>();
124// test::<i::femtocandela, a::square_meter, l::femtocandela_per_square_meter>();
125// test::<i::attocandela, a::square_meter, l::attocandela_per_square_meter>();
126// test::<i::zeptocandela, a::square_meter, l::zeptocandela_per_square_meter>();
127// test::<i::yoctocandela, a::square_meter, l::yoctocandela_per_square_meter>();
128
129// test::<i::candela, a::square_picometer, l::candela_per_square_picometer>();
130// test::<i::candela, a::square_nanometer, l::candela_per_square_nanometer>();
131// test::<i::candela, a::square_micrometer, l::candela_per_square_micrometer>();
132// test::<i::candela, a::square_millimeter, l::candela_per_square_millimeter>();
133// test::<i::candela, a::square_centimeter, l::candela_per_square_centimeter>();
134// test::<i::candela, a::square_kilometer, l::candela_per_square_kilometer>();
135// test::<i::candela, a::square_megameter, l::candela_per_square_megameter>();
136// test::<i::candela, a::square_gigameter, l::candela_per_square_gigameter>();
137// test::<i::candela, a::square_terameter, l::candela_per_square_terameter>();
138
139// test::<i::candela, a::square_inch, l::candela_per_square_inch>();
140// test::<i::candela, a::square_foot, l::candela_per_square_foot>();
141
142// fn test<I: i::Conversion<V>, A: a::Conversion<V>, L: l::Conversion<V>>() {
143// Test::assert_approx_eq(&Luminance::new::<L>(V::one()),
144// &(LuminousIntensity::new::<I>(V::one()) / Area::new::<A>(V::one())));
145// }
146// }
147// }
148// }