static char *post_nominal_letters(struct mtwist_state *mt) { static char *nothing = ""; if (mtwist_int(mt, 100) < 85) return nothing; return random_word(mt, PostNominalLetters, ARRAYSIZE(PostNominalLetters)); }
void ship_name(struct mtwist_state *mt, char *buffer, int buflen) { switch (mtwist_int(mt, 6)) { case 0: snprintf(buffer, buflen, "%s %s", random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy)), random_word(mt, Animal, ARRAYSIZE(Animal))); break; case 1: snprintf(buffer, buflen, "%s %s", random_word(mt, Animal, ARRAYSIZE(Animal)), random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy))); break; case 2: snprintf(buffer, buflen, "%s %s", random_word(mt, ShipThing, ARRAYSIZE(ShipThing)), random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy))); break; case 3: snprintf(buffer, buflen, "%s %s", random_name(mt), random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy))); break; case 4: snprintf(buffer, buflen, "%s %s", random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy)), random_name(mt)); break; default: snprintf(buffer, buflen, "%s %s", random_word(mt, SpaceWorthy, ARRAYSIZE(SpaceWorthy)), random_word(mt, ShipThing, ARRAYSIZE(ShipThing))); break; } }
void initialize_random_orientations_and_spins(int mtwist_seed) { int i; struct mtwist_state *mt; mt = mtwist_init(mtwist_seed); for (i = 0; i < NRANDOM_ORIENTATIONS; i++) { float angle = mtwist_float(mt) * 2.0 * M_PI; consistent_random_axis_quat(mt, &random_orientation[i], angle); } for (i = 0; i < NRANDOM_SPINS; i++) { float angular_speed = ((float) mtwist_int(mt, 100) / 10.0 - 5.0) * M_PI / 180.0; consistent_random_axis_quat(mt, &random_spin[i], angular_speed); } mtwist_free(mt); }
void character_name(struct mtwist_state *mt, char *buffer, int buflen) { switch (mtwist_int(mt, 8)) { case 0: snprintf(buffer, buflen, "%s %s %s %s%s", character_title(mt), random_name(mt), random_name(mt), random_name(mt), post_nominal_letters(mt)); break; case 1: snprintf(buffer, buflen, "%s %c. %c. %s%s", character_title(mt), random_initial(mt), random_initial(mt), random_name(mt), post_nominal_letters(mt)); break; case 2: case 3: snprintf(buffer, buflen, "%s %c. %s %s%s", character_title(mt), random_initial(mt), random_name(mt), random_name(mt), post_nominal_letters(mt)); break; case 4: snprintf(buffer, buflen, "%s %c. %s%s", character_title(mt), random_initial(mt), random_name(mt), post_nominal_letters(mt)); break; case 5: snprintf(buffer, buflen, "%s %s%s", character_title(mt), random_name(mt), post_nominal_letters(mt)); break; case 6: snprintf(buffer, buflen, "%s %s %s%s", character_title(mt), random_name(mt), random_name(mt), post_nominal_letters(mt)); break; case 7: default: snprintf(buffer, buflen, "%s %c. %c. %s%s", character_title(mt), random_initial(mt), random_initial(mt), random_name(mt), post_nominal_letters(mt)); break; } }
int random_initial(struct mtwist_state *mt) { return 'A' + mtwist_int(mt, 26); }