This directory contains practical examples demonstrating how to use the SwissEph WebAssembly library for various astronomical and astrological calculations.
basic-usage.jsFundamental operations and core functionality:
Run with:
node examples/basic-usage.js
birth-chart.jsComplete birth chart calculation system:
Run with:
node examples/birth-chart.js
advanced-features.js (Coming Soon)Advanced astronomical calculations:
web-integration.js (Coming Soon)Browser integration examples:
import SwissEph from '../src/swisseph.js';
const swe = new SwissEph();
await swe.initSwissEph();
const jd = swe.julday(2023, 6, 15, 12.0);
const sunPos = swe.calc_ut(jd, swe.SE_SUN, swe.SEFLG_SWIEPH);
console.log(`Sun longitude: ${sunPos[0]}°`);
swe.close();
import { BirthChartCalculator } from './examples/birth-chart.js';
const calculator = new BirthChartCalculator();
const chart = await calculator.calculateBirthChart({
year: 1990, month: 5, day: 15,
hour: 14, minute: 30, timezone: -5,
latitude: 40.7128, longitude: -74.0060
});
console.log(chart.planets);
calculator.destroy();
=== Basic Planetary Position ===
Julian Day: 2460110.0
Sun Position:
Longitude: 84.123456°
Latitude: 0.000123°
Distance: 1.015678 AU
Speed: 0.958765°/day
Zodiac: 24.12° Gemini
PLANETARY POSITIONS:
===================
☉ Sun : 24.12° Taurus (54.12°)
☽ Moon : 15.67° Scorpio (225.67°)
☿ Mercury : 8.45° Gemini (68.45°)
♀ Venus : 2.89° Cancer (92.89°)
♂ Mars : 18.34° Virgo (168.34°)
♃ Jupiter : 12.78° Pisces (342.78°)
♄ Saturn : 25.91° Capricorn (295.91°)
♅ Uranus : 7.23° Capricorn (277.23°)
♆ Neptune : 11.45° Capricorn (281.45°)
♇ Pluto : 16.78° Scorpio (226.78°)
MAJOR ASPECTS:
==============
Sun ☌ Mercury: Conjunction (orb: 2.34°)
Moon ☍ Venus: Opposition (orb: 3.21°)
Mars △ Jupiter: Trine (orb: 1.87°)
async function safeCalculation() {
let swe = null;
try {
swe = new SwissEph();
await swe.initSwissEph();
// calculations here
return result;
} catch (error) {
console.error('Calculation failed:', error);
return null;
} finally {
if (swe) swe.close();
}
}
async function calculateMultipleDates(dates) {
const swe = new SwissEph();
await swe.initSwissEph();
const results = [];
for (const date of dates) {
const jd = swe.julday(date.year, date.month, date.day, date.hour);
const pos = swe.calc_ut(jd, swe.SE_SUN, swe.SEFLG_SWIEPH);
results.push({ date, position: pos[0] });
}
swe.close();
return results;
}
class AstrologyCalculator {
constructor() {
this.swe = null;
this.initialized = false;
}
async init() {
if (!this.initialized) {
this.swe = new SwissEph();
await this.swe.initSwissEph();
this.initialized = true;
}
}
async calculate(params) {
await this.init();
// calculations here
}
destroy() {
if (this.swe) {
this.swe.close();
this.swe = null;
this.initialized = false;
}
}
}
# Run basic usage examples
node examples/basic-usage.js
# Run birth chart example
node examples/birth-chart.js
# Run specific function
node -e "import('./examples/basic-usage.js').then(m => m.basicPlanetaryPosition())"
<script type="module">
import { runAllExamples } from './examples/basic-usage.js';
runAllExamples();
</script>
await swe.initSwissEph() before calculationsswe.close() when done