update_window_poseT_update_window_poseUpdateWindowPoseUpdateWindowPoseupdate_window_pose (Operator)
Name
update_window_poseT_update_window_poseUpdateWindowPoseUpdateWindowPoseupdate_window_pose — Verändern der Pose eines 3D-Plots.
Signatur
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_poseUpdateWindowPoseUpdateWindowPoseUpdateWindowPoseupdate_window_pose vereinfacht das Setzen der
Orientierung und der Lage des Höhenmodells, das vom Operator disp_objdisp_objDispObjDispObjDispObjdisp_obj
angezeigt wird, sofern der Darstellungsmodus mittels set_paintset_paintSetPaintSetPaintSetPaintset_paint auf
'3d_plot'"3d_plot""3d_plot""3d_plot""3d_plot""3d_plot" gesetzt wurde.
Zwei Fensterposition (LastRowLastRowLastRowLastRowlastRowlast_row,LastColLastColLastColLastCollastCollast_col) und
(CurrentRowCurrentRowCurrentRowCurrentRowcurrentRowcurrent_row, CurrentColCurrentColCurrentColCurrentColcurrentColcurrent_col) werden in Rotation, Skalierung
oder Bewegung umgewandelt, abhängig von ModeModeModeModemodemode. 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_pixGetMpositionSubPixGetMpositionSubPixGetMpositionSubPixget_mposition_sub_pix oder
get_mbutton_sub_pixget_mbutton_sub_pixGetMbuttonSubPixGetMbuttonSubPixGetMbuttonSubPixget_mbutton_sub_pix können verwendet werden, um diese Koordinaten
direkt zu erhalten.
Wird 'rotate'"rotate""rotate""rotate""rotate""rotate" als ModeModeModeModemodemode 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""scale" als ModeModeModeModemodemode gewählt, wird die Distanz zwischen
dem Betrachter und dem Höhenmodell verringert, wenn CurrentRowCurrentRowCurrentRowCurrentRowcurrentRowcurrent_row größer
ist als LastRowLastRowLastRowLastRowlastRowlast_row. Falls CurrentRowCurrentRowCurrentRowCurrentRowcurrentRowcurrent_row kleiner ist als
LastRowLastRowLastRowLastRowlastRowlast_row, wird die Distanz vergrößert.
Wird 'move'"move""move""move""move""move" als ModeModeModeModemodemode 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""move_plane" als ModeModeModeModemodemode 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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
WindowHandleWindowHandleWindowHandleWindowHandlewindowHandlewindow_handle (input_control) window → HWindow, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Fenster-Handle.
LastRowLastRowLastRowLastRowlastRowlast_row (input_control) point.y → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des ersten Punktes
LastColLastColLastColLastCollastCollast_col (input_control) point.x → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des ersten Punktes.
CurrentRowCurrentRowCurrentRowCurrentRowcurrentRowcurrent_row (input_control) point.y → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Zeilenkoordinate des zweiten Punktes.
CurrentColCurrentColCurrentColCurrentColcurrentColcurrent_col (input_control) point.x → HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Spaltenkoordinate des zweiten Punktes.
ModeModeModeModemodemode (input_control) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Navigationsmodus.
Defaultwert:
'rotate'
"rotate"
"rotate"
"rotate"
"rotate"
"rotate"
Werteliste: 'move'"move""move""move""move""move", 'move_plane'"move_plane""move_plane""move_plane""move_plane""move_plane", 'rotate'"rotate""rotate""rotate""rotate""rotate", 'scale'"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_paintSetPaintSetPaintSetPaintset_paint,
open_windowopen_windowOpenWindowOpenWindowOpenWindowopen_window,
get_mposition_sub_pixget_mposition_sub_pixGetMpositionSubPixGetMpositionSubPixGetMpositionSubPixget_mposition_sub_pix,
get_mbutton_sub_pixget_mbutton_sub_pixGetMbuttonSubPixGetMbuttonSubPixGetMbuttonSubPixget_mbutton_sub_pix
Nachfolger
disp_imagedisp_imageDispImageDispImageDispImagedisp_image
Siehe auch
unproject_coordinatesunproject_coordinatesUnprojectCoordinatesUnprojectCoordinatesUnprojectCoordinatesunproject_coordinates
Modul
Foundation