From: Arnt K. <ar...@c2...> - 2009-11-06 18:49:13
|
On Fri, 06 Nov 2009 09:43:25 -0700, John wrote in message <4AF...@av...>: > On 11/06/2009 03:43 AM, Erik Hofman wrote: > > > So what I basically need is: > > 1. Orientate the Sun Position quad(lat,lon) to line op with > > SGQuatd::fromLonLat(SGGeod::fromRad(0,0)) > > 2. do the sunrise/sunset positioning math at (0,0) > > 3. rotate the result back to SGQuatd::fromLonLat(geodViewPos); > > > > But maybe I expect too much from quats? > > Well, it is safe to say that there is more to celestial > mechanics than just quaternions. Some things are best > done using quaternions, while other things are best > done using plain old vectors, et cetera. > > Here's how I would do the celestial mechanics: > > This is simplest in the earth-centered nonrotating > frame (ECN). > > Note: I couldn't find a decent reference defining > the various reference frames, so I wrote one: > http://www.av8n.com/physics/coords.htm > It's still somewhat drafty. Suggestions are welcome. > > We know where the sun is in the ECN frame. > -- It is located at the point (declination, right ascension) > =(0,0) at the moment of the vernal equinox. > -- It goes around the ecliptic once per year. This > is a rotation, well described by a quaternion. The > rate of rotation is slightly nonuniform, as described > by the so-called "equation of time". > > Given the direction to the sun, we can easily calculate > the position of the sun in absolute space. This is a > vector Rs from the center of the earth to the center of > the sun. This is a vector in the ECN system. > > Given the (lan,lon) of the point of interest, we can > calculate the vector R1 from the center of the earth to > that point. This requires accounting for the lat,lon of > the point of interest, as well as the rotation of the > earth (elapsed time since the vernal equinox). > > By adding vectors tip to tail (or in this case subtracting > them) we can calculate the vector from the point of > interest to the center of the sun. > > It is then straightforward to find the elevation of > this vector above the local horizontal plane. This > is easily done using a projection operator, which > is constructed from the aforementioned R1 vector. > > It may be tempting to use similar techniques to > express the azimuth of the sun relative to the local > north, but this scares me because it is guaranteed > to fail at the poles. The local vertical direction > is always well defined, and the local horizontal is > always well defined, but directions /within/ the > horizontal plane are not so easily defined at the > poles. That's why I'm always leery of using the NED > frame (or ENU frame). It's better to convert from > ECN (or ECEF) directly to the camera frame. > > > That's a rather terse outline; if anybody wants the > next level of detail, let me know. ..just playing the Devil's advocate; Imagine an aircraft or "aerospacecraft" flying from KOSH to Mars the planet to fuel up for a few wee trips to those Earth-like planets we ought to find out there, before we need to get out of this smoking wreck? ;o) -- ..med vennlig hilsen = with Kind Regards from Arnt... ;o) ...with a number of polar bear hunters in his ancestry... Scenarios always come in sets of three: best case, worst case, and just in case. |