import type { EvolutionPoint } from '../lib/eras'; /** 时速演进曲线(SVG):横轴年代、纵轴最高时速,体现"科学感"主线。*/ export function EvolutionCurve({ points }: { points: EvolutionPoint[] }) { if (points.length < 2) return null; const W = 720; const H = 180; const padX = 36; const padY = 24; const decades = points.map((p) => p.decade); const speeds = points.map((p) => p.maxSpeed); const minD = Math.min(...decades); const maxD = Math.max(...decades); const maxS = Math.max(...speeds); const spanD = Math.max(1, maxD - minD); const x = (d: number) => padX + ((d - minD) / spanD) * (W - padX * 2); const y = (s: number) => H - padY - (s / maxS) * (H - padY * 2); const line = points.map((p) => `${x(p.decade)},${y(p.maxSpeed)}`).join(' '); const area = `${padX},${H - padY} ${line} ${W - padX},${H - padY}`; return ( {points.map((p) => ( {(p.decade === minD || p.decade === maxD || p.maxSpeed === maxS) && ( {p.maxSpeed}km/h )} {p.decade}s ))} ); }