nrel-spa-dart/.github/wiki/examples/basic-usage.md

74 lines
2 KiB
Markdown

# Basic Usage Examples
## Sunrise and Sunset for a City
```dart
import 'package:nrel_spa/nrel_spa.dart';
void printSolarDay(String city, double lat, double lng, double utcOffset) {
final now = DateTime.now().toUtc();
final result = getSpa(now, lat, lng, utcOffset);
String fmt(double h) {
if (h.isNaN) return 'n/a';
final hh = h.truncate();
final mm = ((h - hh) * 60).round();
return '${hh.toString().padLeft(2, '0')}:${mm.toString().padLeft(2, '0')}';
}
print('$city');
print(' Sunrise: ${fmt(result.sunrise)}');
print(' Solar noon: ${fmt(result.solarNoon)}');
print(' Sunset: ${fmt(result.sunset)}');
print(' Zenith now: ${result.zenith.toStringAsFixed(2)}°');
}
void main() {
printSolarDay('New York', 40.7128, -74.0060, -5.0);
printSolarDay('London', 51.5074, -0.1278, 0.0);
printSolarDay('Makkah', 21.3891, 39.8579, 3.0);
printSolarDay('Melbourne', -37.8136, 144.9631, 10.0);
}
```
## Annual Solar Noon Curve
```dart
import 'package:nrel_spa/nrel_spa.dart';
void main() {
const lat = 40.7128;
const lng = -74.0060;
const utcOffset = -5.0;
print('Day,SolarNoon');
for (int day = 1; day <= 365; day++) {
final date = DateTime.utc(2024, 1, 1).add(Duration(days: day - 1));
final result = getSpa(date.add(const Duration(hours: 12)), lat, lng, utcOffset);
print('$day,${result.solarNoon.toStringAsFixed(6)}');
}
}
```
## Twilight Times for Prayer Calculation
```dart
import 'package:nrel_spa/nrel_spa.dart';
void main() {
final date = DateTime.utc(2024, 3, 15, 12, 0, 0);
const lat = 33.8938; // Jerusalem
const lng = 35.5018;
const utcOffset = 2.0; // EET
final result = getSpa(
date, lat, lng, utcOffset,
customAngles: [108.0, 107.0], // Fajr 18°, Isha 17°
);
print('Fajr (18°): ${result.angles[0].sunrise.toStringAsFixed(4)} h');
print('Isha (17°): ${result.angles[1].sunset.toStringAsFixed(4)} h');
print('Sunrise: ${result.sunrise.toStringAsFixed(4)} h');
print('Sunset: ${result.sunset.toStringAsFixed(4)} h');
}
```