From: curt Date: Wed, 7 Jan 1998 03:06:12 +0000 (+0000) Subject: Moved to ../Astro/ X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=37c910d1de93b9a16a0e9f1574abd6eab5ceda86;p=flightgear.git Moved to ../Astro/ --- diff --git a/Scenery/astro.c b/Scenery/astro.c deleted file mode 100644 index d49af7010..000000000 --- a/Scenery/astro.c +++ /dev/null @@ -1,152 +0,0 @@ -/************************************************************************** - * astro.c - * - * Written by Durk Talsma. Started November 1997, for use with the flight - * gear project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include -#include -#include -#include - -#include -#include "../XGL/xgl.h" - -#include "astro.h" -#include "moon.h" -#include "orbits.h" -#include "planets.h" -#include "stars.h" -#include "sun.h" - -#include "../Include/constants.h" -#include "../Include/general.h" - -#include "../Main/views.h" -#include "../Aircraft/aircraft.h" -#include "../Time/fg_time.h" - -static double prevUpdate = 0; - - -/* Initialize Astronomical Objects */ -void fgAstroInit() { - struct fgTIME *t; - t = &cur_time_params; - - /* Initialize the orbital elements of sun, moon and mayor planets */ - fgSolarSystemInit(*t); - - /* Initialize the Stars subsystem */ - fgStarsInit(); - - /* Initialize the sun's position */ - fgSunInit(); - - /* Intialize the moon's position */ - fgMoonInit(); -} - - -/* Render Astronomical Objects */ -void fgAstroRender() { - struct fgFLIGHT *f; - struct fgLIGHT *l; - struct fgVIEW *v; - struct fgTIME *t; - double angle; - - f = ¤t_aircraft.flight; - l = &cur_light_params; - t = &cur_time_params; - v = ¤t_view; - - /* a hack: Force sun and moon position to be updated on an hourly basis */ - if (((t->gst - prevUpdate) > 1) || (t->gst < prevUpdate)) { - prevUpdate = t->gst; - fgSunInit(); - fgMoonInit(); - } - - /* set the sun position */ - /* xglLightfv( GL_LIGHT0, GL_POSITION, l->sun_vec_inv ); */ - - xglPushMatrix(); - - /* Translate to view position */ - xglTranslatef( v->view_pos.x, v->view_pos.y, v->view_pos.z ); - - /* Rotate based on gst (side real time) */ - angle = t->gst * 15.041085; /* should be 15.041085, Curt thought it was 15*/ -#ifdef DEBUG - printf("Rotating astro objects by %.2f degrees\n",angle); -#endif - xglRotatef( angle, 0.0, 0.0, -1.0 ); - - /* render the moon */ - fgMoonRender(); - - /* render the stars */ - fgStarsRender(); - - /* render the sun */ - fgSunRender(); - - xglPopMatrix(); -} - - -/* $Log$ -/* Revision 1.10 1997/12/19 16:45:01 curt -/* Working on scene rendering order and options. -/* - * Revision 1.9 1997/12/18 23:32:35 curt - * First stab at sky dome actually starting to look reasonable. :-) - * - * Revision 1.8 1997/12/15 23:54:57 curt - * Add xgl wrappers for debugging. - * Generate terrain normals on the fly. - * - * Revision 1.7 1997/12/15 20:59:09 curt - * Misc. tweaks. - * - * Revision 1.6 1997/12/12 21:41:27 curt - * More light/material property tweaking ... still a ways off. - * - * Revision 1.5 1997/12/12 19:52:54 curt - * Working on lightling and material properties. - * - * Revision 1.4 1997/12/11 04:43:56 curt - * Fixed sun vector and lighting problems. I thing the moon is now lit - * correctly. - * - * Revision 1.3 1997/12/10 22:37:49 curt - * Prepended "fg" on the name of all global structures that didn't have it yet. - * i.e. "struct WEATHER {}" became "struct fgWEATHER {}" - * - * Revision 1.2 1997/12/09 04:25:33 curt - * Working on adding a global lighting params structure. - * - * Revision 1.1 1997/11/25 23:20:22 curt - * Initial revision. - * - */ diff --git a/Scenery/astro.h b/Scenery/astro.h deleted file mode 100644 index 4fa5150a1..000000000 --- a/Scenery/astro.h +++ /dev/null @@ -1,61 +0,0 @@ -/************************************************************************** - * astro.h - * - * Written by Durk Talsma. Started November 1997, for use with the flight - * gear project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef _ASTRO_H_ -#define _ASTRO_H_ - -#include -#include "stars.h" - -extern struct CelestialCoord - moonPos; - -extern float xMoon, yMoon, zMoon, xSun, ySun, zSun; -/* extern GLint moon, sun; */ -extern GLint stars[FG_STAR_LEVELS]; - - -/* Initialize Astronomical Objects */ -void fgAstroInit(); - -/* Render Astronomical objects */ -void fgAstroRender(); - - -#endif /* _ASTRO_H_ */ - - -/* $Log$ -/* Revision 1.3 1997/12/17 23:13:46 curt -/* Began working on rendering the sky. -/* - * Revision 1.2 1997/12/11 04:43:56 curt - * Fixed sun vector and lighting problems. I thing the moon is now lit - * correctly. - * - * Revision 1.1 1997/11/25 23:20:23 curt - * Initial revision. - * - */ diff --git a/Scenery/moon.c b/Scenery/moon.c deleted file mode 100644 index dd39f0722..000000000 --- a/Scenery/moon.c +++ /dev/null @@ -1,335 +0,0 @@ -/************************************************************************** - * moon.c - * Written by Durk Talsma. Started October 1997, for the flight gear project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include -#include -#include "../XGL/xgl.h" - -#include "orbits.h" -#include "moon.h" - -#include "../Aircraft/aircraft.h" -#include "../Include/constants.h" -#include "../Include/general.h" -#include "../Main/views.h" -#include "../Time/fg_time.h" - -struct CelestialCoord moonPos; - -static float xMoon, yMoon, zMoon; -static GLint moon; - -/* -static GLfloat vdata[12][3] = -{ - {-X, 0.0, Z }, { X, 0.0, Z }, {-X, 0.0, -Z}, {X, 0.0, -Z }, - { 0.0, Z, X }, { 0.0, Z, -X}, {0.0, -Z, -X}, {0.0, -Z, -X}, - { Z, X, 0.0 }, { -Z, X, 0.0}, {Z, -X, 0.0 }, {-Z, -X, 0.0} -}; - -static GLuint tindices[20][3] = -{ - {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, - {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, - {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, - {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} -};*/ - -/* ------------------------------------------------------------- - This section contains the code that generates a yellow - Icosahedron. It's under development... (of Course) -______________________________________________________________*/ -/* -void NormalizeVector(float v[3]) -{ - GLfloat d = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - if (d == 0.0) - { - printf("zero length vector\n"); - return; - } - v[0] /= d; - v[1] /= d; - v[2] /= d; -} - -void drawTriangle(float *v1, float *v2, float *v3) -{ - xglBegin(GL_POLYGON); - //xglBegin(GL_POINTS); - xglNormal3fv(v1); - xglVertex3fv(v1); - xglNormal3fv(v2); - xglVertex3fv(v2); - xglNormal3fv(v3); - xglVertex3fv(v3); - xglEnd(); -} - -void subdivide(float *v1, float *v2, float *v3, long depth) -{ - GLfloat v12[3], v23[3], v31[3]; - GLint i; - - if (!depth) - { - drawTriangle(v1, v2, v3); - return; - } - for (i = 0; i < 3; i++) - { - v12[i] = (v1[i] + v2[i]); - v23[i] = (v2[i] + v3[i]); - v31[i] = (v3[i] + v1[i]); - } - NormalizeVector(v12); - NormalizeVector(v23); - NormalizeVector(v31); - subdivide(v1, v12, v31, depth - 1); - subdivide(v2, v23, v12, depth - 1); - subdivide(v3, v31, v23, depth - 1); - subdivide(v12, v23, v31,depth - 1); - -} */ -/* -void display(void) -{ - int i; - xglClear(GL_COLOR_BUFFER_BIT); - xglPushMatrix(); - xglRotatef(spin, 0.0, 0.0, 0.0); - xglColor3f(1.0, 1.0, 0.0); -// xglBegin(GL_LINE_LOOP); - for (i = 0; i < 20; i++) - { - - //xglVertex3fv(&vdata[tindices[i][0]][0]); - //xglVertex3fv(&vdata[tindices[i][1]][0]); - //xglVertex3fv(&vdata[tindices[i][2]][0]); - - subdivide(&vdata[tindices[i][0]][0], - &vdata[tindices[i][1]][0], - &vdata[tindices[i][2]][0], 3); - - - } -// xglEnd(); - // xglFlush(); - xglPopMatrix(); - glutSwapBuffers(); -} */ - -/* -------------------------------------------------------------- - - This section contains the code that calculates the actual - position of the moon in the night sky. - -----------------------------------------------------------------*/ - -struct CelestialCoord fgCalculateMoon(struct OrbElements params, - struct OrbElements sunParams, - struct fgTIME t) -{ - struct CelestialCoord - geocCoord, topocCoord; - - - double - eccAnom, ecl, lonecl, latecl, actTime, - xv, yv, v, r, xh, yh, zh, xg, yg, zg, xe, ye, ze, - Ls, Lm, D, F, mpar, gclat, rho, HA, g; - - struct fgAIRCRAFT *a; - struct fgFLIGHT *f; - - a = ¤t_aircraft; - f = &a->flight; - -/* calculate the angle between ecliptic and equatorial coordinate system */ - actTime = fgCalcActTime(t); - ecl = fgDegToRad(23.4393 - 3.563E-7 * actTime); // in radians of course - - /* calculate the eccentric anomaly */ - eccAnom = fgCalcEccAnom(params.M, params.e); - - /* calculate the moon's distance (d) and true anomaly (v) */ - xv = params.a * ( cos(eccAnom) - params.e); - yv = params.a * ( sqrt(1.0 - params.e*params.e) * sin(eccAnom)); - v =atan2(yv, xv); - r = sqrt(xv*xv + yv*yv); - - /* estimate the geocentric rectangular coordinates here */ - xh = r * (cos(params.N) * cos(v + params.w) - sin(params.N) * sin(v + params.w) * cos(params.i)); - yh = r * (sin(params.N) * cos(v + params.w) + cos(params.N) * sin(v + params.w) * cos(params.i)); - zh = r * (sin(v + params.w) * sin(params.i)); - - /* calculate the ecliptic latitude and longitude here */ - lonecl = atan2( yh, xh); - latecl = atan2( zh, sqrt( xh*xh + yh*yh)); - - /* calculate a number of perturbations */ - Ls = sunParams.M + sunParams.w; - Lm = params.M + params.w + params.N; - D = Lm - Ls; - F = Lm - params.N; - - lonecl += fgDegToRad( - - 1.274 * sin (params.M - 2*D) // the Evection - + 0.658 * sin (2 * D) // the Variation - - 0.186 * sin (sunParams.M) // the yearly variation - - 0.059 * sin (2*params.M - 2*D) - - 0.057 * sin (params.M - 2*D + sunParams.M) - + 0.053 * sin (params.M + 2*D) - + 0.046 * sin (2*D - sunParams.M) - + 0.041 * sin (params.M - sunParams.M) - - 0.035 * sin (D) // the Parallactic Equation - - 0.031 * sin (params.M + sunParams.M) - - 0.015 * sin (2*F - 2*D) - + 0.011 * sin (params.M - 4*D) - ); /* Pheeuuwwww */ - latecl += fgDegToRad( - - 0.173 * sin (F - 2*D) - - 0.055 * sin (params.M - F - 2*D) - - 0.046 * sin (params.M + F - 2*D) - + 0.033 * sin (F + 2*D) - + 0.017 * sin (2 * params.M + F) - ); /* Yep */ - - r += ( - - 0.58 * cos(params.M - 2*D) - - 0.46 * cos(2*D) - ); /* Ok! */ - - xg = r * cos(lonecl) * cos(latecl); - yg = r * sin(lonecl) * cos(latecl); - zg = r * sin(latecl); - - xe = xg; - ye = yg * cos(ecl) - zg * sin(ecl); - ze = yg * sin(ecl) + zg * cos(ecl); - - - - - geocCoord.RightAscension = atan2(ye, xe); - geocCoord.Declination = atan2(ze, sqrt(xe*xe + ye*ye)); - - /* New since 25 december 1997 */ - /* Calculate the moon's topocentric position instead of it's geocentric! */ - - mpar = asin( 1 / r); /* calculate the moon's parrallax, i.e. the apparent size of the - (equatorial) radius of the Earth, as seen from the moon */ - gclat = FG_Latitude - 0.083358 * sin (2 * fgDegToRad( FG_Latitude)); - rho = 0.99883 + 0.00167 * cos(2 * fgDegToRad(FG_Latitude)); - - if (geocCoord.RightAscension < 0) - geocCoord.RightAscension += (2*FG_PI); - - HA = t.lst - (3.8197186 * geocCoord.RightAscension); - - g = atan (tan(gclat) / cos( (HA / 3.8197186))); - - - - topocCoord.RightAscension = geocCoord.RightAscension - mpar * rho * cos(gclat) * sin(HA) / cos(geocCoord.Declination); - topocCoord.Declination = geocCoord.Declination - mpar * rho * sin(gclat) * sin(g - geocCoord.Declination) / sin(g); - return topocCoord; -} - - -void fgMoonInit() { - struct fgLIGHT *l; - static int dl_exists = 0; - - printf("Initializing the Moon\n"); - - l = &cur_light_params; - - /* position the moon */ - fgSolarSystemUpdate(&(pltOrbElements[1]), cur_time_params); - moonPos = fgCalculateMoon(pltOrbElements[1], pltOrbElements[0], - cur_time_params); -#ifdef DEBUG - printf("Moon found at %f (ra), %f (dec)\n", moonPos.RightAscension, - moonPos.Declination); -#endif - - xMoon = 60000.0 * cos(moonPos.RightAscension) * cos(moonPos.Declination); - yMoon = 60000.0 * sin(moonPos.RightAscension) * cos(moonPos.Declination); - zMoon = 60000.0 * sin(moonPos.Declination); - - if ( !dl_exists ) { - dl_exists = 1; - - /* printf("First time through, creating moon display list\n"); */ - - moon = xglGenLists(1); - xglNewList(moon, GL_COMPILE ); - - /* xglMaterialfv(GL_FRONT, GL_AMBIENT, l->scene_clear); - xglMaterialfv(GL_FRONT, GL_DIFFUSE, moon_color); */ - - - glutSolidSphere(1.0, 10, 10); - - xglEndList(); - } -} - - -/* Draw the moon */ -void fgMoonRender() { - struct fgLIGHT *l; - GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 }; - - /* printf("Rendering moon\n"); */ - - l = &cur_light_params; - - xglMaterialfv(GL_FRONT, GL_AMBIENT, l->sky_color ); - xglMaterialfv(GL_FRONT, GL_DIFFUSE, white); - - xglPushMatrix(); - xglTranslatef(xMoon, yMoon, zMoon); - xglScalef(1400, 1400, 1400); - - xglCallList(moon); - - xglPopMatrix(); -} - - -/* $Log$ -/* Revision 1.16 1998/01/06 01:20:24 curt -/* Tweaks to help building with MSVC++ -/* - * Revision 1.15 1998/01/05 18:44:35 curt - * Add an option to advance/decrease time from keyboard. - * - * Revision 1.14 1997/12/30 20:47:50 curt - * Integrated new event manager with subsystem initializations. - * - * Revision 1.13 1997/12/30 16:41:00 curt - * Added log at end of file. - * - */ diff --git a/Scenery/moon.h b/Scenery/moon.h deleted file mode 100644 index a8e903860..000000000 --- a/Scenery/moon.h +++ /dev/null @@ -1,67 +0,0 @@ -/************************************************************************** - * moon.h - * - * Written 1997 by Durk Talsma, started October, 1997. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef _MOON_H_ -#define _MOON_H_ - - -#include "orbits.h" - -#include "../Time/fg_time.h" -#include - -#define X .525731112119133606 -#define Z .850650808352039932 - - - /* Initialize the Moon Display management Subsystem */ -void fgMoonInit(); - -/* Draw the Stars */ -void fgMoonRender(); - -struct CelestialCoord fgCalculateMoon(struct OrbElements Params, - struct OrbElements sunParams, - struct fgTIME t); - -extern struct OrbElements pltOrbElements[9]; - -#endif /* _MOON_H_ */ - - -/* $Log$ -/* Revision 1.4 1997/12/11 04:43:56 curt -/* Fixed sun vector and lighting problems. I thing the moon is now lit -/* correctly. -/* - * Revision 1.3 1997/11/25 19:25:35 curt - * Changes to integrate Durk's moon/sun code updates + clean up. - * - * Revision 1.2 1997/10/25 03:24:23 curt - * Incorporated sun, moon, and star positioning code contributed by Durk Talsma. - * - * Revision 1.1 1997/10/25 03:16:09 curt - * Initial revision of code contributed by Durk Talsma. - * - */ diff --git a/Scenery/orbits.c b/Scenery/orbits.c deleted file mode 100644 index 99ddd6353..000000000 --- a/Scenery/orbits.c +++ /dev/null @@ -1,196 +0,0 @@ -/************************************************************************** - * orbits.c - calculates the orbital elements of the sun, moon and planets. - * For inclusion in flight gear - * - * Written 1997 by Durk Talsma, started October 19, 1997. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include - -#include "orbits.h" - -#include "../Include/general.h" -#include "../Time/fg_time.h" - - -struct OrbElements pltOrbElements[9]; - - -double fgCalcActTime(struct fgTIME t) -{ - double - actTime, UT; - int year; - - /* a hack. This one introduces the 2000 problem into the program */ - year = t.gmt->tm_year + 1900; - - /* calculate the actual time, rember to add 1 to tm_mon! */ - actTime = 367 * year - 7 * - (year + ((t.gmt->tm_mon+1) + 9) / 12) / 4 + 275 * - (t.gmt->tm_mon+1) / 9 + t.gmt->tm_mday - 730530; - - UT = t.gmt->tm_hour + ((double) t.gmt->tm_min / 60); - /*printf("UT = %f\n", UT); */ - actTime += (UT / 24.0); - #define DEBUG 1 - #ifdef DEBUG - /* printf(" Actual Time:\n"); */ - /* printf(" current day = %f\t", actTime); */ - /* printf(" GMT = %d, %d, %d, %d, %d, %d\n", - year, t.gmt->tm_mon, t.gmt->tm_mday, - t.gmt->tm_hour, t.gmt->tm_min, t.gmt->tm_sec); */ - #endif - return actTime; -} - -/* convert degrees to radians */ -double fgDegToRad(double angle) -{ - return (angle * PIOVER180); -} - -double fgCalcEccAnom(double M, double e) -{ - double - eccAnom, E0, E1, diff; - - eccAnom = M + e * sin(M) * (1.0 + e * cos(M)); - /* iterate to achieve a greater precision for larger eccentricities */ - if (e > 0.05) - { - E0 = eccAnom; - do - { - E1 = E0 - (E0 - e * sin(E0) - M) / (1 - e * cos(E0)); - diff = abs(E0 - E1); - E0 = E1; - } - while (diff > fgDegToRad(0.001)); - return E0; - } - return eccAnom; -} - - - -void fgReadOrbElements(struct OrbElements *dest, FILE *src) -{ - char line[256]; - int i,j; - j = 0; - do - { - fgets(line, 256,src); - for (i = 0; i < 256; i++) - { - if (line[i] == '#') - line[i] = 0; - } - /*printf("Reading line %d\n", j++); */ - } - while (!(strlen(line))); - sscanf(line, "%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf\n", - &dest->NFirst, &dest->NSec, - &dest->iFirst, &dest->iSec, - &dest->wFirst, &dest->wSec, - &dest->aFirst, &dest->aSec, - &dest->eFirst, &dest->eSec, - &dest->MFirst, &dest->MSec); -} - - -void fgSolarSystemInit(struct fgTIME t) -{ - struct fgGENERAL *g; - char path[80]; - int i; - FILE *data; - - printf("Initializing solar system\n"); - - /* build the full path name to the orbital elements database file */ - g = &general; - path[0] = '\0'; - strcat(path, g->root_dir); - strcat(path, "/Scenery/"); - strcat(path, "Planets.dat"); - - if ( (data = fopen(path, "r")) == NULL ) - { - printf("Cannot open data file: '%s'\n", path); - return; - } - #ifdef DEBUG - printf(" reading datafile %s\n", path); - #endif - - /* for all the objects... */ - for (i = 0; i < 9; i ++) - { - /* ...read from the data file ... */ - fgReadOrbElements(&pltOrbElements[i], data); - /* ...and calculate the actual values */ - fgSolarSystemUpdate(&pltOrbElements[i], t); - } - -} - - -void fgSolarSystemUpdate(struct OrbElements *planet, struct fgTIME t) -{ - double - actTime; - - actTime = fgCalcActTime(t); - - /* calculate the actual orbital elements */ - planet->M = fgDegToRad(planet->MFirst + (planet->MSec * actTime)); // angle in radians - planet->w = fgDegToRad(planet->wFirst + (planet->wSec * actTime)); // angle in radians - planet->N = fgDegToRad(planet->NFirst + (planet->NSec * actTime)); // angle in radians - planet->i = fgDegToRad(planet->iFirst + (planet->iSec * actTime)); // angle in radians - planet->e = planet->eFirst + (planet->eSec * actTime); - planet->a = planet->aFirst + (planet->aSec * actTime); -} - - -/* $Log$ -/* Revision 1.6 1997/12/30 20:47:52 curt -/* Integrated new event manager with subsystem initializations. -/* - * Revision 1.5 1997/12/15 23:55:02 curt - * Add xgl wrappers for debugging. - * Generate terrain normals on the fly. - * - * Revision 1.4 1997/12/10 22:37:51 curt - * Prepended "fg" on the name of all global structures that didn't have it yet. - * i.e. "struct WEATHER {}" became "struct fgWEATHER {}" - * - * Revision 1.3 1997/11/25 23:20:44 curt - * Changed planets.dat Planets.dat - * - * Revision 1.2 1997/11/25 19:25:36 curt - * Changes to integrate Durk's moon/sun code updates + clean up. - * - * Revision 1.1 1997/10/25 03:16:10 curt - * Initial revision of code contributed by Durk Talsma. - * - */ diff --git a/Scenery/orbits.h b/Scenery/orbits.h deleted file mode 100644 index c51b305e4..000000000 --- a/Scenery/orbits.h +++ /dev/null @@ -1,90 +0,0 @@ -/************************************************************************** - * orbits.h - calculates the orbital elements of the sun, moon and planets. - * For inclusion in flight gear - * - * Written 1997 by Durk Talsma, started October 19, 1997. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef ORBITS_H -#define ORBITS_H - - -#include -#include - -#include "../Time/fg_time.h" - - - -#define STANDARDEPOCH 2000 -#define PIOVER180 1.74532925199433E-002 - -struct SunPos { - double xs; - double ys; - double dist; -}; - -struct OrbElements { - double NFirst; /* longitude of the ascending node first part */ - double NSec; /* longitude of the ascending node second part */ - double iFirst; /* inclination to the ecliptic first part */ - double iSec; /* inclination to the ecliptic second part */ - double wFirst; /* first part of argument of perihelion */ - double wSec; /* second part of argument of perihelion */ - double aFirst; /* semimayor axis first part*/ - double aSec; /* semimayor axis second part */ - double eFirst; /* eccentricity first part */ - double eSec; /* eccentricity second part */ - double MFirst; /* Mean anomaly first part */ - double MSec; /* Mean anomaly second part */ - - double N, i, w, a, e, M; /* the resultant orbital elements, obtained from the former */ -}; - -struct CelestialCoord { - double RightAscension; - double Declination; - double distance; - double magnitude; -}; - - -double fgDegToRad(double angle); -double fgCalcEccAnom(double M, double e); -double fgCalcActTime(struct fgTIME t); - -void fgReadOrbElements(struct OrbElements *dest, FILE *src); -void fgSolarSystemInit(struct fgTIME t); -void fgSolarSystemUpdate(struct OrbElements *planets, struct fgTIME t); - - -#endif /* ORBITS_H */ - - -/* $Log$ -/* Revision 1.2 1997/12/30 16:36:52 curt -/* Merged in Durk's changes ... -/* - * Revision 1.1 1997/10/25 03:16:10 curt - * Initial revision of code contributed by Durk Talsma. - * - */ diff --git a/Scenery/planets.c b/Scenery/planets.c deleted file mode 100644 index cd2171c5b..000000000 --- a/Scenery/planets.c +++ /dev/null @@ -1,150 +0,0 @@ -/************************************************************************** - * planets.c - * - * Written 1997 by Durk Talsma, started October, 1997. For the flight gear - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include "../Time/fg_time.h" -#include "orbits.h" -#include "planets.h" -#include "sun.h" - - -struct CelestialCoord fgCalculatePlanet(struct OrbElements planet, - struct OrbElements theSun, - struct fgTIME t, int idx) -{ - struct CelestialCoord - result; - - struct SunPos - SolarPosition; - - double - eccAnom, r, v, ecl, actTime, R, s, ir, Nr, B, FV, ring_magn, - xv, yv, xh, yh, zh, xg, yg, zg, xe, ye, ze; - - actTime = fgCalcActTime(t); - /* calculate the angle between ecliptic and equatorial coordinate system */ - ecl = fgDegToRad(23.4393 - 3.563E-7 * actTime); - - - /* calculate the eccentric anomaly */ - eccAnom = fgCalcEccAnom(planet.M, planet.e); - - /* calculate the planets distance (r) and true anomaly (v) */ - xv = planet.a * (cos(eccAnom) - planet.e); - yv = planet.a * (sqrt(1.0 - planet.e*planet.e) * sin(eccAnom)); - v = atan2(yv, xv); - r = sqrt ( xv*xv + yv*yv); - - /* calculate the planets position in 3-dimensional space */ - xh = r * ( cos(planet.N) * cos(v+planet.w) - sin(planet.N) * sin(v+planet.w) * cos(planet.i)); - yh = r * ( sin(planet.N) * cos(v+planet.w) + cos(planet.N) * sin(v+planet.w) * cos(planet.i)); - zh = r * ( sin(v+planet.w) * sin(planet.i)); - - /* calculate the ecleptic longitude and latitude */ - - /* - lonecl = atan2(yh, xh); - latecl = atan2(zh, sqrt ( xh*xh + yh*yh)); - */ - /* calculate the solar position */ - - SolarPosition = fgCalcSunPos(theSun); - xg = xh + SolarPosition.xs; - yg = yh + SolarPosition.ys; - zg = zh; - - xe = xg; - ye = yg * cos(ecl) - zg * sin(ecl); - ze = yg * sin(ecl) + zg * cos(ecl); - - result.RightAscension = atan2(ye,xe); - result.Declination = atan2(ze, sqrt(xe*xe + ye*ye)); - - - /* Let's calculate the brightness of the planet */ - R = sqrt ( xg*xg + yg*yg + zg*zg); - s = SolarPosition.dist; - FV = acos( (r*r + R*R - s*s) / (2*r*R)); - FV *= 57.29578; /* convert radians to degrees */ - switch(idx) - { - case 2: /* mercury */ - result.magnitude = -0.36 + 5*log10( r*R ) + 0.027 * FV + 2.2E-13 * pow(FV, 6); - break; - case 3: /*venus */ - result.magnitude = -4.34 + 5*log10( r*R ) + 0.013 * FV + 4.2E-07 * pow(FV,3); - break; - case 4: /* mars */ - result.magnitude = -1.51 + 5*log10( r*R ) + 0.016 * FV; - break; - case 5: /* Jupiter */ - result.magnitude = -9.25 + 5*log10( r*R ) + 0.014 * FV; - break; - case 6: /* Saturn */ - - ir = 0.4897394; - Nr = 2.9585076 + 6.6672E-7*actTime; - - B = asin ( sin (result.Declination) * cos(ir) - cos(result.Declination) * sin (ir) * sin (result.RightAscension - Nr)); - ring_magn = -2.6 * sin (abs(B)) + 1.2 * pow(sin(B),2); - result.magnitude = -9.0 + 5*log10( r*R ) + 0.044 * FV + ring_magn; - break; - case 7: /* Uranus */ - result.magnitude = -7.15 + 5*log10( r*R) + 0.001 * FV; - break; - case 8: /* Neptune */ - result.magnitude = -6.90 + 5*log10 (r*R) + 0.001 *FV; - break; - default: - printf("index %d out of range !!!!\n", idx); - } - printf(" Planet found at %f (ra), %f (dec)\n", - result.RightAscension, result.Declination); - printf(" Geocentric dist %f\n" - " Heliocentric dist %f\n" - " Distance to the sun %f\n" - " Phase angle %f\n" - " Brightness %f\n", R, r, s, FV, result.magnitude); - return result; -} - - - -/* $Log$ -/* Revision 1.4 1997/12/30 20:47:52 curt -/* Integrated new event manager with subsystem initializations. -/* - * Revision 1.3 1997/12/30 16:36:52 curt - * Merged in Durk's changes ... - * - * Revision 1.2 1997/12/12 21:41:29 curt - * More light/material property tweaking ... still a ways off. - * - * Revision 1.1 1997/10/25 03:16:10 curt - * Initial revision of code contributed by Durk Talsma. - * - */ - - diff --git a/Scenery/planets.h b/Scenery/planets.h deleted file mode 100644 index 3d5df4650..000000000 --- a/Scenery/planets.h +++ /dev/null @@ -1,47 +0,0 @@ -/************************************************************************** - * planets.h - * - * Written 1997 by Durk Talsma, started October, 1997. For the flight gear - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef PLANETS_H -#define PLANETS_H - - -struct CelestialCoord fgCalculatePlanet(struct OrbElements planet, - struct OrbElements theSun, - struct fgTIME t, int idx); - -#endif /* PLANETS_H */ - - -/* $Log$ -/* Revision 1.3 1997/12/30 16:36:53 curt -/* Merged in Durk's changes ... -/* - * Revision 1.2 1997/12/12 21:41:30 curt - * More light/material property tweaking ... still a ways off. - * - * Revision 1.1 1997/10/25 03:16:11 curt - * Initial revision of code contributed by Durk Talsma. - * - */ diff --git a/Scenery/sky.c b/Scenery/sky.c deleted file mode 100644 index e34e6c7b9..000000000 --- a/Scenery/sky.c +++ /dev/null @@ -1,367 +0,0 @@ -/************************************************************************** - * sky.c -- model sky with an upside down "bowl" - * - * Written by Curtis Olson, started December 1997. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifdef WIN32 -# include -#endif - -#include -/* -#include -#include -#include -*/ - -#include -#include "../XGL/xgl.h" - -#include "sky.h" - -#include "../Time/event.h" -#include "../Time/fg_time.h" - -#include "../Aircraft/aircraft.h" -#include "../Flight/flight.h" -#include "../Include/constants.h" -#include "../Main/views.h" -#include "../Math/fg_random.h" -/* -#include "../Include/general.h" -*/ - -/* in meters of course */ -#define CENTER_ELEV 25000.0 -#define INNER_RADIUS 50000.0 -#define INNER_ELEV 20000.0 -#define MIDDLE_RADIUS 70000.0 -#define MIDDLE_ELEV 8000.0 -#define OUTER_RADIUS 80000.0 -#define OUTER_ELEV 0.0 - - -static float inner_vertex[12][3]; -static float middle_vertex[12][3]; -static float outer_vertex[12][3]; - -static float inner_color[12][4]; -static float middle_color[12][4]; -static float outer_color[12][4]; - - -/* Calculate the sky structure vertices */ -void fgSkyVerticesInit() { - float theta; - int i; - - printf(" Generating the sky dome vertices.\n"); - - for ( i = 0; i < 12; i++ ) { - theta = (i * 30.0) * DEG_TO_RAD; - - inner_vertex[i][0] = cos(theta) * INNER_RADIUS; - inner_vertex[i][1] = sin(theta) * INNER_RADIUS; - inner_vertex[i][2] = INNER_ELEV; - - /* printf(" %.2f %.2f\n", cos(theta) * INNER_RADIUS, - sin(theta) * INNER_RADIUS); */ - - middle_vertex[i][0] = cos((double)theta) * MIDDLE_RADIUS; - middle_vertex[i][1] = sin((double)theta) * MIDDLE_RADIUS; - middle_vertex[i][2] = MIDDLE_ELEV; - - outer_vertex[i][0] = cos((double)theta) * OUTER_RADIUS; - outer_vertex[i][1] = sin((double)theta) * OUTER_RADIUS; - outer_vertex[i][2] = OUTER_ELEV; - - } -} - - -/* (Re)calculate the sky colors at each vertex */ -void fgSkyColorsInit() { - struct fgLIGHT *l; - float sun_angle, diff; - float outer_param[3], outer_amt[3], outer_diff[3]; - float middle_param[3], middle_amt[3], middle_diff[3]; - int i, j; - - l = &cur_light_params; - - printf(" Generating the sky colors for each vertex.\n"); - - /* setup for the possibility of sunset effects */ - sun_angle = l->sun_angle * RAD_TO_DEG; - printf(" Sun angle in degrees = %.2f\n", sun_angle); - - if ( (sun_angle > 80.0) && (sun_angle < 100.0) ) { - /* 0.0 - 0.4 */ - outer_param[0] = (10.0 - fabs(90.0 - sun_angle)) / 25.0; - outer_param[1] = (10.0 - fabs(90.0 - sun_angle)) / 45.0; - outer_param[2] = 0.0; - - middle_param[0] = (10.0 - fabs(90.0 - sun_angle)) / 40.0; - middle_param[1] = (10.0 - fabs(90.0 - sun_angle)) / 60.0; - middle_param[2] = 0.0; - - outer_diff[0] = outer_param[0] / 6.0; - outer_diff[1] = outer_param[1] / 6.0; - outer_diff[2] = outer_param[2] / 6.0; - - middle_diff[0] = middle_param[0] / 6.0; - middle_diff[1] = middle_param[1] / 6.0; - middle_diff[2] = middle_param[2] / 6.0; - } else { - outer_param[0] = outer_param[1] = outer_param[2] = 0.0; - middle_param[0] = middle_param[1] = middle_param[2] = 0.0; - - outer_diff[0] = outer_diff[1] = outer_diff[2] = 0.0; - middle_diff[0] = middle_diff[1] = middle_diff[2] = 0.0; - } - /* printf(" outer_red_param = %.2f outer_red_diff = %.2f\n", - outer_red_param, outer_red_diff); */ - - /* calculate transition colors between sky and fog */ - for ( j = 0; j < 3; j++ ) { - outer_amt[j] = outer_param[j]; - middle_amt[j] = middle_param[j]; - } - - for ( i = 0; i < 6; i++ ) { - for ( j = 0; j < 3; j++ ) { - diff = l->sky_color[j] - l->fog_color[j]; - - inner_color[i][j] = l->sky_color[j] - diff * 0.3; - middle_color[i][j] = l->sky_color[j] - diff * 0.9 + middle_amt[j]; - outer_color[i][j] = l->fog_color[j] + outer_amt[j]; - - if ( middle_color[i][j] > 1.00 ) { middle_color[i][j] = 1.00; } - if ( middle_color[i][j] < 0.10 ) { middle_color[i][j] = 0.10; } - if ( outer_color[i][j] > 1.00 ) { outer_color[i][j] = 1.00; } - if ( outer_color[i][j] < 0.10 ) { outer_color[i][j] = 0.10; } - } - inner_color[i][3] = middle_color[i][3] = outer_color[i][3] = - l->sky_color[3]; - - for ( j = 0; j < 3; j++ ) { - outer_amt[j] -= outer_diff[j]; - middle_amt[j] -= middle_diff[j]; - } - - /* - printf("inner_color[%d] = %.2f %.2f %.2f %.2f\n", i, inner_color[i][0], - inner_color[i][1], inner_color[i][2], inner_color[i][3]); - printf("middle_color[%d] = %.2f %.2f %.2f %.2f\n", i, - middle_color[i][0], middle_color[i][1], middle_color[i][2], - middle_color[i][3]); - printf("outer_color[%d] = %.2f %.2f %.2f %.2f\n", i, - outer_color[i][0], outer_color[i][1], outer_color[i][2], - outer_color[i][3]); - */ - } - - for ( j = 0; j < 3; j++ ) { - outer_amt[j] = 0.0; - middle_amt[j] = 0.0; - } - - for ( i = 6; i < 12; i++ ) { - - for ( j = 0; j < 3; j++ ) { - diff = l->sky_color[j] - l->fog_color[j]; - - inner_color[i][j] = l->sky_color[j] - diff * 0.3; - middle_color[i][j] = l->sky_color[j] - diff * 0.9 + middle_amt[j]; - outer_color[i][j] = l->fog_color[j] + outer_amt[j]; - - if ( middle_color[i][j] > 1.00 ) { middle_color[i][j] = 1.00; } - if ( middle_color[i][j] < 0.10 ) { middle_color[i][j] = 0.10; } - if ( outer_color[i][j] > 1.00 ) { outer_color[i][j] = 1.00; } - if ( outer_color[i][j] < 0.15 ) { outer_color[i][j] = 0.15; } - } - inner_color[i][3] = middle_color[i][3] = outer_color[i][3] = - l->sky_color[3]; - - for ( j = 0; j < 3; j++ ) { - outer_amt[j] += outer_diff[j]; - middle_amt[j] += middle_diff[j]; - } - - /* - printf("inner_color[%d] = %.2f %.2f %.2f %.2f\n", i, inner_color[i][0], - inner_color[i][1], inner_color[i][2], inner_color[i][3]); - printf("middle_color[%d] = %.2f %.2f %.2f %.2f\n", i, - middle_color[i][0], middle_color[i][1], middle_color[i][2], - middle_color[i][3]); - printf("outer_color[%d] = %.2f %.2f %.2f %.2f\n", i, - outer_color[i][0], outer_color[i][1], outer_color[i][2], - outer_color[i][3]); - */ - } -} - - -/* Initialize the sky structure and colors */ -void fgSkyInit() { - printf("Initializing the sky\n"); - - fgSkyVerticesInit(); - - /* regester fgSkyColorsInit() as an event to be run periodically */ - fgEventRegister("fgSkyColorsInit()", fgSkyColorsInit, - FG_EVENT_READY, 30000); -} - - -/* Draw the Sky */ -void fgSkyRender() { - struct fgFLIGHT *f; - struct fgLIGHT *l; - struct fgVIEW *v; - float /* inner_color[4], middle_color[4], diff, */ east_dot, dot, angle; - int i; - - f = ¤t_aircraft.flight; - l = &cur_light_params; - v = ¤t_view; - - /* printf("Rendering the sky.\n"); */ - - xglPushMatrix(); - - /* calculate the angle between v->surface_to_sun and - * v->surface_east. We do this so we can sort out the acos() - * ambiguity. I wish I could think of a more efficient way ... :-( */ - east_dot = MAT3_DOT_PRODUCT(v->surface_to_sun, v->surface_east); - /* printf(" East dot product = %.2f\n", east_dot); */ - - /* calculate the angle between v->surface_to_sun and - * v->surface_south. this is how much we have to rotate the sky - * for it to align with the sun */ - dot = MAT3_DOT_PRODUCT(v->surface_to_sun, v->surface_south); - /* printf(" Dot product = %.2f\n", dot); */ - if ( east_dot >= 0 ) { - angle = acos(dot); - } else { - angle = -acos(dot); - } - /*printf(" Sky needs to rotate = %.3f rads = %.1f degrees.\n", - angle, angle * RAD_TO_DEG); */ - - /* Translate to view position */ - xglTranslatef( v->cur_zero_elev.x, v->cur_zero_elev.y, v->cur_zero_elev.z ); - /* printf(" Translated to %.2f %.2f %.2f\n", - v->cur_zero_elev.x, v->cur_zero_elev.y, v->cur_zero_elev.z ); */ - - /* Rotate to proper orientation */ - /* printf(" lon = %.2f lat = %.2f\n", FG_Longitude * RAD_TO_DEG, - FG_Latitude * RAD_TO_DEG); */ - xglRotatef( FG_Longitude * RAD_TO_DEG, 0.0, 0.0, 1.0 ); - xglRotatef( 90.0 - FG_Latitude * RAD_TO_DEG, 0.0, 1.0, 0.0 ); - xglRotatef( angle * RAD_TO_DEG, 0.0, 0.0, 1.0 ); - - /* Draw inner/center section of sky*/ - xglBegin( GL_TRIANGLE_FAN ); - xglColor4fv(l->sky_color); - xglVertex3f(0.0, 0.0, CENTER_ELEV); - for ( i = 0; i < 12; i++ ) { - xglColor4fv( inner_color[i] ); - xglVertex3fv( inner_vertex[i] ); - } - xglColor4fv( inner_color[0] ); - xglVertex3fv( inner_vertex[0] ); - xglEnd(); - - /* Draw the middle ring */ - xglBegin( GL_TRIANGLE_STRIP ); - for ( i = 0; i < 12; i++ ) { - xglColor4fv( middle_color[i] ); - xglVertex3fv( middle_vertex[i] ); - xglColor4fv( inner_color[i] ); - xglVertex3fv( inner_vertex[i] ); - } - xglColor4fv( middle_color[0] ); - /* xglColor4f(1.0, 0.0, 0.0, 1.0); */ - xglVertex3fv( middle_vertex[0] ); - xglColor4fv( inner_color[0] ); - /* xglColor4f(1.0, 0.0, 0.0, 1.0); */ - xglVertex3fv( inner_vertex[0] ); - xglEnd(); - - /* Draw the outer ring */ - xglBegin( GL_TRIANGLE_STRIP ); - for ( i = 0; i < 12; i++ ) { - xglColor4fv( outer_color[i] ); - xglVertex3fv( outer_vertex[i] ); - xglColor4fv( middle_color[i] ); - xglVertex3fv( middle_vertex[i] ); - } - xglColor4fv( outer_color[0] ); - xglVertex3fv( outer_vertex[0] ); - xglColor4fv( middle_color[0] ); - xglVertex3fv( middle_vertex[0] ); - xglEnd(); - - xglPopMatrix(); -} - - -/* $Log$ -/* Revision 1.11 1997/12/30 22:22:38 curt -/* Further integration of event manager. -/* - * Revision 1.10 1997/12/30 20:47:53 curt - * Integrated new event manager with subsystem initializations. - * - * Revision 1.9 1997/12/30 13:06:57 curt - * A couple lighting tweaks ... - * - * Revision 1.8 1997/12/23 04:58:38 curt - * Tweaked the sky coloring a bit to build in structures to allow finer rgb - * control. - * - * Revision 1.7 1997/12/22 23:45:48 curt - * First stab at sunset/sunrise sky glow effects. - * - * Revision 1.6 1997/12/22 04:14:34 curt - * Aligned sky with sun so dusk/dawn effects can be correct relative to the sun. - * - * Revision 1.5 1997/12/19 23:34:59 curt - * Lot's of tweaking with sky rendering and lighting. - * - * Revision 1.4 1997/12/19 16:45:02 curt - * Working on scene rendering order and options. - * - * Revision 1.3 1997/12/18 23:32:36 curt - * First stab at sky dome actually starting to look reasonable. :-) - * - * Revision 1.2 1997/12/18 04:07:03 curt - * Worked on properly translating and positioning the sky dome. - * - * Revision 1.1 1997/12/17 23:14:30 curt - * Initial revision. - * Begin work on rendering the sky. (Rather than just using a clear screen.) - * - */ diff --git a/Scenery/sky.h b/Scenery/sky.h deleted file mode 100644 index f5bd771b7..000000000 --- a/Scenery/sky.h +++ /dev/null @@ -1,45 +0,0 @@ -/************************************************************************** - * sky.h -- model sky with an upside down "bowl" - * - * Written by Curtis Olson, started December 1997. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -/* (Re)generate the display list */ -void fgSkyInit(); - -/* (Re)calculate the sky colors at each vertex */ -void fgSkyColorsInit(); - -/* Draw the Sky */ -void fgSkyRender(); - - -/* $Log$ -/* Revision 1.2 1997/12/22 23:45:49 curt -/* First stab at sunset/sunrise sky glow effects. -/* - * Revision 1.1 1997/12/17 23:14:31 curt - * Initial revision. - * Begin work on rendering the sky. (Rather than just using a clear screen.) - * - */ diff --git a/Scenery/stars.c b/Scenery/stars.c deleted file mode 100644 index 125ab6307..000000000 --- a/Scenery/stars.c +++ /dev/null @@ -1,354 +0,0 @@ -/************************************************************************** - * stars.c -- data structures and routines for managing and rendering stars. - * - * Written by Curtis Olson, started August 1997. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifdef WIN32 -# include -#endif - -#include -#include -#include -#include - -#include -#include "../XGL/xgl.h" - -#include "orbits.h" -#include "planets.h" -#include "stars.h" - -#include "../Include/constants.h" -#include "../Include/general.h" -#include "../Aircraft/aircraft.h" -#include "../Main/views.h" -#include "../Time/fg_time.h" - - -#define EpochStart (631065600) -#define DaysSinceEpoch(secs) (((secs)-EpochStart)*(1.0/(24*3600))) - - -/* Define four structures, each with varying amounts of stars */ -/* static */ GLint stars[FG_STAR_LEVELS]; - - -/* Initialize the Star Management Subsystem */ -void fgStarsInit() { - FILE *fd; - struct fgGENERAL *g; - struct CelestialCoord pltPos; - char path[1024]; - char line[256], name[256]; - char *front, *end; - double right_ascension, declination, magnitude; - double ra_save, decl_save; - double ra_save1, decl_save1; - int count, i, j, max_stars; - - printf("Initializing stars\n"); - - g = &general; - - /* build the full path name to the stars data base file */ - path[0] = '\0'; - strcat(path, g->root_dir); - strcat(path, "/Scenery/"); - strcat(path, "Stars.dat"); - - max_stars = FG_MAX_STARS; - - for ( i = 0; i < FG_STAR_LEVELS; i++ ) { - printf(" Loading %d Stars: %s\n", max_stars, path); - - if ( (fd = fopen(path, "r")) == NULL ) { - printf("Cannot open star file: '%s'\n", path); - return; - } - - stars[i] = xglGenLists(1); - xglNewList( stars[i], GL_COMPILE ); - xglBegin( GL_POINTS ); - - /* read in each line of the file */ - count = 0; - while ( (fgets(line, 256, fd) != NULL) && (count < max_stars) ) { - front = line; - - /* printf(" Read line = %s", front); */ - - /* advance to first non-whitespace character */ - while ( (front[0] == ' ') || (front[0] == '\t') ) { - front++; - } - - /* printf(" Line length (after trimming) = %d\n", strlen(front));*/ - - if ( front[0] == '#' ) { - /* comment */ - } else if ( strlen(front) <= 1 ) { - /* blank line */ - } else { - /* star data line */ - - /* get name */ - end = front; - while ( end[0] != ',' ) { - end++; - } - end[0] = '\0'; - strcpy(name, front); - front = end; - front++; - - sscanf(front, "%lf,%lf,%lf\n", - &right_ascension, &declination, &magnitude); - - /* - if ( strcmp(name, "Betelgeuse") == 0 ) { - printf(" *** Marking %s\n", name); - ra_save = right_ascension; - decl_save = declination; - } - */ - - /* - if ( strcmp(name, "Alnilam") == 0 ) { - printf(" *** Marking %s\n", name); - ra_save1 = right_ascension; - decl_save1 = declination; - } - */ - - /* scale magnitudes to (0.0 - 1.0) */ - magnitude = (0.0 - magnitude) / 5.0 + 1.0; - - /* scale magnitudes again so they look ok */ - if ( magnitude > 1.0 ) { magnitude = 1.0; } - if ( magnitude < 0.0 ) { magnitude = 0.0; } - magnitude = - magnitude * 0.7 + (((FG_STAR_LEVELS - 1) - i) * 0.1); - /* printf(" Found star: %d %s, %.3f %.3f %.3f\n", count, - name, right_ascension, declination, magnitude); */ - - xglColor3f( magnitude, magnitude, magnitude ); - /*xglColor3f(0,0,0);*/ - xglVertex3f( 50000.0 * cos(right_ascension) * cos(declination), - 50000.0 * sin(right_ascension) * cos(declination), - 50000.0 * sin(declination) ); - - count++; - } /* if valid line */ - - } /* while */ - - fclose(fd); - - /* Add the planets to all four display lists */ - for ( j = 2; j < 9; j++ ) { - pltPos = fgCalculatePlanet(pltOrbElements[j], - pltOrbElements[0], cur_time_params, j); - /* give the planets a temporary color, for testing purposes */ - /* xglColor3f( 1.0, 0.0, 0.0); */ - - /* scale magnitudes to (0.0 - 1.0) */ - magnitude = (0.0 - pltPos.magnitude) / 5.0 + 1.0; - - /* scale magnitudes again so they look ok */ - if ( magnitude > 1.0 ) { magnitude = 1.0; } - if ( magnitude < 0.0 ) { magnitude = 0.0; } - magnitude = - magnitude * 0.7 + (((FG_STAR_LEVELS - 1) - i) * 0.1); - - - xglColor3f(magnitude, magnitude, magnitude); - - xglVertex3f( 50000.0 * cos(pltPos.RightAscension) * - cos(pltPos.Declination), - 50000.0 * sin(pltPos.RightAscension) * - cos(pltPos.Declination), - 50000.0 * sin(pltPos.Declination) ); - } - xglEnd(); - - /* - xglBegin(GL_LINE_LOOP); - xglColor3f(1.0, 0.0, 0.0); - xglVertex3f( 50000.0 * cos(ra_save-0.2) * cos(decl_save-0.2), - 50000.0 * sin(ra_save-0.2) * cos(decl_save-0.2), - 50000.0 * sin(decl_save-0.2) ); - xglVertex3f( 50000.0 * cos(ra_save+0.2) * cos(decl_save-0.2), - 50000.0 * sin(ra_save+0.2) * cos(decl_save-0.2), - 50000.0 * sin(decl_save-0.2) ); - xglVertex3f( 50000.0 * cos(ra_save+0.2) * cos(decl_save+0.2), - 50000.0 * sin(ra_save+0.2) * cos(decl_save+0.2), - 50000.0 * sin(decl_save+0.2) ); - xglVertex3f( 50000.0 * cos(ra_save-0.2) * cos(decl_save+0.2), - 50000.0 * sin(ra_save-0.2) * cos(decl_save+0.2), - 50000.0 * sin(decl_save+0.2) ); - xglEnd(); - */ - - /* - xglBegin(GL_LINE_LOOP); - xglColor3f(0.0, 1.0, 0.0); - xglVertex3f( 50000.0 * cos(ra_save1-0.2) * cos(decl_save1-0.2), - 50000.0 * sin(ra_save1-0.2) * cos(decl_save1-0.2), - 50000.0 * sin(decl_save1-0.2) ); - xglVertex3f( 50000.0 * cos(ra_save1+0.2) * cos(decl_save1-0.2), - 50000.0 * sin(ra_save1+0.2) * cos(decl_save1-0.2), - 50000.0 * sin(decl_save1-0.2) ); - xglVertex3f( 50000.0 * cos(ra_save1+0.2) * cos(decl_save1+0.2), - 50000.0 * sin(ra_save1+0.2) * cos(decl_save1+0.2), - 50000.0 * sin(decl_save1+0.2) ); - xglVertex3f( 50000.0 * cos(ra_save1-0.2) * cos(decl_save1+0.2), - 50000.0 * sin(ra_save1-0.2) * cos(decl_save1+0.2), - 50000.0 * sin(decl_save1+0.2) ); - xglEnd(); - */ - - xglEndList(); - - max_stars /= 2; - } -} - - -/* Draw the Stars */ -void fgStarsRender() { - struct fgFLIGHT *f; - struct fgVIEW *v; - struct fgLIGHT *l; - struct fgTIME *t; - int i; - - f = ¤t_aircraft.flight; - l = &cur_light_params; - t = &cur_time_params; - v = ¤t_view; - - /* FG_PI_2 + 0.1 is about 6 degrees after sundown and before sunrise */ - - /* t->sun_angle = 3.0; */ /* to force stars to be drawn (for testing) */ - - /* render the stars */ - if ( l->sun_angle > (FG_PI_2 + 5 * DEG_TO_RAD ) ) { - /* determine which star structure to draw */ - if ( l->sun_angle > (FG_PI_2 + 7.25 * DEG_TO_RAD ) ) { - i = 0; - } else if ( l->sun_angle > (FG_PI_2 + 6.50 * DEG_TO_RAD ) ) { - i = 1; - } else if ( l->sun_angle > (FG_PI_2 + 5.75 * DEG_TO_RAD ) ) { - i = 2; - } else { - i = 3; - } - - /* printf("RENDERING STARS = %d (night)\n", i); */ - - xglCallList(stars[i]); - } else { - /* printf("not RENDERING STARS (day)\n"); */ - } -} - - -/* $Log$ -/* Revision 1.24 1997/12/30 22:22:39 curt -/* Further integration of event manager. -/* - * Revision 1.23 1997/12/30 20:47:53 curt - * Integrated new event manager with subsystem initializations. - * - * Revision 1.22 1997/12/30 16:36:53 curt - * Merged in Durk's changes ... - * - * Revision 1.21 1997/12/19 23:35:00 curt - * Lot's of tweaking with sky rendering and lighting. - * - * Revision 1.20 1997/12/15 23:55:03 curt - * Add xgl wrappers for debugging. - * Generate terrain normals on the fly. - * - * Revision 1.19 1997/12/12 19:53:00 curt - * Working on lightling and material properties. - * - * Revision 1.18 1997/12/10 22:37:52 curt - * Prepended "fg" on the name of all global structures that didn't have it yet. - * i.e. "struct WEATHER {}" became "struct fgWEATHER {}" - * - * Revision 1.17 1997/12/09 04:25:33 curt - * Working on adding a global lighting params structure. - * - * Revision 1.16 1997/11/25 19:25:38 curt - * Changes to integrate Durk's moon/sun code updates + clean up. - * - * Revision 1.15 1997/10/30 12:38:45 curt - * Working on new scenery subsystem. - * - * Revision 1.14 1997/10/28 21:00:22 curt - * Changing to new terrain format. - * - * Revision 1.13 1997/10/25 03:18:28 curt - * Incorporated sun, moon, and planet position and rendering code contributed - * by Durk Talsma. - * - * Revision 1.12 1997/09/23 00:29:43 curt - * Tweaks to get things to compile with gcc-win32. - * - * Revision 1.11 1997/09/22 14:44:21 curt - * Continuing to try to align stars correctly. - * - * Revision 1.10 1997/09/20 03:34:32 curt - * Still trying to get those durned stars aligned properly. - * - * Revision 1.9 1997/09/18 16:20:09 curt - * At dusk/dawn add/remove stars in stages. - * - * Revision 1.8 1997/09/16 22:14:52 curt - * Tweaked time of day lighting equations. Don't draw stars during the day. - * - * Revision 1.7 1997/09/16 15:50:31 curt - * Working on star alignment and time issues. - * - * Revision 1.6 1997/09/05 14:17:31 curt - * More tweaking with stars. - * - * Revision 1.5 1997/09/05 01:35:59 curt - * Working on getting stars right. - * - * Revision 1.4 1997/09/04 02:17:38 curt - * Shufflin' stuff. - * - * Revision 1.3 1997/08/29 17:55:28 curt - * Worked on properly aligning the stars. - * - * Revision 1.2 1997/08/27 21:32:30 curt - * Restructured view calculation code. Added stars. - * - * Revision 1.1 1997/08/27 03:34:48 curt - * Initial revision. - * - */ diff --git a/Scenery/stars.h b/Scenery/stars.h deleted file mode 100644 index 740eb05fe..000000000 --- a/Scenery/stars.h +++ /dev/null @@ -1,66 +0,0 @@ -/************************************************************************** - * stars.h -- data structures and routines for managing and rendering stars. - * - * Written by Curtis Olson, started August 1997. - * - * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef STARS_H -#define STARS_H - - -#define FG_MAX_STARS 500 -#define FG_STAR_LEVELS 4 /* how many star transitions */ -#define FG_MIN_STAR_MAG 0.738750 /* magnitude of weakest star we'll display */ - -/* Initialize the Star Management Subsystem */ -void fgStarsInit(); - -/* Draw the Stars */ -void fgStarsRender(); -extern struct OrbElements pltOrbElements[9]; -extern struct fgTIME cur_time_params; - -#endif /* STARS_H */ - - -/* $Log$ -/* Revision 1.6 1997/10/25 03:18:29 curt -/* Incorporated sun, moon, and planet position and rendering code contributed -/* by Durk Talsma. -/* - * Revision 1.5 1997/09/18 16:20:09 curt - * At dusk/dawn add/remove stars in stages. - * - * Revision 1.4 1997/09/05 01:36:00 curt - * Working on getting stars right. - * - * Revision 1.3 1997/08/29 17:55:28 curt - * Worked on properly aligning the stars. - * - * Revision 1.2 1997/08/27 21:32:30 curt - * Restructured view calculation code. Added stars. - * - * Revision 1.1 1997/08/27 03:34:50 curt - * Initial revision. - * - */ diff --git a/Scenery/sun.c b/Scenery/sun.c deleted file mode 100644 index d68d179a9..000000000 --- a/Scenery/sun.c +++ /dev/null @@ -1,237 +0,0 @@ -/************************************************************************** - * sun.c - * - * Written 1997 by Durk Talsma, started October, 1997. For the flight gear - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - -#include -#include "../XGL/xgl.h" - -#include "../Time/fg_time.h" -#include "../Main/views.h" -#include "orbits.h" -#include "sun.h" - -GLint sun_obj; - -static struct CelestialCoord sunPos; - -float xSun, ySun, zSun; - -struct SunPos fgCalcSunPos(struct OrbElements params) -{ - double - EccAnom, lonSun, - xv, yv, v, r; - struct SunPos - solarPosition; - - /* calculate the eccentric anomaly */ - EccAnom = fgCalcEccAnom(params.M, params.e); - - /* calculate the Suns distance (r) and its true anomaly (v) */ - xv = cos(EccAnom) - params.e; - yv = sqrt(1.0 - params.e*params.e) * sin(EccAnom); - v = atan2(yv, xv); - r = sqrt(xv*xv + yv*yv); - - /* calculate the the Sun's true longitude (lonsun) */ - lonSun = v + params.w; - - /* convert true longitude and distance to ecliptic rectangular geocentric - coordinates (xs, ys) */ - solarPosition.xs = r * cos(lonSun); - solarPosition.ys = r * sin(lonSun); - solarPosition.dist = r; - return solarPosition; -} - - -struct CelestialCoord fgCalculateSun(struct OrbElements params, struct fgTIME t) -{ - struct CelestialCoord - result; - struct SunPos - SolarPosition; - double - xe, ye, ze, ecl, actTime; - - /* calculate the angle between ecliptic and equatorial coordinate system */ - actTime = fgCalcActTime(t); - ecl = fgDegToRad(23.4393 - 3.563E-7 * actTime); // Angle now in Rads - - /* calculate the sun's ecliptic position */ - SolarPosition = fgCalcSunPos(params); - - /* convert ecliptic coordinates to equatorial rectangular geocentric coordinates */ - xe = SolarPosition.xs; - ye = SolarPosition.ys * cos(ecl); - ze = SolarPosition.ys * sin(ecl); - - /* and finally... Calulate Right Ascention and Declination */ - result.RightAscension = atan2( ye, xe); - result.Declination = atan2(ze, sqrt(xe*xe + ye*ye)); - return result; -} - - -/* Initialize the Sun */ -void fgSunInit() { - static int dl_exists = 0; - - printf(" Initializing the Sun\n"); - - fgSolarSystemUpdate(&(pltOrbElements[0]), cur_time_params); - sunPos = fgCalculateSun(pltOrbElements[0], cur_time_params); -#ifdef DEBUG - printf("Sun found at %f (ra), %f (dec)\n", sunPos.RightAscension, - sunPos.Declination); -#endif - - xSun = 60000.0 * cos(sunPos.RightAscension) * cos(sunPos.Declination); - ySun = 60000.0 * sin(sunPos.RightAscension) * cos(sunPos.Declination); - zSun = 60000.0 * sin(sunPos.Declination); - - if ( !dl_exists ) { - dl_exists = 1; - - /* printf("First time through, creating sun display list\n"); */ - - sun_obj = xglGenLists(1); - xglNewList(sun_obj, GL_COMPILE ); - - glutSolidSphere(1.0, 10, 10); - - xglEndList(); - } -} - - -/* Draw the Sun */ -void fgSunRender() { - struct fgVIEW *v; - struct fgTIME *t; - struct fgLIGHT *l; - /* GLfloat color[4] = { 0.85, 0.65, 0.05, 1.0 }; */ - GLfloat color[4] = { 1.00, 1.00, 1.00, 1.00 }; - double x_2, x_4, x_8, x_10; - GLfloat ambient; - GLfloat amb[3], diff[3]; - - - t = &cur_time_params; - v = ¤t_view; - l = &cur_light_params; - - x_2 = l->sun_angle * l->sun_angle; - x_4 = x_2 * x_2; - x_8 = x_4 * x_4; - x_10 = x_8 * x_2; - - ambient = (0.4 * pow(1.1, -x_10 / 30.0)); - if ( ambient < 0.3 ) ambient = 0.3; - if ( ambient > 1.0 ) ambient = 1.0; - - amb[0] = 0.50 + ((ambient * 6.66) - 1.6); - amb[1] = 0.00 + ((ambient * 6.66) - 1.6); - amb[2] = 0.00 + ((ambient * 6.66) - 1.6); - amb[3] = 0.00; -#ifdef DEBUG - printf("Color of the sun: %f, %f, %f\n" - "Ambient value : %f\n" - "Sun Angle : %f\n" , amb[0], amb[1], amb[2], ambient, t->sun_angle); -#endif - diff[0] = 0.0; - diff[1] = 0.0; - diff[2] = 0.0; - diff[3] = 1.0; - - /* set lighting parameters */ - xglLightfv(GL_LIGHT0, GL_AMBIENT, color ); - xglLightfv(GL_LIGHT0, GL_DIFFUSE, color ); - xglMaterialfv(GL_FRONT, GL_AMBIENT, amb); - xglMaterialfv(GL_FRONT, GL_DIFFUSE, diff); - xglMaterialfv(GL_FRONT, GL_SHININESS, diff); - xglMaterialfv(GL_FRONT, GL_EMISSION, diff); - xglMaterialfv(GL_FRONT, GL_SPECULAR, diff); - - /* xglDisable( GL_LIGHTING ); */ - - xglPushMatrix(); - xglTranslatef(xSun, ySun, zSun); - xglScalef(1400, 1400, 1400); - - xglColor3f(0.85, 0.65, 0.05); - - xglCallList(sun_obj); - - xglPopMatrix(); - - /* xglEnable( GL_LIGHTING ); */ -} - - -/* $Log$ -/* Revision 1.12 1998/01/05 18:44:36 curt -/* Add an option to advance/decrease time from keyboard. -/* - * Revision 1.11 1997/12/30 23:09:40 curt - * Worked on winding problem without luck, so back to calling glFrontFace() - * 3 times for each scenery area. - * - * Revision 1.10 1997/12/30 20:47:54 curt - * Integrated new event manager with subsystem initializations. - * - * Revision 1.9 1997/12/30 16:36:54 curt - * Merged in Durk's changes ... - * - * Revision 1.8 1997/12/19 23:35:00 curt - * Lot's of tweaking with sky rendering and lighting. - * - * Revision 1.7 1997/12/17 23:12:16 curt - * Fixed so moon and sun display lists aren't recreate periodically. - * - * Revision 1.6 1997/12/15 23:55:04 curt - * Add xgl wrappers for debugging. - * Generate terrain normals on the fly. - * - * Revision 1.5 1997/12/12 21:41:31 curt - * More light/material property tweaking ... still a ways off. - * - * Revision 1.4 1997/12/10 22:37:53 curt - * Prepended "fg" on the name of all global structures that didn't have it yet. - * i.e. "struct WEATHER {}" became "struct fgWEATHER {}" - * - * Revision 1.3 1997/12/09 05:11:56 curt - * Working on tweaking lighting. - * - * Revision 1.2 1997/11/25 19:25:39 curt - * Changes to integrate Durk's moon/sun code updates + clean up. - * - * Revision 1.1 1997/10/25 03:16:11 curt - * Initial revision of code contributed by Durk Talsma. - * - */ - - - - - diff --git a/Scenery/sun.h b/Scenery/sun.h deleted file mode 100644 index 9d597d27e..000000000 --- a/Scenery/sun.h +++ /dev/null @@ -1,54 +0,0 @@ -/************************************************************************** - * sun.h - * - * Written 1997 by Durk Talsma, started October, 1997. For the flight gear - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef SUN_H -#define SUN_H - - -struct SunPos fgCalcSunPos(struct OrbElements sunParams); -extern struct OrbElements pltOrbElements[9]; - -/* Initialize the Sun */ -void fgSunInit(); - -/* Draw the Sun */ -void fgSunRender(); - - -#endif /* SUN_H */ - - -/* $Log$ -/* Revision 1.3 1997/12/11 04:43:56 curt -/* Fixed sun vector and lighting problems. I thing the moon is now lit -/* correctly. -/* - * Revision 1.2 1997/11/25 19:25:39 curt - * Changes to integrate Durk's moon/sun code updates + clean up. - * - * Revision 1.1 1997/10/25 03:16:12 curt - * Initial revision of code contributed by Durk Talsma. - * - */