@@ -79,6 +79,10 @@ public sealed class CIEUCS : AConvertibleColor
7979
8080 static List < CIEUCS > TemperatureChromaticities = null ;
8181
82+ double CCT = double . NaN ;
83+
84+ double Duv = double . NaN ;
85+
8286 #endregion
8387
8488
@@ -188,6 +192,11 @@ public override double GetCCT ()
188192 return ( DataSource as BlackBodySpectrum ) . CCT ;
189193 }
190194
195+ if ( ! double . IsNaN ( CCT ) ) {
196+ return CCT ;
197+ }
198+
199+ // Precomputing interpolation tables...
191200 if ( TemperatureChromaticities == null ) {
192201 // Oversized to improve alignment (needs 302).
193202 TemperatureChromaticities = new List < CIEUCS > ( 512 ) ;
@@ -201,7 +210,7 @@ public override double GetCCT ()
201210 }
202211
203212 int bestI = 0 ;
204- double minDuv = double . PositiveInfinity ;
213+ Duv = double . PositiveInfinity ;
205214
206215 // First gross grained search
207216 // TODO: This is a naive search, must be improved!
@@ -211,12 +220,12 @@ public override double GetCCT ()
211220 Math . Pow ( v - TemperatureChromaticities [ i ] . v , 2 )
212221 ) ;
213222
214- if ( minDuv > tmpDuv ) {
215- minDuv = tmpDuv ;
223+ if ( Duv > tmpDuv ) {
224+ Duv = tmpDuv ;
216225 bestI = i ;
217226 }
218227 }
219- double bestTmp = TemperatureChromaticities [ bestI ] . GetCCT ( ) ;
228+ CCT = TemperatureChromaticities [ bestI ] . GetCCT ( ) ;
220229
221230 // Preparing the following fine grained search
222231 double tMin = TemperatureChromaticities [
@@ -233,13 +242,26 @@ public override double GetCCT ()
233242
234243 double tmpDuv = Math . Sqrt ( Math . Pow ( u - tmpUV . u , 2 ) + Math . Pow ( v - tmpUV . v , 2 ) ) ;
235244
236- if ( minDuv > tmpDuv ) {
237- minDuv = tmpDuv ;
238- bestTmp = t ;
245+ if ( Duv > tmpDuv ) {
246+ Duv = tmpDuv ;
247+ CCT = t ;
239248 }
240249 }
241250
242- return bestTmp ;
251+ return CCT ;
252+ }
253+
254+ public override double GetDuv ( )
255+ {
256+ if ( DataSource is BlackBodySpectrum ) {
257+ return 0 ;
258+ }
259+
260+ if ( double . IsNaN ( Duv ) ) {
261+ GetCCT ( ) ;
262+ }
263+
264+ return Duv ;
243265 }
244266
245267 /**
0 commit comments