update_window_poseT_update_window_poseUpdateWindowPoseUpdateWindowPose (Operator)

Name

update_window_poseT_update_window_poseUpdateWindowPoseUpdateWindowPose — Verändern der Pose eines 3D-Plots.

Signatur

update_window_pose( : : WindowHandle, LastRow, LastCol, CurrentRow, CurrentCol, Mode : )

Herror T_update_window_pose(const Htuple WindowHandle, const Htuple LastRow, const Htuple LastCol, const Htuple CurrentRow, const Htuple CurrentCol, const Htuple Mode)

void UpdateWindowPose(const HTuple& WindowHandle, const HTuple& LastRow, const HTuple& LastCol, const HTuple& CurrentRow, const HTuple& CurrentCol, const HTuple& Mode)

void HWindow::UpdateWindowPose(const HTuple& LastRow, const HTuple& LastCol, const HTuple& CurrentRow, const HTuple& CurrentCol, const HString& Mode) const

void HWindow::UpdateWindowPose(double LastRow, double LastCol, double CurrentRow, double CurrentCol, const HString& Mode) const

void HWindow::UpdateWindowPose(double LastRow, double LastCol, double CurrentRow, double CurrentCol, const char* Mode) const

void HWindow::UpdateWindowPose(double LastRow, double LastCol, double CurrentRow, double CurrentCol, const wchar_t* Mode) const   (Nur Windows)

static void HOperatorSet.UpdateWindowPose(HTuple windowHandle, HTuple lastRow, HTuple lastCol, HTuple currentRow, HTuple currentCol, HTuple mode)

void HWindow.UpdateWindowPose(HTuple lastRow, HTuple lastCol, HTuple currentRow, HTuple currentCol, string mode)

void HWindow.UpdateWindowPose(double lastRow, double lastCol, double currentRow, double currentCol, string mode)

Beschreibung

Der Operator update_window_poseupdate_window_poseUpdateWindowPoseUpdateWindowPoseUpdateWindowPose vereinfacht das Setzen der Orientierung und der Lage des Höhenmodells, das vom Operator disp_objdisp_objDispObjDispObjDispObj angezeigt wird, sofern der Darstellungsmodus mittels set_paintset_paintSetPaintSetPaintSetPaint auf '3d_plot'"3d_plot""3d_plot""3d_plot""3d_plot" gesetzt wurde.

Zwei Fensterposition (LastRowLastRowLastRowLastRowlastRow,LastColLastColLastColLastCollastCol) und (CurrentRowCurrentRowCurrentRowCurrentRowcurrentRow, CurrentColCurrentColCurrentColCurrentColcurrentCol) werden in Rotation, Skalierung oder Bewegung umgewandelt, abhängig von ModeModeModeModemode. Diese Fensterkoordinaten müssen so angegeben werden, dass sie dem gesetzten Bildausschnitt entsprechen und damit auch subpixelgenau sind. Ist der Bildausschnitt durch (Zeile1,Spalte1,Zeile2,Spalte2) gegeben, entspricht die linke obere Ecke der Koordinate (Zeile1 - 0.5, Spalte1 - 0.5), die rechte untere Ecke der Koordinate (Zeile2 - 0.5, Spalte2 - 0.5). Die Operatoren get_mposition_sub_pixget_mposition_sub_pixGetMpositionSubPixGetMpositionSubPixGetMpositionSubPix oder get_mbutton_sub_pixget_mbutton_sub_pixGetMbuttonSubPixGetMbuttonSubPixGetMbuttonSubPix können verwendet werden, um diese Koordinaten direkt zu erhalten.

Wird 'rotate'"rotate""rotate""rotate""rotate" als ModeModeModeModemode gewählt, wird das Höhenmodell rotiert. Dabei werden beide Punkte auf eine virtuelle Kugel, die im Zentrum des Fensters ihren Mittelpunkt hat, projiziert. Der Bogen zwischen beiden Projektionen entspricht der Rotation, die auf das Höhenmodell angewandt wird.

Wird 'scale'"scale""scale""scale""scale" als ModeModeModeModemode gewählt, wird die Distanz zwischen dem Betrachter und dem Höhenmodell verringert, wenn CurrentRowCurrentRowCurrentRowCurrentRowcurrentRow größer ist als LastRowLastRowLastRowLastRowlastRow. Falls CurrentRowCurrentRowCurrentRowCurrentRowcurrentRow kleiner ist als LastRowLastRowLastRowLastRowlastRow, wird die Distanz vergrößert.

Wird 'move'"move""move""move""move" als ModeModeModeModemode gewählt, werden die Eingabepunkte auf eine Ebene, die parallel zur Betrachterebene durch die Mitte des Höhenmodells geht, projiziert. Das Zentrum des Höhenmodells wird um die Distanz zwischen beiden Projektionen bewegt.

Wird 'move_plane'"move_plane""move_plane""move_plane""move_plane" als ModeModeModeModemode gewählt, werden die Eingabepunkte auf die Ebene projiziert, die der Höhe Null entspricht. Das Höhenmodell wird um die Distanz zwischen beiden Projektionen bewegt.

Ausführungsinformationen

Parameter

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle (input_control)  window HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fenster-Handle.

LastRowLastRowLastRowLastRowlastRow (input_control)  point.y HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate des ersten Punktes

LastColLastColLastColLastCollastCol (input_control)  point.x HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate des ersten Punktes.

CurrentRowCurrentRowCurrentRowCurrentRowcurrentRow (input_control)  point.y HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate des zweiten Punktes.

CurrentColCurrentColCurrentColCurrentColcurrentCol (input_control)  point.x HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate des zweiten Punktes.

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Navigationsmodus.

Defaultwert: 'rotate' "rotate" "rotate" "rotate" "rotate"

Werteliste: 'move'"move""move""move""move", 'move_plane'"move_plane""move_plane""move_plane""move_plane", 'rotate'"rotate""rotate""rotate""rotate", 'scale'"scale""scale""scale""scale"

Beispiel (HDevelop)

* Interactive display of a height field
dev_set_paint ('3d_plot')
while (1)
  dev_set_check ('~give_error')
  get_mposition_sub_pix (WindowHandle, Row, Column, Button)
  dev_set_check ('give_error')
  if (ButtonDown and (Button == 0))
    ButtonDown := false
  endif
  if (not(Button == 0))
    if (ButtonDown)
      if (Button == 1)
        mode := 'rotate'
      endif
      if (Button == 4)
        mode := 'scale'
      endif
      if (Button == 5)
        mode := 'move'
      endif
      update_window_pose (WindowHandle, lastRow, lastCol, Row, Column, mode)
    else
      if (Button == 2)
        break
      endif
      ButtonDown := true
    endif
    lastCol := Column
    lastRow := Row
  endif
  dev_display (Image)
endwhile

Vorgänger

set_paintset_paintSetPaintSetPaintSetPaint, open_windowopen_windowOpenWindowOpenWindowOpenWindow, get_mposition_sub_pixget_mposition_sub_pixGetMpositionSubPixGetMpositionSubPixGetMpositionSubPix, get_mbutton_sub_pixget_mbutton_sub_pixGetMbuttonSubPixGetMbuttonSubPixGetMbuttonSubPix

Nachfolger

disp_imagedisp_imageDispImageDispImageDispImage

Siehe auch

unproject_coordinatesunproject_coordinatesUnprojectCoordinatesUnprojectCoordinatesUnprojectCoordinates

Modul

Foundation