This repository has been archived on 2024-02-25. You can view files and clone it, but cannot push or open issues or pull requests.
galaxygen/utils.js
Bram van der Veen 9c8274d227 First commit
2016-06-28 16:14:00 +02:00

78 lines
2 KiB
JavaScript

const PRNG = require('./prng');
const data = require('./data.json');
function random_name(PRNG, number_of_syllables, allow_second_name, allow_secondary) {
var syllables = [], name;
syllables.push(PRNG.pick(data.nameParts.prefix));
for (var j = 2; j < number_of_syllables; j++) {
syllables.push(PRNG.pick(data.nameParts.middle));
}
syllables.push(PRNG.pick(data.nameParts.suffix));
name = syllables.join('');
suffix = PRNG.pick(['', 'first-name', 'second-name', 'secondary'], [8, 1, 1, 4]);
switch (suffix) {
case 'first-name':
if (allow_second_name !== false) {
name = random_name(PRNG, PRNG.range(2, number_of_syllables), false, false) + " " + name;
name = kappatalize(name);
}
break;
case 'second-name':
if (allow_second_name !== false) {
name = name + " " + random_name(PRNG, PRNG.range(2, number_of_syllables), false);
name = kappatalize(name);
}
break;
case 'secondary':
if (allow_secondary !== false) {
name += " " + PRNG.pick(data.nameParts.secondary);
name = kappatalize(name);
}
break;
}
return kappatalize(name);
}
function gravity(radius, density) {
return density / 5.56 * radius / 6557;
}
function blackbody(insolation, albedo) {
if (albedo === undefined) {
albedo = 0;
}
return Math.pow((1367 * insolation * (1 - albedo)) / (4 * 0.0000000567), 0.25);
}
function fixed_value(val) {
return function() {
return val;
}
}
function romanNumeral(n) {
var units = ["I", "I", "I", "IV", "V", "VI", "VI", "VI", "IX"];
if (n == 0) {
return "";
} else if (n < 0 || n >= 20) {
return n;
} else if (n >= 10) {
return "X" + romanNumeral(n - 10);
} else {
return units[n - 1];
}
}
function kappatalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
module.exports = {
"random_name": random_name,
"gravity": gravity,
"blackbody": blackbody,
"fixed_value": fixed_value,
"romanNumeral": romanNumeral,
"kappatalize": kappatalize
}