瀏覽代碼

nviz_cmd: focus parameter added

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46833 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 14 年之前
父節點
當前提交
87eea087f1

+ 2 - 0
gui/wxpython/gui_modules/nviz_mapdisp.py

@@ -964,6 +964,8 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
                                                        subkey = ('twist', 'value'))
                                                     
         self._display.LookAtCenter()
+        focus = self.iview['focus']
+        focus['x'], focus['y'], focus['z'] = self._display.GetFocus()
         
         event = wxUpdateView(zExag = False)
         wx.PostEvent(self, event)

+ 2 - 2
gui/wxpython/gui_modules/nviz_tools.py

@@ -239,7 +239,6 @@ class NvizToolWindow(FN.FlatNotebook):
         # position
         posSizer = wx.GridBagSizer(vgap = 3, hgap = 3)
         
-        self.win['view']['lookFrom'] = {}
         self._createCompass(panel = panel, sizer = posSizer, type = 'view')
         
         view = ViewPositionWindow(panel, size = (175, 175),
@@ -1504,7 +1503,6 @@ class NvizToolWindow(FN.FlatNotebook):
         gridSizer = wx.GridBagSizer(vgap = 3, hgap = 3)
         posSizer = wx.GridBagSizer(vgap = 3, hgap = 3)
         
-        self.win['light']['lookFrom'] = {}
         self._createCompass(panel = panel, sizer = posSizer, type = 'light')
         
         pos = LightPositionWindow(panel, id = wx.ID_ANY, size = (175, 175),
@@ -2071,6 +2069,8 @@ class NvizToolWindow(FN.FlatNotebook):
         name = self.FindWindowById(event.GetId()).GetName()
         if name == 'center':
             self._display.LookAtCenter()
+            focus = self.mapWindow.iview['focus']
+            focus['x'], focus['y'], focus['z'] = self._display.GetFocus()
             self.mapWindow.Refresh(False)
         elif name == 'top':
             self.mapWindow.view['position']['x'] = 0.5

+ 11 - 1
visualization/nviz2/cmd/args.c

@@ -525,6 +525,16 @@ void args_viewpoint(struct GParams *params)
     params->exag->multiple = NO;
     params->exag->description = _("Vertical exaggeration");
 
+    /* focus */
+    params->focus = G_define_option();
+    params->focus->key = "focus";
+    params->focus->key_desc = "x,y";
+    params->focus->type = TYPE_DOUBLE;
+    params->focus->required = NO;
+    params->focus->multiple = NO;
+    params->focus->description = _("Focus to point on surface (from SW corner in map units)");
+    params->focus->guisection = _("Viewpoint");
+    
     return;
 }
 
@@ -651,7 +661,7 @@ void args_cplane(struct GParams *params)
     params->cplane_pos->type = TYPE_DOUBLE;
     params->cplane_pos->required = NO;
     params->cplane_pos->multiple = YES;
-    params->cplane_pos->description = _("Cutting plane x,y coordinates");
+    params->cplane_pos->description = _("Cutting plane x,y,z coordinates");
     params->cplane_pos->guisection = _("Cutting planes");
     params->cplane_pos->answer = "0,0,0";
     

+ 1 - 1
visualization/nviz2/cmd/local_proto.h

@@ -27,7 +27,7 @@ struct GParams
     /* cutting planes */
     *cplane, *cplane_pos, *cplane_rot, *cplane_tilt, *cplane_shading,
     /* viewpoint */
-	*pos, *height, *persp, *twist,
+	*pos, *height, *persp, *twist, *focus,
     /* output */
 	*output, *format, *size,
     /* lighting */

+ 4 - 0
visualization/nviz2/cmd/main.c

@@ -150,6 +150,10 @@ int main(int argc, char *argv[])
 				atof(params->pos->answers[1]));
     Nviz_set_viewpoint_twist(atoi(params->twist->answer));
     Nviz_set_viewpoint_persp(atoi(params->persp->answer));
+    if (params->focus->answer) {
+    Nviz_set_focus(&data, atof(params->focus->answers[0]),
+                          atof(params->focus->answers[1]), 0);
+    }
 
     /* set lights */
     Nviz_set_light_position(&data, 1,