mingpan 0.1.1
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 +201 -0
- package/README.md +118 -0
- package/dist/core/bazi/BaziCore.d.ts +112 -0
- package/dist/core/bazi/BaziCore.d.ts.map +1 -0
- package/dist/core/bazi/BaziCore.js +606 -0
- package/dist/core/bazi/BaziCore.js.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.js +452 -0
- package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
- package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
- package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
- package/dist/core/bazi/TrueSolarTime.js +210 -0
- package/dist/core/bazi/TrueSolarTime.js.map +1 -0
- package/dist/core/bazi/ephemerisData.d.ts +10 -0
- package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
- package/dist/core/bazi/ephemerisData.js +88 -0
- package/dist/core/bazi/ephemerisData.js.map +1 -0
- package/dist/core/bazi/index.d.ts +8 -0
- package/dist/core/bazi/index.d.ts.map +1 -0
- package/dist/core/bazi/index.js +30 -0
- package/dist/core/bazi/index.js.map +1 -0
- package/dist/core/bazi/types.d.ts +116 -0
- package/dist/core/bazi/types.d.ts.map +1 -0
- package/dist/core/bazi/types.js +7 -0
- package/dist/core/bazi/types.js.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.js +111 -0
- package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.js +276 -0
- package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
- package/dist/core/calendar/calendar.d.ts +81 -0
- package/dist/core/calendar/calendar.d.ts.map +1 -0
- package/dist/core/calendar/calendar.js +223 -0
- package/dist/core/calendar/calendar.js.map +1 -0
- package/dist/core/calendar/constants.d.ts +151 -0
- package/dist/core/calendar/constants.d.ts.map +1 -0
- package/dist/core/calendar/constants.js +97 -0
- package/dist/core/calendar/constants.js.map +1 -0
- package/dist/core/calendar/julian.d.ts +54 -0
- package/dist/core/calendar/julian.d.ts.map +1 -0
- package/dist/core/calendar/julian.js +142 -0
- package/dist/core/calendar/julian.js.map +1 -0
- package/dist/core/calendar/lunarCalendar.d.ts +79 -0
- package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
- package/dist/core/calendar/lunarCalendar.js +164 -0
- package/dist/core/calendar/lunarCalendar.js.map +1 -0
- package/dist/core/calendar/solarTerms.d.ts +105 -0
- package/dist/core/calendar/solarTerms.d.ts.map +1 -0
- package/dist/core/calendar/solarTerms.js +487 -0
- package/dist/core/calendar/solarTerms.js.map +1 -0
- package/dist/core/constants/bazi.d.ts +138 -0
- package/dist/core/constants/bazi.d.ts.map +1 -0
- package/dist/core/constants/bazi.js +332 -0
- package/dist/core/constants/bazi.js.map +1 -0
- package/dist/core/constants/index.d.ts +6 -0
- package/dist/core/constants/index.d.ts.map +1 -0
- package/dist/core/constants/index.js +37 -0
- package/dist/core/constants/index.js.map +1 -0
- package/dist/core/constants/positions.d.ts +27 -0
- package/dist/core/constants/positions.d.ts.map +1 -0
- package/dist/core/constants/positions.js +39 -0
- package/dist/core/constants/positions.js.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.js +278 -0
- package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
- package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
- package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
- package/dist/core/ziwei/IztroAdapter.js +314 -0
- package/dist/core/ziwei/IztroAdapter.js.map +1 -0
- package/dist/core/ziwei/MutagenCore.d.ts +81 -0
- package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
- package/dist/core/ziwei/MutagenCore.js +246 -0
- package/dist/core/ziwei/MutagenCore.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1101 -0
- package/dist/index.js.map +1 -0
- package/dist/output/fortuneTextRenderer.d.ts +63 -0
- package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
- package/dist/output/fortuneTextRenderer.js +384 -0
- package/dist/output/fortuneTextRenderer.js.map +1 -0
- package/dist/output/listTextRenderer.d.ts +298 -0
- package/dist/output/listTextRenderer.d.ts.map +1 -0
- package/dist/output/listTextRenderer.js +942 -0
- package/dist/output/listTextRenderer.js.map +1 -0
- package/dist/services/bazi/BaziService.d.ts +83 -0
- package/dist/services/bazi/BaziService.d.ts.map +1 -0
- package/dist/services/bazi/BaziService.js +635 -0
- package/dist/services/bazi/BaziService.js.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
- package/dist/services/bazi/index.d.ts +21 -0
- package/dist/services/bazi/index.d.ts.map +1 -0
- package/dist/services/bazi/index.js +83 -0
- package/dist/services/bazi/index.js.map +1 -0
- package/dist/services/bazi/types.d.ts +597 -0
- package/dist/services/bazi/types.d.ts.map +1 -0
- package/dist/services/bazi/types.js +123 -0
- package/dist/services/bazi/types.js.map +1 -0
- package/dist/services/ziwei/ZiweiService.d.ts +86 -0
- package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
- package/dist/services/ziwei/ZiweiService.js +343 -0
- package/dist/services/ziwei/ZiweiService.js.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
- package/dist/services/ziwei/index.d.ts +15 -0
- package/dist/services/ziwei/index.d.ts.map +1 -0
- package/dist/services/ziwei/index.js +48 -0
- package/dist/services/ziwei/index.js.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
- package/dist/services/ziwei/types.d.ts +185 -0
- package/dist/services/ziwei/types.d.ts.map +1 -0
- package/dist/services/ziwei/types.js +54 -0
- package/dist/services/ziwei/types.js.map +1 -0
- package/dist/shared/logger.d.ts +51 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +136 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/types.d.ts +91 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +7 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/utils/ageCalculator.d.ts +30 -0
- package/dist/utils/ageCalculator.d.ts.map +1 -0
- package/dist/utils/ageCalculator.js +51 -0
- package/dist/utils/ageCalculator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solar Term Calculator
|
|
3
|
+
* Based on astronomical calculations from taro-bazi
|
|
4
|
+
* Provides accurate solar term timing for BaZi calculations
|
|
5
|
+
*/
|
|
6
|
+
export declare const SOLAR_TERMS: string[];
|
|
7
|
+
export declare const SOLAR_TERM_TO_ZHI: {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const SOLAR_TERM_TO_MONTH: {
|
|
11
|
+
[key: string]: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Julian Day calculation
|
|
15
|
+
*/
|
|
16
|
+
export declare function JD(y: number, m: number, d: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Julian Day to Date
|
|
19
|
+
*/
|
|
20
|
+
export declare function DD(jd: number): any;
|
|
21
|
+
export interface SolarTermInfo {
|
|
22
|
+
[solarTerm: string]: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Calculate solar terms for a given year and month
|
|
26
|
+
*/
|
|
27
|
+
export declare function getSolarTermInfo(year: number, month: number): SolarTermInfo;
|
|
28
|
+
/**
|
|
29
|
+
* Calculate current solar term for a given date/time
|
|
30
|
+
*/
|
|
31
|
+
export declare function calculateSolarTerm(dateTimeStr: string, solarTermInfo: SolarTermInfo): {
|
|
32
|
+
solarTerm: string;
|
|
33
|
+
isCurrentMonthSolarTerm: boolean;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Get adjacent solar term times
|
|
37
|
+
*/
|
|
38
|
+
export declare function getAdjacentSolarTermTime(solarTermInfo: SolarTermInfo, solarTerm: string): {
|
|
39
|
+
previous: string;
|
|
40
|
+
next: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Calculate True Solar Time
|
|
44
|
+
*/
|
|
45
|
+
export declare function getTrueSolarTime(year: number, month: number, day: number, timeStr: string, longitude: number): string;
|
|
46
|
+
//# sourceMappingURL=SolarTermCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolarTermCalculator.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/SolarTermCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,eAAO,MAAM,WAAW,UAKvB,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAStD,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAaxD,CAAC;AAmKF;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CA+BlC;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CA+D3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CA+BA;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAiBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMrH"}
|
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solar Term Calculator
|
|
4
|
+
* Based on astronomical calculations from taro-bazi
|
|
5
|
+
* Provides accurate solar term timing for BaZi calculations
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SOLAR_TERM_TO_MONTH = exports.SOLAR_TERM_TO_ZHI = exports.SOLAR_TERMS = void 0;
|
|
9
|
+
exports.JD = JD;
|
|
10
|
+
exports.DD = DD;
|
|
11
|
+
exports.getSolarTermInfo = getSolarTermInfo;
|
|
12
|
+
exports.calculateSolarTerm = calculateSolarTerm;
|
|
13
|
+
exports.getAdjacentSolarTermTime = getAdjacentSolarTermTime;
|
|
14
|
+
exports.getTrueSolarTime = getTrueSolarTime;
|
|
15
|
+
const ephemerisData_1 = require("./ephemerisData");
|
|
16
|
+
const rad = (180 * 3600) / Math.PI;
|
|
17
|
+
const pi2 = Math.PI * 2;
|
|
18
|
+
const J2000 = 2451545;
|
|
19
|
+
const radd = 180 / Math.PI;
|
|
20
|
+
// Solar terms in order
|
|
21
|
+
exports.SOLAR_TERMS = [
|
|
22
|
+
'冬至', '小寒', '大寒', '立春', '雨水', '惊蛰',
|
|
23
|
+
'春分', '清明', '谷雨', '立夏', '小满', '芒种',
|
|
24
|
+
'夏至', '小暑', '大暑', '立秋', '处暑', '白露',
|
|
25
|
+
'秋分', '寒露', '霜降', '立冬', '小雪', '大雪'
|
|
26
|
+
];
|
|
27
|
+
// Solar term to month zhi mapping
|
|
28
|
+
// Note: Only Jie (节) solar terms determine month boundaries
|
|
29
|
+
exports.SOLAR_TERM_TO_ZHI = {
|
|
30
|
+
// Jie (month-starting) solar terms
|
|
31
|
+
'立春': '寅', '惊蛰': '卯', '清明': '辰', '立夏': '巳',
|
|
32
|
+
'芒种': '午', '小暑': '未', '立秋': '申', '白露': '酉',
|
|
33
|
+
'寒露': '戌', '立冬': '亥', '大雪': '子', '小寒': '丑',
|
|
34
|
+
// Qi (mid-month) solar terms - included for compatibility
|
|
35
|
+
'雨水': '寅', '春分': '卯', '谷雨': '辰', '小满': '巳',
|
|
36
|
+
'夏至': '午', '大暑': '未', '处暑': '申', '秋分': '酉',
|
|
37
|
+
'霜降': '戌', '小雪': '亥', '冬至': '子', '大寒': '丑'
|
|
38
|
+
};
|
|
39
|
+
// Solar term to gregorian month mapping
|
|
40
|
+
exports.SOLAR_TERM_TO_MONTH = {
|
|
41
|
+
'立春': 2, '雨水': 2,
|
|
42
|
+
'惊蛰': 3, '春分': 3,
|
|
43
|
+
'清明': 4, '谷雨': 4,
|
|
44
|
+
'立夏': 5, '小满': 5,
|
|
45
|
+
'芒种': 6, '夏至': 6,
|
|
46
|
+
'小暑': 7, '大暑': 7,
|
|
47
|
+
'立秋': 8, '处暑': 8,
|
|
48
|
+
'白露': 9, '秋分': 9,
|
|
49
|
+
'寒露': 10, '霜降': 10,
|
|
50
|
+
'立冬': 11, '小雪': 11,
|
|
51
|
+
'大雪': 12, '冬至': 12,
|
|
52
|
+
'小寒': 1, '大寒': 1
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Convert Julian Day to time string
|
|
56
|
+
*/
|
|
57
|
+
function jdToTimeStr(jd) {
|
|
58
|
+
let h, m, s;
|
|
59
|
+
jd += 0.5;
|
|
60
|
+
jd = jd - Math.floor(jd);
|
|
61
|
+
s = Math.floor(jd * 86400 + 0.5);
|
|
62
|
+
h = Math.floor(s / 3600);
|
|
63
|
+
s -= h * 3600;
|
|
64
|
+
m = Math.floor(s / 60);
|
|
65
|
+
s -= m * 60;
|
|
66
|
+
h = '0' + h;
|
|
67
|
+
m = '0' + m;
|
|
68
|
+
s = '0' + s;
|
|
69
|
+
return h.substr(h.length - 2, 2) + ':' + m.substr(m.length - 2, 2) + ':' + s.substr(s.length - 2, 2);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calculate accurate solar term time
|
|
73
|
+
*/
|
|
74
|
+
function qiAccurate(W) {
|
|
75
|
+
const t = S_aLon_t(W) * 36525;
|
|
76
|
+
return t - dt_T(t) + 8 / 24;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Calculate time from solar longitude
|
|
80
|
+
*/
|
|
81
|
+
function S_aLon_t(W) {
|
|
82
|
+
let t, v = 628.3319653318;
|
|
83
|
+
t = (W - 1.75347 - Math.PI) / v;
|
|
84
|
+
v = E_v(t);
|
|
85
|
+
t += (W - S_aLon(t, 10)) / v;
|
|
86
|
+
v = E_v(t);
|
|
87
|
+
t += (W - S_aLon(t, -1)) / v;
|
|
88
|
+
return t;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Earth velocity
|
|
92
|
+
*/
|
|
93
|
+
function E_v(t) {
|
|
94
|
+
const f = 628.307585 * t;
|
|
95
|
+
return 628.332 + 21 * Math.sin(1.527 + f) + 0.44 * Math.sin(1.48 + f * 2) +
|
|
96
|
+
0.129 * Math.sin(5.82 + f) * t + 0.00055 * Math.sin(4.21 + f) * t * t;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Solar apparent longitude
|
|
100
|
+
*/
|
|
101
|
+
function S_aLon(t, n) {
|
|
102
|
+
return E_Lon(t, n) + nutationLon2(t) + gxc_sunLon(t) + Math.PI;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Earth longitude
|
|
106
|
+
*/
|
|
107
|
+
function E_Lon(t, n) {
|
|
108
|
+
return XL0_calc(0, 0, t, n);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Ephemeris calculation
|
|
112
|
+
*/
|
|
113
|
+
function XL0_calc(xt, zn, t, n) {
|
|
114
|
+
t /= 10;
|
|
115
|
+
let i, j, v = 0, tn = 1, c;
|
|
116
|
+
const F = ephemerisData_1.XL0[xt];
|
|
117
|
+
let n1, n2, N;
|
|
118
|
+
const pn = zn * 6 + 1;
|
|
119
|
+
const N0 = F[pn + 1] - F[pn];
|
|
120
|
+
let n0;
|
|
121
|
+
for (i = 0; i < 6; i++, tn *= t) {
|
|
122
|
+
n1 = F[pn + i];
|
|
123
|
+
n2 = F[pn + 1 + i];
|
|
124
|
+
n0 = n2 - n1;
|
|
125
|
+
if (!n0)
|
|
126
|
+
continue;
|
|
127
|
+
if (n < 0)
|
|
128
|
+
N = n2;
|
|
129
|
+
else {
|
|
130
|
+
N = Math.floor((3 * n * n0) / N0 + 0.5) + n1;
|
|
131
|
+
if (i)
|
|
132
|
+
N += 3;
|
|
133
|
+
if (N > n2)
|
|
134
|
+
N = n2;
|
|
135
|
+
}
|
|
136
|
+
for (j = n1, c = 0; j < N; j += 3)
|
|
137
|
+
c += F[j] * Math.cos(F[j + 1] + t * F[j + 2]);
|
|
138
|
+
v += c * tn;
|
|
139
|
+
}
|
|
140
|
+
v /= F[0];
|
|
141
|
+
if (xt == 0) {
|
|
142
|
+
const t2 = t * t;
|
|
143
|
+
const t3 = t2 * t;
|
|
144
|
+
if (zn == 0)
|
|
145
|
+
v += (-0.0728 - 2.7702 * t - 1.1019 * t2 - 0.0996 * t3) / rad;
|
|
146
|
+
if (zn == 1)
|
|
147
|
+
v += (+0.0 + 0.0004 * t + 0.0004 * t2 - 0.0026 * t3) / rad;
|
|
148
|
+
if (zn == 2)
|
|
149
|
+
v += (-0.002 + 0.0044 * t + 0.0213 * t2 - 0.025 * t3) / 1000000;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const dv = ephemerisData_1.XL0_xzb[(xt - 1) * 3 + zn];
|
|
153
|
+
if (zn == 0)
|
|
154
|
+
v += (-3 * t) / rad;
|
|
155
|
+
if (zn == 2)
|
|
156
|
+
v += dv / 1000000;
|
|
157
|
+
else
|
|
158
|
+
v += dv / rad;
|
|
159
|
+
}
|
|
160
|
+
return v;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Nutation in longitude
|
|
164
|
+
*/
|
|
165
|
+
function nutationLon2(t) {
|
|
166
|
+
let i, a, dL = 0;
|
|
167
|
+
const t2 = t * t;
|
|
168
|
+
const B = ephemerisData_1.nutB;
|
|
169
|
+
for (i = 0; i < B.length; i += 5) {
|
|
170
|
+
if (i == 0)
|
|
171
|
+
a = -1.742 * t;
|
|
172
|
+
else
|
|
173
|
+
a = 0;
|
|
174
|
+
dL += (B[i + 3] + a) * Math.sin(B[i] + B[i + 1] * t + B[i + 2] * t2);
|
|
175
|
+
}
|
|
176
|
+
return dL / 100 / rad;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Solar aberration
|
|
180
|
+
*/
|
|
181
|
+
function gxc_sunLon(t) {
|
|
182
|
+
const v = -0.043126 + 628.301955 * t - 0.000002732 * t * t;
|
|
183
|
+
const e = 0.016708634 - 0.000042037 * t - 0.0000001267 * t * t;
|
|
184
|
+
return (-20.49552 * (1 + e * Math.cos(v))) / rad;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Delta T calculation
|
|
188
|
+
*/
|
|
189
|
+
function dt_T(t) {
|
|
190
|
+
return dt_calc(t / 365.2425 + 2000) / 86400.0;
|
|
191
|
+
}
|
|
192
|
+
function dt_calc(y) {
|
|
193
|
+
const y0 = ephemerisData_1.dt_at[ephemerisData_1.dt_at.length - 2];
|
|
194
|
+
const t0 = ephemerisData_1.dt_at[ephemerisData_1.dt_at.length - 1];
|
|
195
|
+
if (y >= y0) {
|
|
196
|
+
const jsd = 31;
|
|
197
|
+
if (y > y0 + 100)
|
|
198
|
+
return dt_ext(y, jsd);
|
|
199
|
+
const v = dt_ext(y, jsd);
|
|
200
|
+
const dv = dt_ext(y0, jsd) - t0;
|
|
201
|
+
return v - (dv * (y0 + 100 - y)) / 100;
|
|
202
|
+
}
|
|
203
|
+
let i;
|
|
204
|
+
const d = ephemerisData_1.dt_at;
|
|
205
|
+
for (i = 0; i < d.length; i += 5)
|
|
206
|
+
if (y < d[i + 5])
|
|
207
|
+
break;
|
|
208
|
+
const t1 = ((y - d[i]) / (d[i + 5] - d[i])) * 10;
|
|
209
|
+
const t2 = t1 * t1;
|
|
210
|
+
const t3 = t2 * t1;
|
|
211
|
+
return d[i + 1] + d[i + 2] * t1 + d[i + 3] * t2 + d[i + 4] * t3;
|
|
212
|
+
}
|
|
213
|
+
function dt_ext(y, jsd) {
|
|
214
|
+
const dy = (y - 1820) / 100;
|
|
215
|
+
return -20 + jsd * dy * dy;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Julian Day calculation
|
|
219
|
+
*/
|
|
220
|
+
function JD(y, m, d) {
|
|
221
|
+
let n = 0, G = 0;
|
|
222
|
+
if (y * 372 + m * 31 + Math.floor(d) >= 588829)
|
|
223
|
+
G = 1;
|
|
224
|
+
if (m <= 2) {
|
|
225
|
+
m += 12;
|
|
226
|
+
y--;
|
|
227
|
+
}
|
|
228
|
+
if (G) {
|
|
229
|
+
n = Math.floor(y / 100);
|
|
230
|
+
n = 2 - n + Math.floor(n / 4);
|
|
231
|
+
}
|
|
232
|
+
return Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + n - 1524.5;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Julian Day to Date
|
|
236
|
+
*/
|
|
237
|
+
function DD(jd) {
|
|
238
|
+
const r = {};
|
|
239
|
+
let D = Math.floor(jd + 0.5);
|
|
240
|
+
let F = jd + 0.5 - D;
|
|
241
|
+
let c;
|
|
242
|
+
if (D >= 2299161) {
|
|
243
|
+
c = Math.floor((D - 1867216.25) / 36524.25);
|
|
244
|
+
D += 1 + c - Math.floor(c / 4);
|
|
245
|
+
}
|
|
246
|
+
D += 1524;
|
|
247
|
+
r.Y = Math.floor((D - 122.1) / 365.25);
|
|
248
|
+
D -= Math.floor(365.25 * r.Y);
|
|
249
|
+
r.M = Math.floor(D / 30.601);
|
|
250
|
+
D -= Math.floor(30.601 * r.M);
|
|
251
|
+
r.D = D;
|
|
252
|
+
if (r.M > 13) {
|
|
253
|
+
r.M -= 13;
|
|
254
|
+
r.Y -= 4715;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
r.M -= 1;
|
|
258
|
+
r.Y -= 4716;
|
|
259
|
+
}
|
|
260
|
+
F *= 24;
|
|
261
|
+
r.h = Math.floor(F);
|
|
262
|
+
F -= r.h;
|
|
263
|
+
F *= 60;
|
|
264
|
+
r.m = Math.floor(F);
|
|
265
|
+
F -= r.m;
|
|
266
|
+
F *= 60;
|
|
267
|
+
r.s = F;
|
|
268
|
+
return r;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Calculate solar terms for a given year and month
|
|
272
|
+
*/
|
|
273
|
+
function getSolarTermInfo(year, month) {
|
|
274
|
+
let w, d, D, xn;
|
|
275
|
+
const obj = {};
|
|
276
|
+
const jd = {
|
|
277
|
+
Y: year,
|
|
278
|
+
M: month,
|
|
279
|
+
D: 1,
|
|
280
|
+
h: 12,
|
|
281
|
+
m: 0,
|
|
282
|
+
s: 0.1
|
|
283
|
+
};
|
|
284
|
+
const Bd0 = Math.floor(JD(jd.Y, jd.M, jd.D + (jd.s / 60 + jd.m) / 60 + jd.h / 24)) - J2000;
|
|
285
|
+
jd.M++;
|
|
286
|
+
if (jd.M > 12) {
|
|
287
|
+
jd.Y++;
|
|
288
|
+
jd.M = 1;
|
|
289
|
+
}
|
|
290
|
+
const Bdn = Math.floor(JD(jd.Y, jd.M, jd.D + (jd.s / 60 + jd.m) / 60 + jd.h / 24)) - J2000 - Bd0;
|
|
291
|
+
const jd2 = Bd0 + dt_T(Bd0) - 8 / 24;
|
|
292
|
+
const lun = [];
|
|
293
|
+
for (let i = 0; i < Bdn; i++) {
|
|
294
|
+
const d0 = Bd0 + i;
|
|
295
|
+
const r = DD(d0 + J2000);
|
|
296
|
+
lun.push(r);
|
|
297
|
+
}
|
|
298
|
+
// Debug: Ensure lun array is properly populated
|
|
299
|
+
if (lun.length === 0) {
|
|
300
|
+
// Fill with default values if empty
|
|
301
|
+
for (let i = 1; i <= 31; i++) {
|
|
302
|
+
lun.push({ D: i });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
w = S_aLon(jd2 / 36525, 3);
|
|
306
|
+
w = (Math.floor(((w - 0.13) / pi2) * 24) * pi2) / 24;
|
|
307
|
+
do {
|
|
308
|
+
d = qiAccurate(w);
|
|
309
|
+
D = Math.floor(d + 0.5);
|
|
310
|
+
xn = Math.floor((w / pi2) * 24 + 24000006.01) % 24;
|
|
311
|
+
w += pi2 / 24;
|
|
312
|
+
if (D >= Bd0 + Bdn)
|
|
313
|
+
break;
|
|
314
|
+
if (D < Bd0)
|
|
315
|
+
continue;
|
|
316
|
+
const solarTerm = exports.SOLAR_TERMS[xn];
|
|
317
|
+
const index = D - Bd0;
|
|
318
|
+
// Ensure we have a valid object at the index
|
|
319
|
+
let ob = lun[index];
|
|
320
|
+
if (!ob || !ob.D) {
|
|
321
|
+
// Fallback: calculate day from Julian day
|
|
322
|
+
const fallbackDate = DD(D + J2000);
|
|
323
|
+
ob = fallbackDate || { D: 1 };
|
|
324
|
+
}
|
|
325
|
+
const time = jdToTimeStr(d);
|
|
326
|
+
obj[solarTerm] = `${year}-${month}-${ob.D} ${time}`;
|
|
327
|
+
} while (D + 12 < Bd0 + Bdn);
|
|
328
|
+
return obj;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Calculate current solar term for a given date/time
|
|
332
|
+
*/
|
|
333
|
+
function calculateSolarTerm(dateTimeStr, solarTermInfo) {
|
|
334
|
+
const currentDay = new Date(dateTimeStr.replace(/未知/g, '00'));
|
|
335
|
+
const solarTermArray = Object.keys(solarTermInfo);
|
|
336
|
+
// Handle case with 3 solar terms in month
|
|
337
|
+
if (solarTermArray.length === 3) {
|
|
338
|
+
if (currentDay > new Date(solarTermInfo[solarTermArray[2]])) {
|
|
339
|
+
return {
|
|
340
|
+
solarTerm: solarTermArray[2],
|
|
341
|
+
isCurrentMonthSolarTerm: true
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (currentDay > new Date(solarTermInfo[solarTermArray[1]])) {
|
|
346
|
+
return {
|
|
347
|
+
solarTerm: solarTermArray[1],
|
|
348
|
+
isCurrentMonthSolarTerm: true
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
else if (currentDay > new Date(solarTermInfo[solarTermArray[0]])) {
|
|
352
|
+
return {
|
|
353
|
+
solarTerm: solarTermArray[0],
|
|
354
|
+
isCurrentMonthSolarTerm: true
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
const index = exports.SOLAR_TERMS.findIndex(item => item === solarTermArray[0]);
|
|
359
|
+
return {
|
|
360
|
+
solarTerm: exports.SOLAR_TERMS[(index - 1 + 24) % 24],
|
|
361
|
+
isCurrentMonthSolarTerm: false
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Get adjacent solar term times
|
|
367
|
+
*/
|
|
368
|
+
function getAdjacentSolarTermTime(solarTermInfo, solarTerm) {
|
|
369
|
+
const index = exports.SOLAR_TERMS.findIndex(item => item === solarTerm);
|
|
370
|
+
// Current is Qi (even index)
|
|
371
|
+
if (index % 2 === 0) {
|
|
372
|
+
return {
|
|
373
|
+
previous: solarTermInfo[exports.SOLAR_TERMS[(index - 1 + 24) % 24]] || '',
|
|
374
|
+
next: solarTermInfo[exports.SOLAR_TERMS[(index + 1) % 24]] || ''
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
// Current is Jie (odd index)
|
|
378
|
+
else {
|
|
379
|
+
return {
|
|
380
|
+
previous: solarTermInfo[solarTerm] || '',
|
|
381
|
+
next: solarTermInfo[exports.SOLAR_TERMS[(index + 2) % 24]] || ''
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Calculate True Solar Time
|
|
387
|
+
*/
|
|
388
|
+
function getTrueSolarTime(year, month, day, timeStr, longitude) {
|
|
389
|
+
const curTZ = -8; // China timezone
|
|
390
|
+
const t = timeStr2hour(timeStr);
|
|
391
|
+
const jd = JD(year, month, day + t / 24);
|
|
392
|
+
const bz_zty = mingLiBaZi(jd + curTZ / 24 - J2000, longitude / radd);
|
|
393
|
+
return bz_zty;
|
|
394
|
+
}
|
|
395
|
+
function timeStr2hour(s) {
|
|
396
|
+
let a, b, c;
|
|
397
|
+
s = String(s).replace(/[^0-9:\.]/g, '');
|
|
398
|
+
const parts = s.split(':');
|
|
399
|
+
if (parts.length == 1) {
|
|
400
|
+
a = parseInt(s.substr(0, 2)) || 0;
|
|
401
|
+
b = parseInt(s.substr(2, 2)) || 0;
|
|
402
|
+
c = parseInt(s.substr(4, 2)) || 0;
|
|
403
|
+
}
|
|
404
|
+
else if (parts.length == 2) {
|
|
405
|
+
a = parseInt(parts[0]) || 0;
|
|
406
|
+
b = parseInt(parts[1]) || 0;
|
|
407
|
+
c = 0;
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
a = parseInt(parts[0]) || 0;
|
|
411
|
+
b = parseInt(parts[1]) || 0;
|
|
412
|
+
c = parseInt(parts[2]) || 0;
|
|
413
|
+
}
|
|
414
|
+
return a + b / 60 + c / 3600;
|
|
415
|
+
}
|
|
416
|
+
function mingLiBaZi(jd, J) {
|
|
417
|
+
const jd2 = jd + dt_T(jd);
|
|
418
|
+
const adjustedJd = jd + pty_zty2(jd2 / 36525) + J / Math.PI / 2;
|
|
419
|
+
return jdToTimeStr(adjustedJd);
|
|
420
|
+
}
|
|
421
|
+
function pty_zty2(t) {
|
|
422
|
+
const L = (1753470142 + 628331965331.8 * t + 5296.74 * t * t) / 1000000000 + Math.PI;
|
|
423
|
+
let z = [XL0_calc(0, 0, t, 5) + Math.PI, 0];
|
|
424
|
+
const E = (84381.4088 - 46.836051 * t) / rad;
|
|
425
|
+
z = llrConv(z, E);
|
|
426
|
+
const adjustedL = rad2rrad(L - z[0]);
|
|
427
|
+
return adjustedL / pi2;
|
|
428
|
+
}
|
|
429
|
+
function llrConv(JW, E) {
|
|
430
|
+
const r = [];
|
|
431
|
+
const J = JW[0], W = JW[1];
|
|
432
|
+
r[0] = Math.atan2(Math.sin(J) * Math.cos(E) - Math.tan(W) * Math.sin(E), Math.cos(J));
|
|
433
|
+
r[1] = Math.asin(Math.cos(E) * Math.sin(W) + Math.sin(E) * Math.cos(W) * Math.sin(J));
|
|
434
|
+
r[2] = JW[2];
|
|
435
|
+
r[0] = rad2mrad(r[0]);
|
|
436
|
+
return r;
|
|
437
|
+
}
|
|
438
|
+
function rad2mrad(v) {
|
|
439
|
+
v = v % (2 * Math.PI);
|
|
440
|
+
if (v < 0)
|
|
441
|
+
return v + 2 * Math.PI;
|
|
442
|
+
return v;
|
|
443
|
+
}
|
|
444
|
+
function rad2rrad(v) {
|
|
445
|
+
v = v % (2 * Math.PI);
|
|
446
|
+
if (v <= -Math.PI)
|
|
447
|
+
return v + 2 * Math.PI;
|
|
448
|
+
if (v > Math.PI)
|
|
449
|
+
return v - 2 * Math.PI;
|
|
450
|
+
return v;
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=SolarTermCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolarTermCalculator.js","sourceRoot":"","sources":["../../../src/core/bazi/SolarTermCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True Solar Time Calculator
|
|
3
|
+
* Enhanced with high-precision astronomical calculations from taro-bazi
|
|
4
|
+
* Implements algorithms from 寿星万年历 (Longevity Star Calendar)
|
|
5
|
+
*/
|
|
6
|
+
export declare class TrueSolarTime {
|
|
7
|
+
/**
|
|
8
|
+
* Adjust clock time to true solar time with astronomical precision
|
|
9
|
+
* @param date - The clock time
|
|
10
|
+
* @param longitude - The longitude in degrees (positive for East, negative for West)
|
|
11
|
+
* @returns Adjusted date/time
|
|
12
|
+
*/
|
|
13
|
+
static adjust(date: Date, longitude: number): Date;
|
|
14
|
+
/**
|
|
15
|
+
* Calculate the equation of time with high precision
|
|
16
|
+
* This accounts for the Earth's elliptical orbit and axial tilt
|
|
17
|
+
* @param jd - Julian Day number
|
|
18
|
+
* @returns Correction in minutes
|
|
19
|
+
*/
|
|
20
|
+
private static getEquationOfTime;
|
|
21
|
+
/**
|
|
22
|
+
* Get the day of year (1-365/366)
|
|
23
|
+
*/
|
|
24
|
+
private static getDayOfYear;
|
|
25
|
+
/**
|
|
26
|
+
* Calculate sunrise time with astronomical precision
|
|
27
|
+
* @param date - The date
|
|
28
|
+
* @param latitude - Latitude in degrees (positive for North)
|
|
29
|
+
* @param longitude - Longitude in degrees (positive for East)
|
|
30
|
+
* @returns Sunrise time
|
|
31
|
+
*/
|
|
32
|
+
static calculateSunrise(date: Date, latitude: number, longitude: number): Date;
|
|
33
|
+
/**
|
|
34
|
+
* Calculate sunset time with astronomical precision
|
|
35
|
+
* @param date - The date
|
|
36
|
+
* @param latitude - Latitude in degrees
|
|
37
|
+
* @param longitude - Longitude in degrees
|
|
38
|
+
* @returns Sunset time
|
|
39
|
+
*/
|
|
40
|
+
static calculateSunset(date: Date, latitude: number, longitude: number): Date;
|
|
41
|
+
/**
|
|
42
|
+
* Determine if a time is during daylight hours
|
|
43
|
+
* @param date - The date/time to check
|
|
44
|
+
* @param latitude - Latitude in degrees
|
|
45
|
+
* @param longitude - Longitude in degrees
|
|
46
|
+
* @returns true if during daylight hours
|
|
47
|
+
*/
|
|
48
|
+
static isDaylight(date: Date, latitude: number, longitude: number): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get timezone offset for a longitude
|
|
51
|
+
* @param longitude - Longitude in degrees
|
|
52
|
+
* @returns Timezone offset in hours from UTC
|
|
53
|
+
*/
|
|
54
|
+
static getTimezoneOffset(longitude: number): number;
|
|
55
|
+
/**
|
|
56
|
+
* Calculate the solar position (altitude and azimuth) for a given time and location
|
|
57
|
+
* Useful for advanced BaZi calculations that consider solar position
|
|
58
|
+
*/
|
|
59
|
+
static getSolarPosition(date: Date, latitude: number, longitude: number): {
|
|
60
|
+
altitude: number;
|
|
61
|
+
azimuth: number;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=TrueSolarTime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueSolarTime.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/TrueSolarTime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA8BlD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAsD9E;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA6C7E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAW3E;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMnD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;QACxE,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB;CAgDF"}
|