Page 1 of 1

Enhancing and positioning O'Neill Habitats

Posted: 06.01.2006, 06:21
by Chuft-Captain
Apologies first for the length of this post.
I've moved this post from the Celestia Users Forum in the hope that someone in this forum will have some expertise. Haven't had any response at all in the Users forum :?, so maybe that wasn't the best place to post it. (I'm new and inexperienced in this forum :oops: ), but I'm hoping to find some experts/coders here!

For ages I've had an Earth-Moon barycenter kludge for version 1.3.2 and that seems to work OK, so I don't nescessarily want to replace that with barycenters, but I would like to have 3 very small "microstars" orbiting an object or object(s) located at L5 (the Earth-Moon system's trailing lagrangian point).

Yes, I know it's not the usual sort of thing to do with a star, but the idea is that the microstars (maybe only a few 10's of metres in radius) would simulate the reflection of the sun in the 'mirrors' of my O'Neill habitats, and enable me to project light into the interior of the habitats, giving a realistic simulation of life inside.
For background details, see my posts here:
http://celestiaproject.net/forum/viewtopic.php ... de069b3ef9

I thought the logical solution for this would be to place a new barycenter at each of the locations in my existing system, working outwards, adding barycenters orbiting barycenters, until I reach each habitat, and then orbit the "stars" around the final barycenter. ie. create barycenter clones of existing points, the final 2 barycenters being located at the center of each of the 2 habitats.
eg:
1. Define a Barycenter with the same orbital elements as my existing Earth-Moon location.
2. Define a Barycenter with the same orbital elements as my existing L5 point. (ie. orbiting Earth-Moon Barycenter)
3. Define a Barycenter with the same orbital elements as the existing objects orbiting L5 (ie. orbiting L5-Bary)
4. 2 more stationary barycenters centred on the habitats.
5. 2 sets of 3 microstars would orbit these final Barycenters.

The reason I'm doing it this way is because as far I'm aware, stars can only orbit barycenters and not solar-system objects such as planets, moons and spacecraft. (I don't think there's any way to implement this scheme for v1.3 users though, because of the use of barycenters)

The problem I'm having is that the first barycenter works fine (Earth-Moon-Bary), but the second L5-Bary (which orbits the first) seems to have an inclination?? which I just cant get rid of. It needs to be placed always exactly at my L5 point, but it appears to travel above and below the Earth-Moon orbit, crossing twice at L5. It does however appear to track L5 around the orbit (which is good).

