Modifying StarGen
Modifying StarGen
Ok, while I know this program has some flaws and limitations, I was going to try and tweak it for my own purposes. The problem is, I really don't know where to start. I downloaded the source code, but as far as proceeding, I'm at a loss.
What I'm looking for is a StarGen that will let me:
Generate "real world" systems to account for current understandings/findings of solar system formation.
Break the mass limitations (ie, less than .2 and greater than 1.5)
Generate ssc files.
Is that terribly difficult to do?
Any and all help appreciated.
-M-
What I'm looking for is a StarGen that will let me:
Generate "real world" systems to account for current understandings/findings of solar system formation.
Break the mass limitations (ie, less than .2 and greater than 1.5)
Generate ssc files.
Is that terribly difficult to do?
Any and all help appreciated.
-M-
Re: Modifying StarGen
What operating system do you use?
My "private" version of Stargen already does those things.
I could provide its source code, if you want, but not until this evening, about 10 hours from now. It's at home, and I'm not. I've attached my most recent binary, but it won't run without Cygwin ( http://www.cygwin.com/ )
I did all the development using Cygwin and its gcc under Windows 7.
In principle, though, it should compile and build under MacOS and Linux.
The command line options aren't sufficient to build systems simulating "real" planetary systems.
One must edit or add to the internal tables of planetary systems, which means you need an appropriate build environment to recompile the program. One can then use command line options to control how they're processed.
My "private" version of Stargen already does those things.
I could provide its source code, if you want, but not until this evening, about 10 hours from now. It's at home, and I'm not. I've attached my most recent binary, but it won't run without Cygwin ( http://www.cygwin.com/ )
I did all the development using Cygwin and its gcc under Windows 7.
In principle, though, it should compile and build under MacOS and Linux.
The command line options aren't sufficient to build systems simulating "real" planetary systems.
One must edit or add to the internal tables of planetary systems, which means you need an appropriate build environment to recompile the program. One can then use command line options to control how they're processed.
Selden
Re: Modifying StarGen
Here's the command-line help output of my variant of Stargen. It has no GUI.
Stargen wrote:$ ./stargen -?
Usage: stargen [options] [system name]
Options:
Seed values:
-s# Set random number seed [default: from time]
-i# Number to increment each random seed [default: 1]
-n# Specify number of systems [default: 1]
-A# set accretion dust density ratio_arg to # [default: 0.0]
-q# set accretion inner dust border to # [default: 0.3]
-Q# set accretion planetesimal seed eccentricity coefficient to # [default: 0.077]
Preset seeds:
-k Use known planets as planitesimal seeds [from internal tables]
-K Generate only known planets [from internal tables]
-x Use the Solar System's masses/orbits
-a Use the Solar System's masses/orbits varying Earth
Stars:
-m# Specify stellar mass # [fraction of Sun's mass]
or select an internal table:
-B Use all 2 Manticore systems & planets
-B# Use Manticore system #
-D Use all of Dole's 16 nearby stars
-D# Use Dole's system #
-F Use all 38 AU systems
-F# Use AU system #
-G Use all 1 IL Aqr systems & planets
-G# Use IL Aqr system #
-W Use all 52 nearby stars taken from the Web
-W# Use Web system #
-l List stars of selected table and exit
-L List stars of selected table as HTML and exit
Filters:
-E Only systems with earthlike planets
-H Only systems with habitable planets
-2 Only systems with 2 or more habitable planets
-J Only systems with Jovian planets in habitable region
-g Include atmospheric gases
-v List verbosities [hex values] and exit
-v# Set verbosity [hex value]
-V Use vector graphics [SVG] images [default: GIF]
-z Do numeric size check and exit
-Z Dump tables used for gases and exit
File specs:
-- use stdout
-o Name for the output file(s) [default: taken from star name]
-p Path for the output file(s) [default: ./html]
-u Internet URL path for/in the output file(s) [default: none]
Output formats: (only one is generated)
(default) HTML to file
-c Celestia .ssc to stdout
-C Excel .csv [dl: no thumbnail html] to file
-e Excel .csv to file
-S Vector graphics (SVG) to file
-t Text to stdout
-P Moon creation script to stdout
Other:
-M Generate moons (highly experimental and incomplete)
Web systems (-W) taken from
http://www.solstation.com/stars.htm
AU systems (-F) taken from
stories by C.J. Cherryh
Manticore systems (-B) taken from
stories by David Weber
StarGen: $Revision: 1.47+seb $
Selden
Re: Modifying StarGen
That was quick...as far as op sys goes. Windows XP. (Yes, I can hear all of you laughing out there.)
-M-
-M-
Re: Modifying StarGen
Cygwin should work fine under XP.
Microsoft will be dropping all support for XP in the not too distant future, though. Once there are no more security patches, you'll need to make sure you use an anti-malware package that can make up for that.
Microsoft will be dropping all support for XP in the not too distant future, though. Once there are no more security patches, you'll need to make sure you use an anti-malware package that can make up for that.
Selden
Re: Modifying StarGen
Do I need all of cygwin, or just cygwin1.dll and gcc v4?
Thanks.
-M-
Thanks.
-M-
Re: Modifying StarGen
You need all of the default install (which includes the dll you mention) plus gcc4 (which will pull in many more things) plus make plus some of the optional high precision math libraries. Unfortunately, I'm not sure which those are. I think they're libmpc*, libmpf* and mpfr. (I have all of those installed. I suspect selecting mpfr will pull in the others.) There are other selections which can be useful, like lint, splint, patch, and others too various to mention
Selden
Re: Modifying StarGen
After I've installed cygwin, I get an icon of it on my desktop. What do I do then? In the readme file, you have:
Is gcc v4 in the cygwin package? If not, where do I get it? Also, when you say "cd to this directory" from which command line do I do that from? Which directory is "this?"
Sorry to ask such seemingly silly questions. I do appreciate the help. While I have no problem with standing on the shoulders of giants to get something done, I'm also a firm believer in DIY. So, thank you.
-M-
To build Selden's version of Stargen,
1. install Cygwin under Windows
2. install Cygwin's gcc v4
3. cd to this directory
4. type the command
make
To run Stargen, type the command
./stargen
Is gcc v4 in the cygwin package? If not, where do I get it? Also, when you say "cd to this directory" from which command line do I do that from? Which directory is "this?"
Sorry to ask such seemingly silly questions. I do appreciate the help. While I have no problem with standing on the shoulders of giants to get something done, I'm also a firm believer in DIY. So, thank you.
-M-
Re: Modifying StarGen
When you run setup.exe, provided on the Cygwin home page, one of the windows that you step through provides a menu of the many optional programs and libraries provided as addons to the base version of Cygwin.
Double-clicking on the desktop icon starts the bash shell command interpreter. It provides the command window where you should type appropriate linux-style commands.
Please take the time to read through the Cygwin User's Guide http://cygwin.com/cygwin-ug-net.html or http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html
It includes detailed answers to these questions and many others that you haven't thought to ask yet.
The "this" directory is the directory containing Readme.txt -- i.e. whatever directory you specified when you extracted the contents of the zip file containing StarGen.
Double-clicking on the desktop icon starts the bash shell command interpreter. It provides the command window where you should type appropriate linux-style commands.
Please take the time to read through the Cygwin User's Guide http://cygwin.com/cygwin-ug-net.html or http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html
It includes detailed answers to these questions and many others that you haven't thought to ask yet.
The "this" directory is the directory containing Readme.txt -- i.e. whatever directory you specified when you extracted the contents of the zip file containing StarGen.
Selden
Re: Modifying StarGen
Assuming I can do this correcty, where will the new and improved "Seldenized" Stargen be found?
-M-
-M-
Re: Modifying StarGen
Dumb Question #8313...If I just am attempting to run your version, (not building one) I need to do it on cygwin's bash window, correct? What would I enter if I do? After installing cygwin, I tried running it from the command window and got chastised by my computer.
Like I said earlier, while I am a firm believer of DIY, there are times I stand on the shoulders of giants and enjoy the view...
-M-
Like I said earlier, while I am a firm believer of DIY, there are times I stand on the shoulders of giants and enjoy the view...
-M-
Re: Modifying StarGen
Correct.Tegmine wrote:Dumb Question #8313...If I just am attempting to run your version, (not building one) I need to do it on cygwin's bash window, correct?
Here are some typical commands:What would I enter if I do?
Code: Select all
./stargen -?
will cause it to type out a list of the available command options. Look at my earlier post up above to see what it should show.
./stargen -m1
will cause it to write an html file (in the subfolder named html) which describes a single random planetary system orbiting a star similar to our Sun. I write "similar" because the star's age will be random, which affects various planetary parameters, like their rotation speeds.
For example, here's what happens when I type the latter command and then list (ls) the contents of the subdirectory "html". I'm logged in as "seb1" on a computer named "PC598". You'll use a different cd command since you will have put Stargen somewhere else. Cygwin uses linux conventions, so the slashes (/) separating directory names are opposite from the back-slashes (\) used by Windows.
Since I didn't specify a file name, Stargen autogenerated one -- starting with the default planetary system name (stargen), followed by the random number seed that it used (1038713614) and then the mass of the star which I had specified (1).
Code: Select all
./stargen -m1 -c
will cause it to type out a single random planetary system in SSC format.
./stargen -m1 -c > m1_planets.ssc
will cause it to write a single random planetary system in SSC format into the file m1_planets.ssc
Since the commands above don't specify a specific random number starting point (seed), stargen will use the computer's clock to generate different random numbers, so the planetary systems will all be different from one another. If you want to generate both html and stc descriptions of the same planetary system, you have to provide the two commands with the same random number seed. E.g. the two commands
Code: Select all
./stargen -s1234 -m1 -o my_planets
./stargen -s1234 -m1 -c > ./html/my_planets.ssc
will generate both html and ssc files describing the same planetary system and put them both in the html subdirectory. By default html files go into the html subdirectory, so you don't need to tell stargen where to put them or the file type, just the file name. The redirect command (>) doesn't know that, so you have to tell it explicitly to put the ssc file into the html subdirectory, assuming that's where you what it to go.
If you use Windows Explorer (with "details" selected) to view the html directory, you should see something like this:
If you then select (double click on) my_planets.html, you should see something like this:
(I'm using Firefox v10. Internet Explorer will look different, of course, but the contents of the window should be identical if you type the same Stargen commands that I used. Both the random number seed and the star mass will have been the same.)
Do you mean you tried running Stargen from the Windows command window or from Cygwin's command window?After installing cygwin, I tried running it from the command window and got chastised by my computer.
Did you use the "cd" command to go to the folder where you restored the Stargen zip file? If you don't, it won't be able fo find Stargen.
Exactly what was the error message?
If you run stargen.exe from a Windows command prompt, it should complain that it can't find the cygwin dll. If you run it from a Cygwin command prompt, Stargen will complain if you don't specify any options, listing the ones that are available. That should be the same long message as I quoted in a previous post up above.
Does this help?
Selden
Re: Modifying StarGen
Yes, this helps tremendously!
As for the error message, it was because I was trying to run it from Windows command line, so it was saying it couldn't find the dll.
Thanks for putting up with my annoying self!
-M-
As for the error message, it was because I was trying to run it from Windows command line, so it was saying it couldn't find the dll.
Thanks for putting up with my annoying self!
-M-
Re: Modifying StarGen
I've tried several times, and all I get is:
I THOUGHT I was entering it correctly. If I'm not, let me know.
Thank you again,
-M-
Code: Select all
$ cd /Program Files /StarGen_seb
-bash: cd: /Program: No such file or directory
I THOUGHT I was entering it correctly. If I'm not, let me know.
Thank you again,
-M-
Re: Modifying StarGen
There are several problems with the line that you typed.
1. A space is a separator. Whenever a command scanner encounters one, it treats the previous set of characters as an individual "atom" (or word) and whatever follows as a different one. If you need to include a space in the middle of a directory or file name, you must quote it.
Windows would require you to enclose the entire string in double-quotes (") e.g. "\Program Files"
bash uses \ to quote a single character (e.g. /Program\ Files ) but that can't work for several other reasons. Keep reading...
2a. An initial / tells the bash command scanner that you are referring to the topmost level of the file system. Program Files is not at the topmost level, though: the device it's on is. On most Windows systems, that's C:.
2b. But Cygwin's bash doesn't use Windows device names. It uses Posix. In order to map the Windows device and directory structures into the Posix file system that bash uses, you have to use an arbitrary prefix (/cygdrive) followed by the Windows device as if it were another directory. /cygdrive/c would be the prefix used to refer to the C: disk that Windows uses.
So what you were trying to type should have been
/cygdrive/c/Program\ Files/stargen_seb
If you've put stargen_seb.exe into "C:Program Files", that command will work, but not very well. While you can use it to create ssc files, Stargen won't be able to create html or other types of files. That's because it doesn't have access to the subfolders where it expects to be able to find icons and where it wants to write its output. This is for two reasons: a) the subfolders don't exist yet, and b) programs are not allowed to write into Program Files.
Suggestion: put stargen into your Posix home directory. You and your programs are allowed to do anything there.
3. When you installed Cygwin, it created a separate Posix directory tree on the C: drive, including a "home" directory. When you start bash, by default it shows you your personal Posix home directory.
If you open an Explorer window and browse to the root of your C: drive, you will find a directory named "cygwin". That directory contains Cygwin's Posix filesystem. In "cygwin", among other directories, you'll find one named "home", and in that, you'll find at least one directory, which has the same name as the username that you were logged in as when you installed Cygwin. That's your personal privileged Posix home directory. For my examples below, I'll assume its "Tegmine"
(Note: I strongly recommend that you create a non-privileged Windows account and do all your work there. Running from a privileged account is just asking for malware to thoroughly infect your system. If you do all your Web browsing and other work from a non-privileged account, you won't have to worry so much about that happening.)
Drag stargen_seb.exe into your personal Posix home directory. I.E. drag it into
C:\cygwin\home\Tegmine\
Open a new Cygwin bash command window.
In that window, type the command
./stargen_seb
It'll type a list of all of its options.
I also suggest that you extract the Zip file into that same directory, so that it creates the directory tree Stargen_2012 and all of its subdirectories in your Posix home directory.
Then when you open a bash shell (Cygwin Terminal window) you can type this sequence of commands:
cd ./Stargen_2012
./stargen
and you'll have access to all of StarGen's functionality.
(note that . means "your current default directory".)
1. A space is a separator. Whenever a command scanner encounters one, it treats the previous set of characters as an individual "atom" (or word) and whatever follows as a different one. If you need to include a space in the middle of a directory or file name, you must quote it.
Windows would require you to enclose the entire string in double-quotes (") e.g. "\Program Files"
bash uses \ to quote a single character (e.g. /Program\ Files ) but that can't work for several other reasons. Keep reading...
2a. An initial / tells the bash command scanner that you are referring to the topmost level of the file system. Program Files is not at the topmost level, though: the device it's on is. On most Windows systems, that's C:.
2b. But Cygwin's bash doesn't use Windows device names. It uses Posix. In order to map the Windows device and directory structures into the Posix file system that bash uses, you have to use an arbitrary prefix (/cygdrive) followed by the Windows device as if it were another directory. /cygdrive/c would be the prefix used to refer to the C: disk that Windows uses.
So what you were trying to type should have been
/cygdrive/c/Program\ Files/stargen_seb
If you've put stargen_seb.exe into "C:Program Files", that command will work, but not very well. While you can use it to create ssc files, Stargen won't be able to create html or other types of files. That's because it doesn't have access to the subfolders where it expects to be able to find icons and where it wants to write its output. This is for two reasons: a) the subfolders don't exist yet, and b) programs are not allowed to write into Program Files.
Suggestion: put stargen into your Posix home directory. You and your programs are allowed to do anything there.
3. When you installed Cygwin, it created a separate Posix directory tree on the C: drive, including a "home" directory. When you start bash, by default it shows you your personal Posix home directory.
If you open an Explorer window and browse to the root of your C: drive, you will find a directory named "cygwin". That directory contains Cygwin's Posix filesystem. In "cygwin", among other directories, you'll find one named "home", and in that, you'll find at least one directory, which has the same name as the username that you were logged in as when you installed Cygwin. That's your personal privileged Posix home directory. For my examples below, I'll assume its "Tegmine"
(Note: I strongly recommend that you create a non-privileged Windows account and do all your work there. Running from a privileged account is just asking for malware to thoroughly infect your system. If you do all your Web browsing and other work from a non-privileged account, you won't have to worry so much about that happening.)
Drag stargen_seb.exe into your personal Posix home directory. I.E. drag it into
C:\cygwin\home\Tegmine\
Open a new Cygwin bash command window.
In that window, type the command
./stargen_seb
It'll type a list of all of its options.
I also suggest that you extract the Zip file into that same directory, so that it creates the directory tree Stargen_2012 and all of its subdirectories in your Posix home directory.
Then when you open a bash shell (Cygwin Terminal window) you can type this sequence of commands:
cd ./Stargen_2012
./stargen
and you'll have access to all of StarGen's functionality.
(note that . means "your current default directory".)
Selden
Re: Modifying StarGen
Thank you very much for your help on this...while I'm decidely in the shallow end of the programming pool, I'm a very good mimic. I do have another question...
If I wanted to get more specific on planetary types (Water Jovian, for example), I would probably have to do more than just put in the appropriate picture in the ref file, correct? If so, I'll just have to wait on that.
Thank you, merci, gracias and danyavad!!
-M-
If I wanted to get more specific on planetary types (Water Jovian, for example), I would probably have to do more than just put in the appropriate picture in the ref file, correct? If so, I'll just have to wait on that.
Thank you, merci, gracias and danyavad!!
-M-
Re: Modifying StarGen
In addition to the image, you'd have to add code which tests for the specific characteristics of the planetary type that you want to select for.
Selden
- omega13a
- Posts: 120
- Joined: 15.10.2011
- Age: 40
- With us: 13 years 1 month
- Location: California
- Contact:
Re: Modifying StarGen
Very interesting modifications. I've been tweaking StarGen myself. I found a solution for outputting moons for ssc files. I haven't looked at the source code to see if my modification is compidable. What I did was replace the celestia_describe_system function in display.c with this:
There were some other modifications I made regarding outputing moons. I'll see If I can adapt my modifications for this modified stargen.
Code: Select all
void atmosphere_and_surface(planet_pointer planet)
{
switch (planet->type)
{
case tUnknown:
break;
case tRock:
case tAsteroids:
case t1Face:
printf(" Color [ 0.52 0.47 0.42 ]\n");
printf(" BlendTexture true\n");
printf("\n");
break;
case tIce:
printf(" Color [ 1.0 0.9 0.75 ]\n");
printf(" HazeColor [ 0.2 0.5 1 ]\n");
printf(" HazeDensity 1\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 60\n");
printf(" Lower [ 0.8 0.4 0.1 ]\n");
printf(" Upper [ 0.0 0.0 0.9 ]\n");
printf(" Sky [ 0.8 0.4 0.1 ]\n");
printf(" }\n");
printf("\n");
break;
case tMartian:
printf(" Color [ 1 0.75 0.7 ]\n");
printf(" HazeColor [ 1 1 1 ]\n");
printf(" HazeDensity 0.45\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 30\n");
printf(" Lower [ 0.8 0.6 0.6 ]\n");
printf(" Upper [ 0.7 0.3 0.3 ]\n");
printf(" Sky [ 0.83 0.75 0.65 ]\n");
printf(" Sunset [ 0.7 0.7 0.8 ]\n");
printf(" }\n");
printf("\n");
break;
case tTerrestrial:
printf(" Color [ 0.85 0.85 1.0 ]\n");
printf(" SpecularColor [ 0.5 0.5 0.55 ]\n");
printf(" SpecularPower 25.0\n");
printf(" HazeColor [ 1 1 1 ]\n");
printf(" HazeDensity 0.3\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 60\n");
printf(" Lower [ 0.5 0.5 0.65 ]\n");
printf(" Upper [ 0.3 0.3 0.6 ]\n");
printf(" Sky [ 0.3 0.6 0.9 ]\n");
printf(" Sunset [ 1.0 0.6 0.2 ]\n");
printf(" CloudHeight 7\n");
printf(" CloudSpeed 65\n");
printf(" CloudMap \"earth-clouds.png\"\n");
printf(" }\n");
printf("\n");
break;
case tWater:
printf(" Color [ 0.75 0.75 1.0 ]\n");
printf(" SpecularColor [ 0.5 0.5 0.55 ]\n");
printf(" SpecularPower 25.0\n");
printf(" HazeColor [ 1 1 1 ]\n");
printf(" HazeDensity 0.3\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 90\n");
printf(" Lower [ 0.4 0.4 0.7 ]\n");
printf(" Upper [ 0.2 0.2 0.6 ]\n");
printf(" Sky [ 0.4 0.7 0.9 ]\n");
printf(" }\n");
printf("\n");
break;
case tVenusian:
printf(" HazeColor [ 0.5 0.35 0.2 ]\n");
printf(" HazeDensity 0.35\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 60\n");
printf(" Lower [ 0.8 0.8 0.5 ]\n");
printf(" Upper [ 0.6 0.6 0.6 ]\n");
printf(" Sky [ 0.8 0.8 0.5 ]\n");
printf(" }\n");
printf("\n");
break;
case tSubSubGasGiant:
case tSubGasGiant:
printf(" Color [ 0.75 0.85 1.0 ]\n");
printf(" HazeColor [ 0.5 0.8 1.0 ]\n");
printf(" HazeDensity 0.2\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 130\n");
printf(" Lower [ 0.6 0.65 1.0 ]\n");
printf(" Upper [ 0.5 0.55 0.9 ]\n");
printf(" Sky [ 0.5 0.7 0.9 ]\n");
printf(" }\n");
printf("\n");
break;
case tBrownDwarf:
printf(" Emissive true\n");
case tGasGiant:
printf(" HazeColor [ 0.4 0.45 0.5 ]\n");
printf(" HazeDensity 0.3\n");
printf("\n");
printf(" Atmosphere {\n");
printf(" Height 300\n");
printf(" Lower [ 0.7 0.6 0.5 ]\n");
printf(" Upper [ 0.5 0.45 0.4 ]\n");
printf(" Sky [ 0.8 0.8 0.5 ]\n");
printf(" Sunset [ 1.0 0.6 0.2 ]\n");
printf(" }\n");
printf("\n");
break;
}
}
void celestia_describe_system(planet_pointer innermost_planet, char* designation)
{
planet_pointer planet;
int counter;
planet_pointer moon;
int moons;
for (planet=innermost_planet, counter=1; planet != NULL; planet=planet->next_planet, counter++)
{
char *typeString = texture_name (planet->type);
iterate_surface_temp(planet, FALSE);
printf("\"p%d\" \"%s\"\n", counter, designation);
printf("{\n");
if (planet->type == tAsteroids)
{
printf(" Class \"asteroid\"\n");
printf(" Mesh \"amalthea.cmod\"\n");
}
else
{
printf(" Class \"planet\"\n");
}
printf(" Texture \"%s\"\n", typeString);
printf(" Radius %3Lf\n", planet->radius);
printf(" Mass %3Lf\n", planet->mass * SUN_MASS_IN_EARTH_MASSES);
printf("\n");
atmosphere_and_surface(planet);
printf(" EllipticalOrbit {\n");
printf(" Period %4Lf # years\n", planet->orb_period / DAYS_IN_A_YEAR);
printf(" SemiMajorAxis %5Lf # AU\n", planet->a);
printf(" Eccentricity %5Lf\n", planet->e);
printf(" Inclination 0.0\n");
printf(" AscendingNode 0\n");
printf(" LongOfPericenter 0\n");
printf(" MeanLongitude 0\n");
printf(" }\n");
printf("\n");
printf(" RotationPeriod %4Lf\n", planet->day);
printf(" Obliquity %2Lf\n", planet->axial_tilt);
printf(" Albedo %5Lf\n", planet->albedo);
printf("}\n");
printf("\n");
for (moon=planet->first_moon, moons=1; moon != NULL; moon=moon->next_planet, moons++)
{
iterate_surface_temp(moon, FALSE);
printf("\"p%d-%d\" \"%s/p%d\"\n", counter, moons, designation, counter);
printf("{\n");
typeString = texture_name (moon->type);
printf(" Class \"moon\"\n");
if (moon->type == tAsteroids)
{
printf(" Mesh \"amalthea.cmod\"\n");
}
printf(" Texture \"%s\"\n", typeString);
printf(" Radius %3Lf\n", moon->radius);
printf(" Mass %3Lf\n", moon->mass * SUN_MASS_IN_EARTH_MASSES);
printf("\n");
atmosphere_and_surface(moon);
moon->orb_period = period(moon->moon_a, moon->mass, planet->mass);
printf(" EllipticalOrbit {\n");
printf(" Period %4Lf # days\n", moon->orb_period);
printf(" SemiMajorAxis %5Lf # km\n", moon->moon_a * KM_PER_AU);
printf(" Eccentricity %5Lf\n", moon->moon_e);
printf(" Inclination 0.0\n");
printf(" AscendingNode 0\n");
printf(" LongOfPericenter 0\n");
printf(" MeanLongitude 0\n");
printf(" }\n");
printf("\n");
printf(" RotationPeriod %4Lf\n", moon->day);
printf(" Obliquity %2Lf\n", moon->axial_tilt);
printf(" Albedo %5Lf\n", moon->albedo);
printf("}\n");
printf("\n");
}
}
}
There were some other modifications I made regarding outputing moons. I'll see If I can adapt my modifications for this modified stargen.
Re: Modifying StarGen
I think all you'd have to do is insert your moon code at the end of the (modified) Celestia output code.
However, I think the experimental code which uses planetesimals to generate the moons needs a lot of work. When I tried it, it seemed to generate only 2 or 3 moons at most. That's why I added an option which writes a script which uses an external program to generate moons. Of course, writing such a program is a challenge, too!
However, I think the experimental code which uses planetesimals to generate the moons needs a lot of work. When I tried it, it seemed to generate only 2 or 3 moons at most. That's why I added an option which writes a script which uses an external program to generate moons. Of course, writing such a program is a challenge, too!
Selden