// constants.js - Global constants and configuration

// Scene configuration
export const CONFIG = {
  defaultCameraZ: 300,
  minZoom: 0.5,
  maxZoom: 5.0,
  earthRadius: 100,
  rotationSpeed: 0.0005,
};

// Earth coordinate constants
export const EARTH_CONFIG = {
  tilt: 23.5,  // earth tilt angle (degrees)
  tiltRad: 23.5 * Math.PI / 180,  // earth tilt angle (radians)
  
  // hangzhou coordinates
  chinaLat: 30.2741,
  chinaLon: 120.1552,
  chinaRotLon: 120.1552 - 270,  // for rotation calculation (chinaLon - 270)
  
  // view reset coefficient
  latCoefficient: 0.5
};

export const PATHS = {
  cablesApi: '/api/v1/visualization/geo/cables',
  landingPointsApi: '/api/v1/visualization/geo/landing-points',
  geoJSON: './geo.json',
  landingPointsStatic: './landing-point-geo.geojson',
};

// Cable colors mapping
export const CABLE_COLORS = {
  'Americas II': 0xff4444,
  'AU Aleutian A': 0x44ff44,
  'AU Aleutian B': 0x4444ff,
  'default': 0xffff44
};

export const CABLE_CONFIG = {
  lockedOpacityMin: 0.2,
  lockedOpacityMax: 1.0,
  otherOpacity: 0.5,
  otherBrightness: 0.6,
  pulseSpeed: 0.008,
  pulseCoefficient: 0.4
};

export const CABLE_STATE = {
  NORMAL: 'normal',
  HOVERED: 'hovered',
  LOCKED: 'locked'
};

export const SATELLITE_CONFIG = {
  maxCount: 5000,
  trailLength: 10,
  dotSize: 4,
  ringSize: 0.07,
  apiPath: '/api/v1/visualization/geo/satellites',
  breathingSpeed: 0.08,
  breathingScaleAmplitude: 0.15,
  breathingOpacityMin: 0.5,
  breathingOpacityMax: 0.8,
  dotBreathingSpeed: 0.12,
  dotBreathingScaleAmplitude: 0.2,
  dotOpacityMin: 0.7,
  dotOpacityMax: 1.0
};

export const PREDICTED_ORBIT_CONFIG = {
  sampleInterval: 10,
  opacity: 0.8
};

export const GRID_CONFIG = {
  latitudeStep: 10,
  longitudeStep: 30,
  gridStep: 5
};