Is anyone able to help me out with this ? (see extracts from SSC's below)

The other thing I have noticed is that it seems that the Barycenter elements have to be expressed in AU's rather than KM's, and YRs rather than days. This doesn't make it any easier to clone my existing orbits as I don't know what the exact conversion factors are (I'm currently assuming 149,600,000 km/AU and 365.25 days/year). I'm going to need to position them extremely accurately for this to work....
The 3 microstars need to be 120 degrees apart in circular orbits of between perhaps 8-16km's radius with a period of 2 minutes (so that they rotate with the 3 mirrors). I'll probably have to finely adjust their positions once I've got them roughly positioned at the mirrors, but because of the problem above, I'm currently about 3-400,000 kms away :!:

The other minor problems I have to work out, is:
1. how to point the axis of the habitats directly at Sol,
I think I've solved this one -- I realized that the axis of my models at L5 were pointing away 'above' the sun by an angle equivalent to the obliquity of the Earth, so I just adjusted the obliquity of my spacecraft by the same amount.
2. how to position one habitat above and one below the L5 orbital plane.
I'll prob. do this by specifying yet another orbit with a semi-major component equal to the required separation of the habitats, and a period equal to the age of the universe (so they won't be moving for a while :wink:)

3. the last problem is how to KEEP them pointing at the sun. (As the Earth -Moon system orbits the Sun, after 6 months they will be pointing directly away from the sun). So I need to move the orientation of their axes by approx. 1 deg per day (360/365.25) in the correct direction backwards along the plane of the Earth-Moon systems orbit around the Sun.
This WIKI explains the mechanics involved - http://en.wikipedia.org/wiki/O%27Neill_cylinder : As they orbit, the gyroscopic effect of the rotating cylinders would naturally cause the habitat's mirrors to stop pointing at the sun. O'Neill and his students carefully worked out a method of aiming the habitats. First, the pair of habitats can be rolled by operating the cylinders as momentum wheels. If one is slightly retarded, the two cylinders will rotate about each other. Once the plane formed by the two axes of rotation is perpendicular (in the roll axis) to the orbit, then the pair of cylinders can be yawed to aim at the sun, by exerting a force between the two sunward bearings: away from each other will cause both cylinders to gyroscopically precess, and the system will yaw in one direction, towards each other will cause yaw in the other direction.

Can the precession command perhaps be used to simulate this yaw? It will effectively be perpendicular to the axis of rotation.


extracts from:

SOLARSYS.SSC:

"Earth-Moon" "Sol"
{
Class "Invisible"

CustomOrbit "Earth-Moon"
EllipticalOrbit {
Period 1.0000
SemiMajorAxis 1.0000
Eccentricity 0.0167
Inclination 0.0001
AscendingNode 348.739
LongOfPericenter 102.947
MeanLongitude 100.464
}

Obliquity -23.45
RotationOffset 280.5 # offset at default epoch J2000

}

"Earth" "Sol/Earth-Moon"
{
Texture "earth.*"
NightTexture "earthnight.*"

# SpecularTexture "earth-spec.*"
Color [ 0.85 0.85 1.0 ]
SpecularColor [ 0.5 0.5 0.55 ]
SpecularPower 25.0
HazeColor [ 1 1 1 ]
HazeDensity 0.3
Radius 6378.140 # equatorial
# Oblateness 0.0034

# BumpMap "earthbump.*"
# BumpHeight 4.5

Atmosphere {
Height 60
Lower [ 0.43 0.52 0.65 ]
Upper [ 0.26 0.47 0.84 ]
Sky [ 0.40 0.6 1.0 ]
Sunset [ 1.0 0.6 0.2 ]
# Sunset [ 0.3 1.0 0.5 ]
CloudHeight 7
CloudSpeed 65
CloudMap "earth-clouds.*"
}

CustomOrbit "Earth"
EllipticalOrbit {
#Epoch 2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)
Period 27.321661
SemiMajorAxis 4700
Eccentricity 0 # 0.054900
Inclination 0
MeanAnomaly 0.00
}

RotationPeriod 23.9344694 # 23.93419
Obliquity -23.45
RotationOffset 280.5 # offset at default epoch J2000

Albedo 0.30
}

"L5" "Sol/Earth-Moon"
{
Class "Invisible"
Class "Moon"

#CustomOrbit "Moon"
EllipticalOrbit {
Epoch 2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)
Period 27.321661
SemiMajorAxis 379700
Eccentricity 0.054900
Inclination 5.15
AscendingNode 220.288958 # at epoch
ArgOfPericenter 301.622765 # at epoch
MeanAnomaly 255.352094 # at epoch
}
Radius 1.0
}

"Moon" "Sol/Earth-Moon"
{
Texture "moon.*"
BumpMap "moonbump.*"
BumpHeight 0.3

Radius 1737.53
# Oblateness 0.002

#CustomOrbit "moon"
EllipticalOrbit {
Epoch 2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)

Period 27.321661
SemiMajorAxis 379700
Eccentricity 0.054900
Inclination 5.15
AscendingNode 220.288958 # at epoch
ArgOfPericenter 301.622765 # at epoch
MeanAnomaly 315.352094 # at epoch
}

Obliquity 23.45 # mean axis
EquatorAscendingNode 0.0 # mean axis
RotationOffset 38

Albedo 0.12
}

"L4" "Sol/Earth-Moon"
{
Class "Invisible"
Class "Moon"

#CustomOrbit "Moon"
EllipticalOrbit {
Epoch 2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)
Period 27.321661
SemiMajorAxis 379700
Eccentricity 0.054900
Inclination 5.15
AscendingNode 220.288958 # at epoch
ArgOfPericenter 301.622765 # at epoch
MeanAnomaly 15.352094 # at epoch

}

}

==============================
NEARSTARS.STC:


Barycenter "Earth-Moon-Bary"
{
OrbitBarycenter "Sol"
EllipticalOrbit {
Period 1.0000
SemiMajorAxis 1.0000
Eccentricity 0.0167
Inclination 0.0001
AscendingNode 348.739
LongOfPericenter 102.947
MeanLongitude 100.464
}
}

Barycenter "L5-Bary"
{
OrbitBarycenter "Earth-Moon-Bary"
EllipticalOrbit {
Epoch 2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)
Period 0.074802631 #27.321661 - in YRS
SemiMajorAxis 0.002538101604278
Eccentricity 0.054900
Inclination -5.15
AscendingNode 220.288958 # at epoch
ArgOfPericenter 301.622765 # at epoch
MeanAnomaly 255.352094 # at epoch
}
}

