Em complemento à resposta de @ Dave e como ele disse dependendo do avião, a complexidade do cálculo do c.g. pode variar muito. O fabricante de todas as grandes aeronaves que eu programou peso & balance for teve tabelas para cada tanque. No caso da Boeing para o 747-400, cada linha de tabela é um volume de tanque em galões e o tanque c.g. naquele volume em polegadas. Por exemplo, e usando a notação JSON, pois o OP é JavaScript fluente:
{"vol": 3200, "ba": 1453.7}, {"vol": 3250, "ba": 1454.8}, {"vol": 3300, "ba": 1456.0}, {"vol": 3350, "ba": 1457.2}, {"vol": 3400, "ba": 1458.4}, {"vol": 3450, "ba": 1459.7},
"vol" é o volume de combustível no tanque em galões
"ba" é o braço de equilíbrio nesse volume em polegadas
Como o combustível é carregado em peso, é necessário usar a densidade do combustível para converter em volume.
Normalmente, pelo menos para aeronaves grandes, você tem que satisfazer o c.g. envelope para:
- peso de combustível zero
- peso da rampa após abastecer
- peso de decolagem
- peso de pouso
Também deve haver provisão para transportar combustível de lastro, se necessário.