9
Ring(const double inner_radius, const double outer_radius,
10
const double planet_radius,
11
const double *ring_brightness, const int num_bright,
12
const double *ring_transparency, const int num_trans,
13
const double sunlon, const double sunlat,
19
// get the radius of the ring shadowing the specified location on
21
double getShadowRadius(double lat, double lon);
23
// get the brightness on the lit side
24
double getBrightness(const double lon, const double r);
26
// get the brightness on the dark side
27
double getBrightness(const double lon, const double r, const double t);
29
double getTransparency(const double r);
31
// set the size of each pixel, used to window average the ring
32
// brightness/transparency
33
void setDistPerPixel(const double d);
35
double getOuterRadius() const { return(r_out); };
38
double r_out; // outer ring radius, units of planetary radii
39
double dr_b; // resolution of brightness grid
40
double dr_t; // resolution of transparency grid
45
int window_t; // each pixel contains this many transparency points
50
int window_b; // each pixel contains this many brightness points
55
double sun_lat, sun_lon;
56
double sunX_, sunY_, sunZ_;
58
double ellipseCoeffC_; // constant in quadratic to solve for
59
// ellipsoid intersection
61
// get a window average of array
62
double getValue(const double *array, const int size, const int window,
63
const double dr, const double r);
65
// get a window average of array, accounts for shadowing by the planet
66
double getValue(const double *array, const int size, const int window,
67
const double dr, const double r, const double lon);