"Microstar"
{
OrbitBarycenter "L5-Bary"
EllipticalOrbit
{
Period 0.000003803 # 2 MINUTES #0.00336550943 # in years
SemiMajorAxis 0.000000107 # 16KM in AU
Eccentricity 0
}
SpectralType "M"
AbsMag 27
Radius 0.5 # override as we can't set AbsMag low enough!
}


========================
L5 OBJECTS.SSC:

"L5 Nearside" "Sol/Earth-Moon/L5"
{
Class "Spacecraft"
#Beginning "2001 01 01 12:00:00"
#Mesh "L5 Cylinder Window Glass and Clouds DSTAR.3ds"
#Mesh "L5 Cylinder.3ds"
Mesh "_test.3ds"
Radius 27.200 #3600m radius generates Earth gravity at rim

EllipticalOrbit {
Period 89
SemiMajorAxis 30 #200 miles altitude
MeanAnomaly 0
}


Obliquity 90
RotationPeriod -0.03333333333 #two minute rotation period
Precession 60 #0.070597587721118949178935806365832

Albedo 0.10
}

Posted: 07.01.2006, 15:51
by selden
Yes, I know it's not the usual sort of thing to do with a star, but the idea is that the microstars (maybe only a few 10's of metres in radius) would simulate the reflection of the sun in the 'mirrors' of my O'Neill habitats, and enable me to project light into the interior of the habitats, giving a realistic simulation of life inside.


Unfortunately, 3D models in Celestia currently do not cast shadows, nor can they have shadows cast onto them. Shadows, whether from one light source or several, are cast only on and by Celestia's internal spherical and ring models. ( Ring shadows are limited, too: they are cast only on and by the object that the ring orbits. Shadows of rings are not drawn on moons or cast by moons onto rings, for example. )

For now, at least, Celestia only shades 3D models' surfaces depending on where the local surface vector points. If it points toward a light source, then the surface is illuminated. If it points away, then the surface is drawn dark.

Posted: 07.01.2006, 16:05
by selden
A few quick comments about the SSC files above:

CustomOrbit refers to code inside Celestia.
The name of the CustomOrbit must match the name of a routine coded into Celestia. If it doesn't match, the CustomOrbit is ignored with no error message.

CustomOrbit "Earth-Moon"
does nothing, while
CustomOrbit "Earth"

is recognized and overrides the subsequent EllipticalOrbit declaration.

In other words, both declarations should be deleted.

Posted: 07.01.2006, 17:01
by Chuft-Captain
selden wrote:Unfortunately, 3D models in Celestia currently do not cast shadows, nor can they have shadows cast onto them. Shadows, whether from one light source or several, are cast only on and by Celestia's internal spherical and ring models. ( Ring shadows are limited, too: they are cast only on and by the object that the ring orbits. Shadows of rings are not drawn on moons or cast by moons onto rings, for example. )

For now, at least, Celestia only shades 3D models' surfaces depending on where the local surface vector points. If it points toward a light source, then the surface is illuminated. If it points away, then the surface is drawn dark.


Thanks Selden, that'll do. I'll be happy just to get light into the cylinders with the "mirror-stars". Lack of shadows won't worry me too much. I'll position the mirrors for midday (or at least a reasonably high sun-angle).

Thanks also for your comments on SSC files. I'll get rid of the CustomOrbits (Maybe that will miraculously fix the inclination of the Orbit!)

Posted: 07.01.2006, 17:06
by selden
The problem I'm having is that the first barycenter works fine (Earth-Moon-Bary), but the second L5-Bary (which orbits the first) seems to have an inclination?? which I just cant get rid of.


In Celestia, the orbits of objects orbiting around planets are referenced to the equatorial plane of the planet. However, the orbit of Earth's Moon is almost exactly in the plane of the Ecliptic. It's not in the Earth's equatorial plane.

The Earth's equatorial plane is tilted 23.45 degrees away from the Ecliptic. You included this tilt (called Obliquity in Celestia) in your definition of the "invisible" Earth-Moon orbit. As a result, objects orbiting around that pseudo-barycenter orbit at a tilt with respect to the Moon's orbit. Solution: set the Obliquity of the "Earth-Moon" invisible object to be the same as the tilt of the Moon's orbit, about 5.15 degrees. Of course, you'll also have to set the other orbital parameters correctly.

While debugging, of course, set the class names to be "planet" or "moon" (note: no capitalization) so their orbits will be visible.