summaryrefslogtreecommitdiff
path: root/src/Panorama.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Panorama.cxx')
-rw-r--r--src/Panorama.cxx28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/Panorama.cxx b/src/Panorama.cxx
index 59f70eb..e07d0a8 100644
--- a/src/Panorama.cxx
+++ b/src/Panorama.cxx
@@ -39,13 +39,12 @@ Panorama::Panorama() {
height_dist_ratio = 0.07;
pi_d = asin(1.0) * 2.0;
deg2rad = pi_d / 180.0;
- view_angle = pi_d / 2.0;
parms.a_center = 0.0;
parms.a_nick = 0.0;
parms.a_tilt = 0.0;
parms.scale = 3500.0;
view_name = NULL;
- proj = new ProjectionSphaeric();
+ set_projection(PROJECTION_TANGENTIAL);
}
Panorama::~Panorama() {
@@ -268,6 +267,26 @@ Panorama::set_view_height(double v) {
update_angles();
}
+void
+Panorama::set_projection(Projection_t p) {
+ projection_type = p;
+
+ if (proj) {
+ delete proj;
+ }
+
+ switch(projection_type) {
+ case PROJECTION_TANGENTIAL:
+ proj = new ProjectionTangential();
+ view_angle = pi_d / 3.0;
+ break;
+ case PROJECTION_SPHAERIC:
+ proj = new ProjectionSphaeric();
+ view_angle = pi_d / 2.0;
+ break;
+ }
+}
+
const char *
Panorama::get_viewpoint() {
return view_name;
@@ -313,6 +332,11 @@ Panorama::get_view_height() {
return view_height;
}
+Projection_t
+Panorama::get_projection() {
+ return projection_type;
+}
+
int
Panorama::get_pos(const char *name, double *phi, double *lam, double *height) {
int i;