function generateAnnualData(decennialData, endYear) {
let data = [];
for (let i = 0; i < decennialData.length - 1; i++) {
const startYear = decennialData[i].year;
const startPopulation = decennialData[i].population;
const endYearDecade = decennialData[i + 1].year;
const endPopulation = decennialData[i + 1].population;
for (let year = startYear; year < Math.min(endYearDecade, 2011); year++) {
const population = P(startYear, startPopulation, endYearDecade, endPopulation, year);
data.push({ year, population });
}
}
const year2010 = decennialData.find(d => d.year === 2010);
const year2016 = { year: 2016, population: decennialData[decennialData.length - 1].population };
for (let year = 2011; year < year2016.year; year++) {
const population = P(year2010.year, year2010.population, year2016.year, year2016.population, year);
data.push({ year, population });
}
const growthRate2010to2016 = Math.log(year2016.population / year2010.population) / (year2016.year - year2010.year);
for (let year = year2016.year; year <= endYear; year++) {
const population = year2016.population * Math.exp(growthRate2010to2016 * (year - year2016.year));
data.push({ year, population });
}
return data;
}