Generating Artificial Asteroids
Written by Paul Bourke
February 2001
The following describes a method that was used to create a variety of
forms resembling asteroids.
The asteroids were going to be rendered and for these
examples PovRay did the rendering. The approach was to start with a
sphere and create a number of positive or negative bulges,
the bulges have a distribution of sizes (radii) and height/depth.
If normal polar coordinate spheres were used a pinching would occur at
the poles, in addition, that method doesn't make the most efficient use of
polygons. For these reasons an approximately even distribution of
triangular facets was used, this is created by iteratively tessellating
platonic solids, in particular,
tetrahedra. All the examples here were made from unit spheres with either
8*46 or 8*47 triangular facets.
|
|
global_settings {
ambient_light
rgb <1.0,1.0,1.0>
}
background {
color rgb <0,0,0>
}
light_source {
<0,3,-2>
color rgb <1,1,1>
}
camera {
location <0,0,-4>
up y
right 4*x/3
angle 60
sky <0,1,0>
look_at <0,0,0>
}
|
|
To create a bulge an "impact" center is chosen at random on the surface of
the current asteroid. All vertices within a chosen radius are perturbed
normal to the surface, the degree of perturbation falls off linearly
with distance away from the center of impact. The user controls the
radius range, depth range, and the number of impacts. This seemed to give
sufficient control over the final shape. Planet type objects are created
with small shallow bulges (with respect to the initial sphere).
More extreme cases are formed as the radius and depth are increased.
|
#declare asteroidfinish = finish {
ambient 0.5
diffuse 1
specular 0.3
roughness .1
}
#declare asteroidnormal = normal {
bumps 0.5
scale 0.02
}
#declare asteroidmat = texture {
pigment {
color rgb <0.5,0.5,0.5>
}
finish { asteroidfinish }
normal { asteroidnormal }
}
|
mesh {
triangle {
<0.5552, 0.0000,0.4155>,
<0.6057,-0.0145,0.4212>,
<0.5902, 0.0141,0.4120>
texture { asteroidmat }
}
triangle {
< 0.0000,0.6127,0.4415>,
< 0.0141,0.6311,0.4261>,
<-0.0145,0.6507,0.4377>
texture { asteroidmat }
}
:
:
:
triangle {
<-0.4130,-0.7390,-0.4550>,
<-0.4055,-0.7686,-0.4407>,
<-0.4227,-0.7487,-0.4349>
texture { asteroidmat }
}
rotate <clock*171.11,
clock*666.71,
clock*333.33>
}
|
|
Note the rotation at the end of the PovRay mesh primitive, it keeps the
asteroid rotating in animation sequences without obvious cyclic
repetition.
The real thing
Craters
An attempt at craters was made by perturbing the surface with
a radial Gaussian function. In order to achieve satisfactory
resolution the triangle count was increased to about half a million,
the rendering time was still under 1 minute per frame.
A better model of crater profile would undoubtedly help, for example
the variation in shape can be seen from some of the moon craters
shown below.
Kleopatra "dog-bone" asteroid
The following asteroid is modelled after the 216 Kleopatra
asteroid. The basic geometry is based upon the Cassini oval
and bulges or craters are added to various extents. The source
code that created the PovRay models is:
gencassini.c.
The real thing, asteroid 216 Kleopatra
The so called "dog bone asteroid" shown below is imaged from
Arecibo radar in Puerto Rico. (Image courtesy JPL).
The asteroid is just over 210km long and at most 100km thick,
and is located about 171,000,000km from Earth (around the same distance
as Jupiter).
Asteroid topology models
Written by Paul Bourke
September 2002
Model sources from JPL NASA, S. Hudson,
Mitchell, S. Ostro, and K. Rosema.
2063 Bacchus --
bacchus.tri --
bacchus.pov
Discovered: April 24, 1977 by Charles Kowal
Size: 1.1km x 2.6km
Rotational period: 14.9 hours
Orbital period: 2.73735 years
4769 Castalia --
castalia.tri --
castalia.pov
Discovered: August 9, 1989, by Eleanor Helin
Size: 1.8km x 0.8km
Rotational period: 4.07 hours
Orbital period: 1.1 years
433 Eros --
eros.tri --
eros.pov
Discovered: August 13, 1898, by Gustav Witt
Size: 33km x 13km x 13km
Rotational period: 5.27 hours
Orbital period: 1.76 years
1620 Geographos --
geographos.tri --
geographos.pov
Discovered: September 14, 1951
Size: 5.1km x 1.8km
Rotational period: 5.22 hours
Orbital period: 1.39 years
6489 Golevka --
golevka.tri --
golevka.pov
Discovered: May 10, 1991
Size: 0.35km x 0.25km
Rotational period: 6.0264 hours
Orbital period: 3.98561 years
216 Kleopatra --
kleopatra.tri --
kleopatra.pov
Discovered: 1880
Size: 217km x 94km x 81km
Rotational period: 5.385 hours
1998 Ky26 --
ky26.tri --
ky26.pov
Discovered: June 1, 1998
Size: 30m diameter
Rotational period: 10.7 minutes
Orbital period: 1.36766 years
4179 Toutatis --
toutatis.tri --
toutatis.pov
Discovered: January 4, 1989 by C.Pollas.
Size: 4.6km x 2.4km x 1.9km
Rotational period: 5.4 and 7.3 Earth days
Orbital period: 3.98 years
3D StudioMax script
that reads the ".tri" models found here.
Rapid prototype models
|