| Operatoren |
update_window_pose — Verändern der Pose eines 3D-Plots.
update_window_pose( : : WindowHandle, LastRow, LastCol, CurrentRow, CurrentCol, Mode : )
Der Operator update_window_pose vereinfacht das Setzen der Orientierung und der Lage des Höhenmodells, das vom Operator disp_obj angezeigt wird, sofern der Darstellungsmodus mittels set_paint auf '3d_plot' gesetzt wurde.
Zwei Fensterposition (LastRow,LastCol) und (CurrentRow, CurrentCol) werden in Rotation, Skalierung oder Bewegung umgewandelt, abhängig von Mode. 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_pix oder get_mbutton_sub_pix können verwendet werden, um diese Koordinaten direkt zu erhalten.
Wird 'rotate' als Mode 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' als Mode gewählt, wird die Distanz zwischen dem Betrachter und dem Höhenmodell verringert, wenn CurrentRow größer ist als LastRow. Falls CurrentRow kleiner ist als LastRow, wird die Distanz vergrößert.
Wird 'move' als Mode 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' als Mode 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.
Fenster-Handle.
Zeilenkoordinate des ersten Punktes
Spaltenkoordinate des ersten Punktes.
Zeilenkoordinate des zweiten Punktes.
Spaltenkoordinate des zweiten Punktes.
Navigationsmodus.
Defaultwert: 'rotate'
Werteliste: 'move', 'move_plane', 'rotate', 'scale'
* 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
set_paint, open_window, get_mposition_sub_pix, get_mbutton_sub_pix
Foundation
| Operatoren |