[Change] AccreteDisc - float => int
This commit is contained in:
parent
1dcba0856e
commit
c14e243b35
@ -173,16 +173,21 @@ vector3d StarSystem::Orbit::CartesianPosAtTime(double t) {
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::vector<float>* AccreteDisc(int size, float density, MTRand& rand) {
|
static std::vector<int>* AccreteDisc(int size, int bandSize, int density, MTRand& rand) {
|
||||||
std::vector<float>* disc = new std::vector<float>();
|
printf("Size %d\n", size);
|
||||||
|
std::vector<int>* disc = new std::vector<int>(size);
|
||||||
|
|
||||||
|
int bandDensity = 0;
|
||||||
for(int i = 0; i < size; i++) {
|
for(int i = 0; i < size; i++) {
|
||||||
disc->push_back(density*rand.Double(1.0));
|
if(!(i%bandSize)) bandDensity = rand.Int32(density);
|
||||||
|
(*disc)[i] = bandDensity * rand.Int32(density);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int iter = 0; iter < 20; iter++) {
|
for(int iter = 0; iter < 20; iter++) {
|
||||||
for(int i = 0; i < (signed)disc->size(); i++) {
|
for(int i = 0; i < (signed)disc->size(); i++) {
|
||||||
for(int d = ceil(sqrtf((*disc)[i])+(i/5)); d > 0; d--) {
|
int d=1+(i/3);
|
||||||
|
|
||||||
|
for(; d > 0; d--) {
|
||||||
if((i+d < (signed)disc->size()) && ((*disc)[i] > (*disc)[i+d])) {
|
if((i+d < (signed)disc->size()) && ((*disc)[i] > (*disc)[i+d])) {
|
||||||
(*disc)[i] += (*disc)[i+d];
|
(*disc)[i] += (*disc)[i+d];
|
||||||
(*disc)[i+d] = 0;
|
(*disc)[i+d] = 0;
|
||||||
@ -260,9 +265,9 @@ StarSystem::StarSystem(int sector_x, int sector_y, int system_idx) {
|
|||||||
int disc_size = rand.Int32(6, 100) + rand.Int32(60,140)*primary->type*primary->type;
|
int disc_size = rand.Int32(6, 100) + rand.Int32(60,140)*primary->type*primary->type;
|
||||||
//printf("disc_size %.1fAU\n", disc_size/10.0);
|
//printf("disc_size %.1fAU\n", disc_size/10.0);
|
||||||
|
|
||||||
std::vector<float>* disc = AccreteDisc(disc_size, 0.1+rand.Double(1.5), rand);
|
std::vector<int>* disc = AccreteDisc(disc_size, 10, rand.Int32(10,400), rand);
|
||||||
for(unsigned int i = 0; i < disc->size(); i++) {
|
for(unsigned int i = 0; i < disc->size(); i++) {
|
||||||
float mass = (*disc)[i];
|
float mass = (*disc)[i]/65536.0;
|
||||||
if(mass == 0) continue;
|
if(mass == 0) continue;
|
||||||
|
|
||||||
SBody* planet = new SBody;
|
SBody* planet = new SBody;
|
||||||
@ -398,10 +403,10 @@ void StarSystem::SBody::PickPlanetType(SBody* star, double distToPrimary, MTRand
|
|||||||
}
|
}
|
||||||
radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
|
radius = EARTH_RADIUS*bodyTypeInfo[type].radius;
|
||||||
/* Generate moons. */
|
/* Generate moons. */
|
||||||
if(genMoons) {
|
if((genMoons) && (emass > 0.5)) {
|
||||||
std::vector<float>* disc = AccreteDisc(2*sqrt(emass), 0.001, rand);
|
std::vector<int>* disc = AccreteDisc(2*sqrt(emass), 10, rand.Int32(1, 40), rand);
|
||||||
for(unsigned int i = 0; i < disc->size(); i++) {
|
for(unsigned int i = 0; i < disc->size(); i++) {
|
||||||
float mass = (*disc)[i];
|
float mass = (*disc)[i]/65536.0;
|
||||||
if(mass == 0) continue;
|
if(mass == 0) continue;
|
||||||
|
|
||||||
SBody* moon = new SBody;
|
SBody* moon = new SBody;
|
||||||
|
Loading…
Reference in New Issue
Block a user