CS 450 / 550
Fall Quarter 2023
Final Project Proposal Comments
This page was last updated: September 24, 2023
Clock
Clock hands, by themselves, are Too Easy. Here's why:
glPushMatrix( );
glRotatef( 360.*12.*Time - 90., 0., 0., -1. );
DRAW THE BIG HAND
glPopMatrix( );
glPushMatrix( );
glRotatef( 360.*Time - 90., 0., 0., -1. );
DRAW THE LITTLE HAND
glPopMatrix( );
Done!
However, if you want to add a pendulum and gears that function correctly,
then that would make it OK.
Note: real gear teeth are often made in nonlinear shapes, such as an
involute shape.
Feel free to make yours out of nice linear trapezoids.
Solar System
If you are doing a solar system, do this:
- If you scale everything accurately, you will see nothing on the screen.
Space really is mostly empty space.
-
Therefore you have to exaggerate one, and maybe both of:
- Planet diameter
- Planet orbital radius
-
Thus, treat this as an educational project, not a NASA scientific project.
Pretend you are explaining to a group of schoolchildren how the solar system works.
-
When you exaggerate, keep everything to scale,
except, possibly the Sun's diameter.
If Planet A's diameter is twice as big as Planet B's in real life,
make sure it is still twice as big in your scaled-life.
And so on.
-
You need to follow Kepler's Third law of planetary motion:
Orbital Period is proportional to OrbitalRadius3/2 = pow( OrbitalRadius, 3./2. )
Get this right!
-
But, you will also need to scale the orbital periods, or the outer
planets will not appear to move at all.
Again, keep the orbital periods proportional.
If Planet A's orbital period is twice as long as Planet B's in Kepler's Third Law,
make sure it is still twice as long in your scaled-life.
-
Even though the planets' orbits are really elliptical,
you may treat them as circular.
(They are only elliptical by a little bit.)
-
Be careful of Temporal Aliasing
(the wagon-wheel-spokes-rotating-backwards effect)
on the fast-orbiting inner planets.
This is part of what makes this project interesting.
Pick an orbital period scale factor where the inner planets do not move too quickly,
but the outer planets do not move too slowly.
-
Find good textures or good coloring for the sun and all the planets.
NASA has some at:
https://nasa3d.arc.nasa.gov/images.
-
Have a good outside viewing option where we can see everything.
-
Do point-light lighting from the Sun.
Throw a little ambient in there too.
-
Don't light the sun. Just texture it with no lighting using GL_REPLACE.
-
The planets must have lit textures using GL_MODULATE.
-
You must draw the orbit circles for the planets.
-
Do not call the OsuSphere( ) function directly from inside of your Display( ) callback.
You would end up paying for all those sine and cosine calls each display update,
which would harm your graphics performance.
Instead, put each planet into its own Display List and then glCallList( ) it from within Display( ).
-
NASA has some really good 3D overall resources here:
https://nasa3d.arc.nasa.gov/
and here:
https://svs.gsfc.nasa.gov/
You can find a good Moon texture here:
https://svs.gsfc.nasa.gov/4720
-
There are also some great things here:
https://www.solarsystemscope.com/textures/
It's not a requirement, but if you want to make your solar system look like it is really in space,
surround it with a gigantic sphere onto which a star field image has been texture-mapped.
Sun-Earth-Moon
If you are doing a Sun-Earth-Moon system, do this:
- Same comments as above on exaggeration.
- Find good textures or good coloring for the Sun, Earth, and Moon by looking here:
https://nasa3d.arc.nasa.gov/images
or here:
https://svs.gsfc.nasa.gov/4720
-
There are also some great things here:
https://www.solarsystemscope.com/textures/
- Have a good outside viewing option where we can see everything.
-
Don't light the sun. Just texture it with no lighting using GL_REPLACE.
-
The Earth and Moon must have lit textures using GL_MODULATE.
-
To make this sufficiently difficult,
have a viewing option where the eye is somewhere on the Earth, looking somewhere interesting.
-
To make this sufficiently difficult,
have a viewing option where the eye is somewhere on the Moon, looking somewhere interesting.
-
Those Earth and Moon viewing positions need to be able to be changed during animation
-
Try to find the movie First Man.
There are lots of good views from the moon there!
It's not a requirement, but if you want to make your sun-earth-moon look like it is really in space,
surround it with a gigantic sphere onto which a star field image has been texture-mapped.
Shadows
Shadows are tricky -- even with the shadow notes and sample code.
I'm not saying "don't use them", just that, as a two-pass algorithm, they are tricky.
Stars Orbiting in a Galaxy
Everyone who ever tries this using gravitational physics alone, quickly discovers that you need to
give each star a proper initial angular velocity to keep it in an orbit.
If you just place the stars, but don't give them an initial rotational velocity,
gravitational forces make them all glom together in the middle.
Atom
If you are proposing to do a simple nucleus-electrons atom (like on The Big Bang Theory),
that is Too Easy.
Find some way to make it harder, and get me to approve it.
Maybe do some of the orbitals (1s, 2s, 2p, d*, f*) and get the shapes right.