# coords

Coordinate and geometry utilities for GPS, mapping, and calculations.

## Functions

| Function | Description | Example |
|----------|-------------|---------|
| `degreesToRadians` | Convert degrees to radians | `dphelper.coords.degreesToRadians(45)` |
| `latToMeters` | Convert latitude to meters | `dphelper.coords.latToMeters([40.68, -74.04])` |
| `toVector` | Convert coordinates to 3D vector | `dphelper.coords.toVector([lat, lon, alt])` |
| `convertToDecDegrees` | Convert DMS to decimal degrees | `dphelper.coords.convertToDecDegrees(39, 5, 59, 'N')` |
| `distance` | Calculate distance between two points (Haversine) | `dphelper.coords.distance([lat1, lon1], [lat2, lon2])` |
| `polarToCartesian` | Convert polar to Cartesian coordinates | `dphelper.coords.polarToCartesian(x, y, radius, angle)` |
| `mapDegreesToPixels` | Map degrees to pixel values | `dphelper.coords.mapDegreesToPixels(deg, min, max, minPx, maxPx, pad)` |

## Description

Coordinate manipulation toolkit:
- **Unit Conversion** - Degrees, radians, meters
- **Distance Calculation** - Haversine formula for GPS
- **Coordinate Systems** - Polar, Cartesian, 3D vectors
- **Mapping** - Degrees to pixels for maps

## Usage Examples

### Degree/Radian Conversion

```javascript
// Degrees to radians
console.log(dphelper.coords.degreesToRadians(0));    // 0
console.log(dphelper.coords.degreesToRadians(90));   // 1.57...
console.log(dphelper.coords.degreesToRadians(180));  // 3.14...
console.log(dphelper.coords.degreesToRadians(360));  // 6.28...
```

### Distance Calculation (GPS)

```javascript
// Distance between New York and Washington DC
const nyc = [40.7128, -74.0060];
const dc = [38.9072, -77.0369];

const dist = dphelper.coords.distance(nyc, dc);
console.log(dist);
// { km: 328.54, mi: 204.18, nMi: 177.4 }

// Calculate travel distance for logistics
const locations = [
  [40.7128, -74.0060],  // NYC
  [39.9526, -75.1652],  // Philadelphia
  [39.2894, -76.6152],  // Baltimore
  [38.9072, -77.0369]   // Washington DC
];

function calculateTotalDistance(points) {
  let total = 0;
  for (let i = 0; i < points.length - 1; i++) {
    const dist = dphelper.coords.distance(points[i], points[i + 1]);
    total += dist.km;
  }
  return total;
}
```

### Coordinate Conversion

```javascript
// Convert DMS to decimal degrees
// 39° 5' 59" N -> decimal
const dec = dphelper.coords.convertToDecDegrees(39, 5, 59, 'N');
console.log(dec); // 39.0997...

// With South/West (negative)
const south = dphelper.coords.convertToDecDegrees(33, 51, 30, 'S');
console.log(south); // -33.8583...
```

### 3D Vector from GPS

```javascript
// Convert GPS coordinates to 3D Earth-centered vector
const vector = dphelper.coords.toVector([40.7128, -74.0060, 0]);
console.log(vector);
// [x, y, z] in meters from Earth center
```

### Polar to Cartesian

```javascript
// Convert polar to Cartesian for graphics
const cart = dphelper.coords.polarToCartesian(100, 100, 50, 90);
console.log(cart);
// { x: 100, y: 150 }

// Create circular motion
for (let angle = 0; angle < 360; angle += 30) {
  const pos = dphelper.coords.polarToCartesian(200, 200, 80, angle);
  console.log(`Angle ${angle}:`, pos);
}
```

### Map Pixel Mapping

```javascript
// Map latitude to pixel for interactive maps
const pixel = dphelper.coords.mapDegreesToPixels(
  45,     // Current degree
  30,     // Min latitude
  60,      // Max latitude
  0,       // Min pixel
  500,     // Max pixel
  10       // Padding
);
```

## Details

- **Author:** Dario Passariello
- **Version:** 0.0.2
- **Creation Date:** 20210101
- **Last Modified:** 20260220
- **Environment:** Client-side only (browser)

---

*Automatically generated document*
