amaran-light-cli 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +58 -2
- package/dist/__tests__/autoCct.test.js +10 -0
- package/dist/__tests__/autoCct.test.js.map +1 -1
- package/dist/__tests__/autostart.test.d.ts +2 -0
- package/dist/__tests__/autostart.test.d.ts.map +1 -0
- package/dist/__tests__/autostart.test.js +131 -0
- package/dist/__tests__/autostart.test.js.map +1 -0
- package/dist/__tests__/cctUtil.test.js +52 -39
- package/dist/__tests__/cctUtil.test.js.map +1 -1
- package/dist/__tests__/cli.smoke.test.js +2 -2
- package/dist/__tests__/cli.smoke.test.js.map +1 -1
- package/dist/__tests__/intensityApi.test.js.map +1 -1
- package/dist/autostart.d.ts +29 -0
- package/dist/autostart.d.ts.map +1 -0
- package/dist/autostart.js +194 -0
- package/dist/autostart.js.map +1 -0
- package/dist/cctUtil.d.ts +12 -15
- package/dist/cctUtil.d.ts.map +1 -1
- package/dist/cctUtil.js +411 -68
- package/dist/cctUtil.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/autoCct.d.ts +1 -1
- package/dist/commands/autoCct.d.ts.map +1 -1
- package/dist/commands/autoCct.js +31 -11
- package/dist/commands/autoCct.js.map +1 -1
- package/dist/commands/cct.d.ts.map +1 -1
- package/dist/commands/cct.js +11 -6
- package/dist/commands/cct.js.map +1 -1
- package/dist/commands/color.d.ts.map +1 -1
- package/dist/commands/color.js.map +1 -1
- package/dist/commands/hsi.d.ts.map +1 -1
- package/dist/commands/hsi.js.map +1 -1
- package/dist/commands/intensity.d.ts.map +1 -1
- package/dist/commands/intensity.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/power.d.ts.map +1 -1
- package/dist/commands/power.js.map +1 -1
- package/dist/commands/schedule.d.ts +1 -1
- package/dist/commands/schedule.d.ts.map +1 -1
- package/dist/commands/schedule.js +284 -56
- package/dist/commands/schedule.js.map +1 -1
- package/dist/commands/service.d.ts.map +1 -1
- package/dist/commands/service.js +21 -4
- package/dist/commands/service.js.map +1 -1
- package/dist/commands/simulateSchedule.d.ts +5 -0
- package/dist/commands/simulateSchedule.d.ts.map +1 -0
- package/dist/commands/simulateSchedule.js +219 -0
- package/dist/commands/simulateSchedule.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +27 -22
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +96 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/lightControl.d.ts +4 -2
- package/dist/lightControl.d.ts.map +1 -1
- package/dist/lightControl.js +18 -4
- package/dist/lightControl.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cctUtil.js
CHANGED
|
@@ -1,93 +1,436 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CurveType = void 0;
|
|
4
|
+
exports.parseCurveType = parseCurveType;
|
|
5
|
+
exports.getAvailableCurves = getAvailableCurves;
|
|
3
6
|
exports.calculateCCT = calculateCCT;
|
|
4
7
|
const suncalc_1 = require("suncalc");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
var CurveType;
|
|
10
|
+
(function (CurveType) {
|
|
11
|
+
CurveType["HANN"] = "hann";
|
|
12
|
+
CurveType["WIDER_MIDDLE_SMALL"] = "wider-middle-small";
|
|
13
|
+
CurveType["WIDER_MIDDLE_MEDIUM"] = "wider-middle-medium";
|
|
14
|
+
CurveType["WIDER_MIDDLE_LARGE"] = "wider-middle-large";
|
|
15
|
+
CurveType["CIE_DAYLIGHT"] = "cie-daylight";
|
|
16
|
+
CurveType["SUN_ALTITUDE"] = "sun-altitude";
|
|
17
|
+
CurveType["PEREZ_DAYLIGHT"] = "perez-daylight";
|
|
18
|
+
})(CurveType || (exports.CurveType = CurveType = {}));
|
|
19
|
+
function parseCurveType(curve) {
|
|
20
|
+
const normalizedCurve = curve.toLowerCase();
|
|
21
|
+
if (normalizedCurve === 'hann') {
|
|
22
|
+
return 'HANN';
|
|
23
|
+
}
|
|
24
|
+
else if (normalizedCurve === 'wider-middle-small') {
|
|
25
|
+
return 'WIDER_MIDDLE_SMALL';
|
|
26
|
+
}
|
|
27
|
+
else if (normalizedCurve === 'wider-middle-medium') {
|
|
28
|
+
return 'WIDER_MIDDLE_MEDIUM';
|
|
29
|
+
}
|
|
30
|
+
else if (normalizedCurve === 'wider-middle-large') {
|
|
31
|
+
return 'WIDER_MIDDLE_LARGE';
|
|
32
|
+
}
|
|
33
|
+
else if (normalizedCurve === 'wider-middle') {
|
|
34
|
+
return 'WIDER_MIDDLE_MEDIUM'; // Default to medium for backwards compatibility
|
|
35
|
+
}
|
|
36
|
+
else if (normalizedCurve === 'cie-daylight') {
|
|
37
|
+
return 'CIE_DAYLIGHT';
|
|
38
|
+
}
|
|
39
|
+
else if (normalizedCurve === 'sun-altitude') {
|
|
40
|
+
return 'SUN_ALTITUDE';
|
|
41
|
+
}
|
|
42
|
+
else if (normalizedCurve === 'perez-daylight') {
|
|
43
|
+
return 'PEREZ_DAYLIGHT';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error('Invalid curve type. Use "hann", "wider-middle-small", "wider-middle-medium", "wider-middle-large", "cie-daylight", "sun-altitude", or "perez-daylight"');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function getAvailableCurves() {
|
|
50
|
+
return Object.values(CurveType);
|
|
51
|
+
}
|
|
52
|
+
const CURVE_FUNCTIONS = {
|
|
53
|
+
[CurveType.HANN]: hannCurve,
|
|
54
|
+
[CurveType.WIDER_MIDDLE_SMALL]: (x) => widerMiddleCurve(x, 'small'),
|
|
55
|
+
[CurveType.WIDER_MIDDLE_MEDIUM]: (x) => widerMiddleCurve(x, 'medium'),
|
|
56
|
+
[CurveType.WIDER_MIDDLE_LARGE]: (x) => widerMiddleCurve(x, 'large'),
|
|
57
|
+
[CurveType.CIE_DAYLIGHT]: cieDaylightCurve,
|
|
58
|
+
[CurveType.SUN_ALTITUDE]: sunAltitudeCurve,
|
|
59
|
+
[CurveType.PEREZ_DAYLIGHT]: perezDaylightCurve,
|
|
10
60
|
};
|
|
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
|
-
|
|
61
|
+
function hannCurve(x) {
|
|
62
|
+
return 0.5 * (1 - Math.cos(2 * Math.PI * x));
|
|
63
|
+
}
|
|
64
|
+
function widerMiddleCurve(x, width = 'medium') {
|
|
65
|
+
const widthConfig = {
|
|
66
|
+
small: { start: 0.35, end: 0.65 }, // Narrow plateau (30% of day)
|
|
67
|
+
medium: { start: 0.2, end: 0.8 }, // Medium plateau (60% of day)
|
|
68
|
+
large: { start: 0.1, end: 0.9 }, // Wide plateau (80% of day)
|
|
69
|
+
};
|
|
70
|
+
const { start: plateauStart, end: plateauEnd } = widthConfig[width];
|
|
71
|
+
if (x < plateauStart) {
|
|
72
|
+
return Math.sin(((x / plateauStart) * Math.PI) / 2);
|
|
73
|
+
}
|
|
74
|
+
else if (x > plateauEnd) {
|
|
75
|
+
return Math.cos((((x - plateauEnd) / (1 - plateauEnd)) * Math.PI) / 2);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Scientifically-based daylight curves using suncalc data
|
|
82
|
+
// Realistic daylight calculation functions
|
|
83
|
+
function calculateRealisticSunAltitude(altitude, maxAltitude) {
|
|
84
|
+
// Convert altitude to degrees for easier calculations
|
|
85
|
+
const altitudeDeg = (altitude * 180) / Math.PI;
|
|
86
|
+
const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
|
|
87
|
+
// CCT: Based on real-world color temperature at different sun angles
|
|
88
|
+
// Civil twilight (-6° to 0°): 4000-5000K
|
|
89
|
+
// Sunrise to 30°: 5000-6500K
|
|
90
|
+
// 30° to 60°: 5500-7000K
|
|
91
|
+
// Above 60°: 6500-7500K
|
|
92
|
+
let cctFactor;
|
|
93
|
+
if (altitudeDeg < -6) {
|
|
94
|
+
cctFactor = 0; // Before civil twilight - minimum CCT
|
|
95
|
+
}
|
|
96
|
+
else if (altitudeDeg < 0) {
|
|
97
|
+
// Civil twilight: 4000-5000K range
|
|
98
|
+
cctFactor = 0.3 + ((altitudeDeg + 6) / 6) * 0.2; // 0.3 to 0.5
|
|
99
|
+
}
|
|
100
|
+
else if (altitudeDeg < 30) {
|
|
101
|
+
// Morning/afternoon: 5000-6500K
|
|
102
|
+
cctFactor = 0.5 + (altitudeDeg / 30) * 0.3; // 0.5 to 0.8
|
|
103
|
+
}
|
|
104
|
+
else if (altitudeDeg < 60) {
|
|
105
|
+
// High sun: 5500-7000K
|
|
106
|
+
cctFactor = 0.8 + ((altitudeDeg - 30) / 30) * 0.2; // 0.8 to 1.0
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Very high sun: 6500-7500K
|
|
110
|
+
cctFactor = 1.0;
|
|
111
|
+
}
|
|
112
|
+
// Intensity: Based on actual illuminance levels, scaled to 5-100% range
|
|
113
|
+
// Peak at 100% around noon, much steeper curve than CCT
|
|
114
|
+
let intensityFactor;
|
|
115
|
+
if (altitudeDeg < -6) {
|
|
116
|
+
intensityFactor = 0; // Dark - will become 5% minimum
|
|
117
|
+
}
|
|
118
|
+
else if (altitudeDeg < 0) {
|
|
119
|
+
// Civil twilight: very low but increasing rapidly
|
|
120
|
+
intensityFactor = ((altitudeDeg + 6) / 6) ** 2 * 0.05; // 0 to 0.05
|
|
121
|
+
}
|
|
122
|
+
else if (altitudeDeg < 10) {
|
|
123
|
+
// Just after sunrise: rapid increase
|
|
124
|
+
intensityFactor = 0.05 + (altitudeDeg / 10) * 0.15; // 0.05 to 0.20
|
|
125
|
+
}
|
|
126
|
+
else if (altitudeDeg < 30) {
|
|
127
|
+
// Morning: steady increase
|
|
128
|
+
intensityFactor = 0.2 + ((altitudeDeg - 10) / 20) * 0.4; // 0.20 to 0.60
|
|
129
|
+
}
|
|
130
|
+
else if (altitudeDeg < maxAltitudeDeg * 0.8) {
|
|
131
|
+
// Approach maximum - reach 100% by 80% of max altitude
|
|
132
|
+
intensityFactor = 0.6 + ((altitudeDeg - 30) / (maxAltitudeDeg * 0.8 - 30)) * 0.4; // 0.60 to 1.0
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Maintain peak at maximum intensity
|
|
136
|
+
intensityFactor = 1.0;
|
|
137
|
+
}
|
|
138
|
+
return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
|
|
139
|
+
}
|
|
140
|
+
function calculateRealisticCIEDaylight(altitude, maxAltitude) {
|
|
141
|
+
// CIE daylight with more realistic atmospheric modeling
|
|
142
|
+
const altitudeDeg = (altitude * 180) / Math.PI;
|
|
143
|
+
const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
|
|
144
|
+
// CCT: CIE standard illuminant D series with atmospheric scattering
|
|
145
|
+
let cctFactor;
|
|
146
|
+
if (altitudeDeg < -6) {
|
|
147
|
+
cctFactor = 0;
|
|
148
|
+
}
|
|
149
|
+
else if (altitudeDeg < 0) {
|
|
150
|
+
// Enhanced blue during civil twilight due to Rayleigh scattering
|
|
151
|
+
cctFactor = 0.4 + ((altitudeDeg + 6) / 6) ** 1.5 * 0.2; // 0.4 to 0.6
|
|
152
|
+
}
|
|
153
|
+
else if (altitudeDeg < 15) {
|
|
154
|
+
// Golden hour effect: warmer light
|
|
155
|
+
cctFactor = 0.6 - Math.sin((altitudeDeg * Math.PI) / 30) * 0.1; // Slight dip to 0.5
|
|
156
|
+
}
|
|
157
|
+
else if (altitudeDeg < 45) {
|
|
158
|
+
// Mid-morning: rapid blue increase
|
|
159
|
+
cctFactor = 0.5 + ((altitudeDeg - 15) / 30) * 0.4; // 0.5 to 0.9
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// High sun: maximum blue
|
|
163
|
+
cctFactor = 0.9 + Math.min(0.1, ((altitudeDeg - 45) / 45) * 0.1); // 0.9 to 1.0
|
|
164
|
+
}
|
|
165
|
+
// Intensity: CIE illuminance with atmospheric absorption, scaled to 5-100%
|
|
166
|
+
let intensityFactor;
|
|
167
|
+
if (altitudeDeg < -6) {
|
|
168
|
+
intensityFactor = 0; // Will become 5% minimum
|
|
169
|
+
}
|
|
170
|
+
else if (altitudeDeg < 0) {
|
|
171
|
+
intensityFactor = ((altitudeDeg + 6) / 6) ** 3 * 0.03; // Very low start
|
|
172
|
+
}
|
|
173
|
+
else if (altitudeDeg < 15) {
|
|
174
|
+
// Atmospheric path length effect - gradual start
|
|
175
|
+
const airMass = 1 / Math.sin(Math.max(0.01, (altitude * Math.PI) / 180));
|
|
176
|
+
intensityFactor = Math.min(0.25, 1 / airMass ** 0.7);
|
|
177
|
+
}
|
|
178
|
+
else if (altitudeDeg < Math.min(40, maxAltitudeDeg * 0.6)) {
|
|
179
|
+
// Mid-morning increase - use lower of 40° or 60% of max altitude
|
|
180
|
+
intensityFactor = 0.25 + ((altitudeDeg - 15) / (Math.min(40, maxAltitudeDeg * 0.6) - 15)) * 0.55; // 0.25 to 0.80
|
|
181
|
+
}
|
|
182
|
+
else if (altitudeDeg < maxAltitudeDeg * 0.8) {
|
|
183
|
+
// Approach peak - reach 100% by 80% of max altitude
|
|
184
|
+
intensityFactor =
|
|
185
|
+
0.8 +
|
|
186
|
+
((altitudeDeg - Math.min(40, maxAltitudeDeg * 0.6)) /
|
|
187
|
+
(maxAltitudeDeg * 0.8 - Math.min(40, maxAltitudeDeg * 0.6))) *
|
|
188
|
+
0.2; // 0.80 to 1.0
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Peak at solar noon
|
|
192
|
+
intensityFactor = 1.0;
|
|
193
|
+
}
|
|
194
|
+
return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
|
|
195
|
+
}
|
|
196
|
+
function calculateRealisticPerezDaylight(altitude, maxAltitude) {
|
|
197
|
+
// Perez daylight model with turbidity and atmospheric effects
|
|
198
|
+
const altitudeDeg = (altitude * 180) / Math.PI;
|
|
199
|
+
const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
|
|
200
|
+
// CCT: Perez model with atmospheric turbidity
|
|
201
|
+
let cctFactor;
|
|
202
|
+
if (altitudeDeg < -6) {
|
|
203
|
+
cctFactor = 0;
|
|
204
|
+
}
|
|
205
|
+
else if (altitudeDeg < 0) {
|
|
206
|
+
// Strong blue during twilight (high turbidity effect)
|
|
207
|
+
cctFactor = 0.35 + ((altitudeDeg + 6) / 6) ** 2 * 0.25; // 0.35 to 0.6
|
|
208
|
+
}
|
|
209
|
+
else if (altitudeDeg < 25) {
|
|
210
|
+
// Warm golden hour with Perez atmospheric correction
|
|
211
|
+
const goldenHourEffect = Math.exp(-((altitudeDeg - 12.5) ** 2) / 100);
|
|
212
|
+
cctFactor = 0.6 - goldenHourEffect * 0.15 + (altitudeDeg / 25) * 0.3; // 0.45 to 0.75
|
|
213
|
+
}
|
|
214
|
+
else if (altitudeDeg < 50) {
|
|
215
|
+
// Transition to neutral white
|
|
216
|
+
cctFactor = 0.75 + ((altitudeDeg - 25) / 25) * 0.2; // 0.75 to 0.95
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
// Slight cooling at very high angles
|
|
220
|
+
cctFactor = Math.min(1.0, 0.95 + ((altitudeDeg - 50) / 40) * 0.05); // 0.95 to 1.0
|
|
221
|
+
}
|
|
222
|
+
// Intensity: Perez all-weather model with cloud cover assumption, scaled to 5-100%
|
|
223
|
+
let intensityFactor;
|
|
224
|
+
if (altitudeDeg < -6) {
|
|
225
|
+
intensityFactor = 0; // Will become 5% minimum
|
|
226
|
+
}
|
|
227
|
+
else if (altitudeDeg < 5) {
|
|
228
|
+
// Very low light near horizon
|
|
229
|
+
intensityFactor = (Math.max(0, altitudeDeg + 6) / 11) ** 4 * 0.15;
|
|
230
|
+
}
|
|
231
|
+
else if (altitudeDeg < 20) {
|
|
232
|
+
// Morning increase with atmospheric effects
|
|
233
|
+
const zenithAngle = Math.max(0.01, ((90 - altitudeDeg) * Math.PI) / 180);
|
|
234
|
+
const relativeLuminance = Math.exp(-0.2 / Math.max(0.01, Math.cos(zenithAngle)));
|
|
235
|
+
intensityFactor = Math.min(0.4, relativeLuminance * 0.35 + 0.05);
|
|
236
|
+
}
|
|
237
|
+
else if (altitudeDeg < Math.min(45, maxAltitudeDeg * 0.7)) {
|
|
238
|
+
// Strong increase to midday - use lower of 45° or 70% of max altitude
|
|
239
|
+
intensityFactor = 0.4 + ((altitudeDeg - 20) / (Math.min(45, maxAltitudeDeg * 0.7) - 20)) * 0.5; // 0.40 to 0.90
|
|
240
|
+
}
|
|
241
|
+
else if (altitudeDeg < maxAltitudeDeg * 0.8) {
|
|
242
|
+
// Peak at solar noon - reach 100% by 80% of max altitude
|
|
243
|
+
intensityFactor =
|
|
244
|
+
0.9 +
|
|
245
|
+
((altitudeDeg - Math.min(45, maxAltitudeDeg * 0.7)) /
|
|
246
|
+
(maxAltitudeDeg * 0.8 - Math.min(45, maxAltitudeDeg * 0.7))) *
|
|
247
|
+
0.1; // 0.90 to 1.0
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// Maintain peak at noon
|
|
251
|
+
intensityFactor = 1.0;
|
|
252
|
+
}
|
|
253
|
+
return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
|
|
254
|
+
}
|
|
255
|
+
function cieDaylightCurve(x) {
|
|
256
|
+
// CIE daylight locus approximation
|
|
257
|
+
// Maps time of day to CCT based on CIE standard illuminant D series
|
|
258
|
+
// Higher CCT (bluer) at midday, lower CCT (warmer) at sunrise/sunset
|
|
259
|
+
return Math.sin(Math.PI * x) ** 0.8;
|
|
260
|
+
}
|
|
261
|
+
function sunAltitudeCurve(x) {
|
|
262
|
+
// Simple sun altitude-based approximation
|
|
263
|
+
// CCT ≈ 2000 + 4500 × (1 - cos(altitude))
|
|
264
|
+
// This creates a more gradual transition than simple sine
|
|
265
|
+
return 1 - Math.cos(Math.PI * x);
|
|
266
|
+
}
|
|
267
|
+
function perezDaylightCurve(x) {
|
|
268
|
+
// Perez daylight model approximation
|
|
269
|
+
// Accounts for atmospheric scattering and turbidity
|
|
270
|
+
// More realistic transition with slightly flatter midday peak
|
|
271
|
+
const zenithAngle = Math.PI * (0.5 - Math.abs(x - 0.5));
|
|
272
|
+
const scattering = Math.exp(-2.0 * Math.max(0, Math.cos(zenithAngle)));
|
|
273
|
+
return Math.sin(Math.PI * x) ** 0.6 * (1 - 0.2 * scattering);
|
|
274
|
+
}
|
|
275
|
+
function isValidSunTimes(sunrise, sunset, solarNoon) {
|
|
276
|
+
return (sunrise instanceof Date &&
|
|
52
277
|
!Number.isNaN(sunrise.getTime()) &&
|
|
53
278
|
sunset instanceof Date &&
|
|
54
279
|
!Number.isNaN(sunset.getTime()) &&
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
280
|
+
solarNoon instanceof Date &&
|
|
281
|
+
!Number.isNaN(solarNoon.getTime()) &&
|
|
282
|
+
sunset.getTime() > sunrise.getTime() &&
|
|
283
|
+
solarNoon.getTime() > sunrise.getTime() &&
|
|
284
|
+
solarNoon.getTime() < sunset.getTime());
|
|
285
|
+
}
|
|
286
|
+
function calculateCCTCore(lat, lon, date, minK, maxK, minIntensity, maxIntensity, curveType) {
|
|
287
|
+
const curve = CURVE_FUNCTIONS[curveType];
|
|
288
|
+
const times = (0, suncalc_1.getTimes)(date, lat, lon);
|
|
289
|
+
const sunrise = times.sunrise;
|
|
290
|
+
const sunset = times.sunset;
|
|
291
|
+
const _solarNoon = times.solarNoon;
|
|
292
|
+
const nightEnd = times.nightEnd;
|
|
293
|
+
const night = times.night;
|
|
294
|
+
let f;
|
|
295
|
+
// Scientific curves (CIE, SUN_ALTITUDE, PEREZ) use altitude-based calculations
|
|
296
|
+
if (curveType === CurveType.CIE_DAYLIGHT ||
|
|
297
|
+
curveType === CurveType.SUN_ALTITUDE ||
|
|
298
|
+
curveType === CurveType.PEREZ_DAYLIGHT) {
|
|
299
|
+
f = 0; // Initialize f
|
|
300
|
+
if (isValidSunTimes(sunrise, sunset, _solarNoon)) {
|
|
301
|
+
const [t, _noon] = [date.getTime(), _solarNoon.getTime()];
|
|
302
|
+
// For scientific curves, handle cases where nightEnd/night might not be available
|
|
303
|
+
let nightEndTime;
|
|
304
|
+
let nightStartTime;
|
|
305
|
+
if (nightEnd instanceof Date &&
|
|
306
|
+
!Number.isNaN(nightEnd.getTime()) &&
|
|
307
|
+
night instanceof Date &&
|
|
308
|
+
!Number.isNaN(night.getTime())) {
|
|
309
|
+
// Normal case: both nightEnd and night are available
|
|
310
|
+
nightEndTime = nightEnd.getTime();
|
|
311
|
+
nightStartTime = night.getTime();
|
|
312
|
+
if (t <= nightEndTime || t >= nightStartTime) {
|
|
313
|
+
return { cct: minK, intensity: minIntensity };
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// Edge case: no proper night (e.g., summer in high latitudes)
|
|
318
|
+
// Use sunrise/sunset as boundaries for scientific curves
|
|
319
|
+
nightEndTime = sunrise.getTime() - 30 * 60 * 1000; // 30 min before sunrise
|
|
320
|
+
nightStartTime = sunset.getTime() + 30 * 60 * 1000; // 30 min after sunset
|
|
321
|
+
if (t <= nightEndTime || t >= nightStartTime) {
|
|
322
|
+
return { cct: minK, intensity: minIntensity };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
const pos = (0, suncalc_1.getPosition)(date, lat, lon);
|
|
326
|
+
const altitude = pos.altitude;
|
|
327
|
+
// Get maximum altitude for normalization (at solar noon on this day)
|
|
328
|
+
const noonPos = (0, suncalc_1.getPosition)(_solarNoon, lat, lon);
|
|
329
|
+
const maxAltitude = noonPos.altitude;
|
|
330
|
+
if (curveType === CurveType.SUN_ALTITUDE) {
|
|
331
|
+
// Realistic sun altitude-based calculations
|
|
332
|
+
const [cctFactor, intensityFactor] = calculateRealisticSunAltitude(altitude, maxAltitude);
|
|
333
|
+
const cct = minK + (maxK - minK) * cctFactor;
|
|
334
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
|
|
335
|
+
return {
|
|
336
|
+
cct: Math.round(cct),
|
|
337
|
+
intensity: Math.round(intensity),
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
else if (curveType === CurveType.CIE_DAYLIGHT) {
|
|
341
|
+
// Realistic CIE daylight locus calculations
|
|
342
|
+
const [cctFactor, intensityFactor] = calculateRealisticCIEDaylight(altitude, maxAltitude);
|
|
343
|
+
const cct = minK + (maxK - minK) * cctFactor;
|
|
344
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
|
|
345
|
+
return {
|
|
346
|
+
cct: Math.round(cct),
|
|
347
|
+
intensity: Math.round(intensity),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
else if (curveType === CurveType.PEREZ_DAYLIGHT) {
|
|
351
|
+
// Realistic Perez daylight model calculations
|
|
352
|
+
const [cctFactor, intensityFactor] = calculateRealisticPerezDaylight(altitude, maxAltitude);
|
|
353
|
+
const cct = minK + (maxK - minK) * cctFactor;
|
|
354
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
|
|
355
|
+
return {
|
|
356
|
+
cct: Math.round(cct),
|
|
357
|
+
intensity: Math.round(intensity),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
// Fallback for scientific curves when sun times are invalid
|
|
363
|
+
f = 0;
|
|
364
|
+
const cct = minK + (maxK - minK) * f;
|
|
365
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * f;
|
|
366
|
+
return {
|
|
367
|
+
cct: Math.round(cct),
|
|
368
|
+
intensity: Math.round(intensity),
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Empirical curves (HANN, WIDER_MIDDLE) use time-based calculations with nightEnd/night like scientific curves
|
|
373
|
+
if (isValidSunTimes(sunrise, sunset, _solarNoon) &&
|
|
374
|
+
nightEnd instanceof Date &&
|
|
375
|
+
!Number.isNaN(nightEnd.getTime()) &&
|
|
376
|
+
night instanceof Date &&
|
|
377
|
+
!Number.isNaN(night.getTime())) {
|
|
378
|
+
const [t, noon, nightStartTime, nightEndTime] = [
|
|
379
|
+
date.getTime(),
|
|
380
|
+
_solarNoon.getTime(),
|
|
381
|
+
night.getTime(),
|
|
382
|
+
nightEnd.getTime(),
|
|
383
|
+
];
|
|
384
|
+
if (t <= nightEndTime || t >= nightStartTime) {
|
|
385
|
+
return { cct: minK, intensity: minIntensity };
|
|
61
386
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
387
|
+
let x;
|
|
388
|
+
if (t <= noon) {
|
|
389
|
+
// Morning: map [nightEnd, solarNoon] to [0, 0.5]
|
|
390
|
+
x = ((t - nightEndTime) / (noon - nightEndTime)) * 0.5;
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
// Afternoon: map [solarNoon, night] to [0.5, 1]
|
|
394
|
+
x = 0.5 + ((t - noon) / (nightStartTime - noon)) * 0.5;
|
|
395
|
+
}
|
|
396
|
+
f = curve(x);
|
|
397
|
+
const cct = minK + (maxK - minK) * f;
|
|
398
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * f;
|
|
68
399
|
return {
|
|
69
400
|
cct: Math.round(cct),
|
|
70
401
|
intensity: Math.round(intensity),
|
|
71
402
|
};
|
|
72
403
|
}
|
|
73
|
-
// Fallback
|
|
404
|
+
// Fallback for empirical curves when night times are not available
|
|
74
405
|
try {
|
|
75
406
|
const pos = (0, suncalc_1.getPosition)(date, lat, lon);
|
|
76
|
-
const altitude = pos.altitude;
|
|
407
|
+
const altitude = pos.altitude;
|
|
77
408
|
if (altitude <= 0)
|
|
78
|
-
return { cct:
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
const intensity = MIN_INTENSITY + (MAX_INTENSITY - MIN_INTENSITY) * Math.min(1, f);
|
|
409
|
+
return { cct: minK, intensity: minIntensity };
|
|
410
|
+
f = Math.max(0, Math.sin(altitude));
|
|
411
|
+
const cct = minK + (maxK - minK) * f;
|
|
412
|
+
const intensity = minIntensity + (maxIntensity - minIntensity) * f;
|
|
83
413
|
return {
|
|
84
414
|
cct: Math.round(cct),
|
|
85
415
|
intensity: Math.round(intensity),
|
|
86
416
|
};
|
|
87
417
|
}
|
|
88
|
-
catch (
|
|
89
|
-
|
|
90
|
-
return { cct: MIN_K, intensity: MIN_INTENSITY };
|
|
418
|
+
catch (_error) {
|
|
419
|
+
return { cct: minK, intensity: minIntensity };
|
|
91
420
|
}
|
|
92
421
|
}
|
|
422
|
+
function calculateCCT(lat, lon, date = new Date(), opts, curveType = CurveType.HANN) {
|
|
423
|
+
const clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));
|
|
424
|
+
const cctMinK = clamp(opts?.cctMinK ?? constants_1.CCT_DEFAULTS.cctMinK, 1000, 20000);
|
|
425
|
+
const cctMaxK = clamp(opts?.cctMaxK ?? constants_1.CCT_DEFAULTS.cctMaxK, 1000, 20000);
|
|
426
|
+
const minK = Math.min(cctMinK, cctMaxK);
|
|
427
|
+
const maxK = Math.max(cctMinK, cctMaxK);
|
|
428
|
+
const intensityMinPct = clamp(opts?.intensityMinPct ?? constants_1.CCT_DEFAULTS.intensityMinPct, 0, 100);
|
|
429
|
+
const intensityMaxPct = clamp(opts?.intensityMaxPct ?? constants_1.CCT_DEFAULTS.intensityMaxPct, 0, 100);
|
|
430
|
+
const minPct = Math.min(intensityMinPct, intensityMaxPct);
|
|
431
|
+
const maxPct = Math.max(intensityMinPct, intensityMaxPct);
|
|
432
|
+
const minIntensity = Math.round(minPct * 10);
|
|
433
|
+
const maxIntensity = Math.round(maxPct * 10);
|
|
434
|
+
return calculateCCTCore(lat, lon, date, minK, maxK, minIntensity, maxIntensity, curveType);
|
|
435
|
+
}
|
|
93
436
|
//# sourceMappingURL=cctUtil.js.map
|
package/dist/cctUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cctUtil.js","sourceRoot":"","sources":["../src/cctUtil.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cctUtil.js","sourceRoot":"","sources":["../src/cctUtil.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,eAAe,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4D9B,iBAAe,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA2H5G;AAGD,iBAAS,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAClE,GAAG,MAAM,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAMnC;AAGD,iBAAS,UAAU,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBnF;AA8JD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
|