Changeset 1229 for trunk


Ignore:
Timestamp:
Nov 24, 2008 2:21:14 PM (15 years ago)
Author:
gah
Message:

adding panning to nanovisviewer

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/nanovisviewer.tcl

    r1228 r1229  
    12721272    # Experimental stuff
    12731273    if { $option == "set" } {
    1274         set dx $x
    1275         set dy $y
    1276         set view_(x) [expr $view_(x) + $dx]
    1277         set view_(y) [expr $view_(y) + $dy]
    1278         _send "pan $dx $dy"
     1274        set view_(x) $x
     1275        set view_(y) $y
     1276        _send "camera pan $view_(x) $view_(y)"
    12791277        return
    12801278    }
     
    12851283        set view_(x) [expr $view_(x) + $x]
    12861284        set view_(y) [expr $view_(y) + $y]
    1287         _send "camera pan $view_(x) $view_(y) 0"
     1285        _send "camera pan $view_(x) $view_(y)"
    12881286    }
    12891287    if { $option == "release" } {
  • trunk/packages/vizservers/nanovis/Command.cpp

    r1219 r1229  
    693693}
    694694
    695 static int
    696 CameraEyeOp(ClientData cdata, Tcl_Interp *interp, int objc,
    697              Tcl_Obj *const *objv)
     695
     696static int
     697CameraAimOp(ClientData cdata, Tcl_Interp *interp, int objc,
     698            Tcl_Obj *const *objv)
    698699{
    699700    float x, y, z;
     
    703704        return TCL_ERROR;
    704705    }
    705     NanoVis::cam->x(x);
    706     NanoVis::cam->y(y);
    707     NanoVis::cam->z(z);
    708     return TCL_OK;
    709 }
    710 
    711 static int
    712 CameraAimOp(ClientData cdata, Tcl_Interp *interp, int objc,
    713             Tcl_Obj *const *objv)
    714 {
    715     float x, y, z;
    716     if ((GetFloatFromObj(interp, objv[2], &x) != TCL_OK) ||
    717         (GetFloatFromObj(interp, objv[3], &y) != TCL_OK) ||
    718         (GetFloatFromObj(interp, objv[4], &z) != TCL_OK)) {
    719         return TCL_ERROR;
    720     }
    721706    NanoVis::cam->aim(x, y, z);
    722707    return TCL_OK;
     
    727712              Tcl_Obj *const *objv)
    728713{
    729     double theta, phi, psi;
    730     if ((Tcl_GetDoubleFromObj(interp, objv[2], &phi) != TCL_OK) ||
    731         (Tcl_GetDoubleFromObj(interp, objv[3], &theta) != TCL_OK) ||
    732         (Tcl_GetDoubleFromObj(interp, objv[4], &psi) != TCL_OK)) {
     714    float theta, phi, psi;
     715    if ((GetFloatFromObj(interp, objv[2], &phi) != TCL_OK) ||
     716        (GetFloatFromObj(interp, objv[3], &theta) != TCL_OK) ||
     717        (GetFloatFromObj(interp, objv[4], &psi) != TCL_OK)) {
    733718        return TCL_ERROR;
    734719    }
     
    739724
    740725static int
    741 CameraZoomOp(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *const *objv)
    742 {
    743     double zoom;
    744     if (Tcl_GetDoubleFromObj(interp, objv[2], &zoom) != TCL_OK) {
    745         return TCL_ERROR;
    746     }
    747     NanoVis::cam->z(-2.5 / zoom);
     726CameraPanOp(ClientData cdata, Tcl_Interp *interp, int objc,
     727             Tcl_Obj *const *objv)
     728{
     729    float x, y;
     730    if ((GetFloatFromObj(interp, objv[2], &x) != TCL_OK) ||
     731        (GetFloatFromObj(interp, objv[3], &y) != TCL_OK)) {
     732        return TCL_ERROR;
     733    }
     734    /* Convert to normalized coordinates */
     735    x = x / (float)NanoVis::win_width;
     736    y = y / (float)NanoVis::win_height;
     737    /* Move the camera and its target by equal amounts along the x and y
     738     * axes. */
     739    NanoVis::cam->x(NanoVis::cam->x() + x);
     740    NanoVis::cam->y(NanoVis::cam->y() + y);
     741    fprintf(stderr, "dx=%f, dy=%f\n", x, y);
     742    fprintf(stderr, "set eye to %f %f\n", NanoVis::cam->x(), NanoVis::cam->y());
     743    Vector3 target;
     744    target = NanoVis::cam->aim();
     745    x += target.x;
     746    y += target.y;
     747    NanoVis::cam->aim(x, y, target.z);
     748    fprintf(stderr, "set aim to %f %f\n", x, y);
     749    return TCL_OK;
     750}
     751
     752static int
     753CameraZoomOp(ClientData cdata, Tcl_Interp *interp, int objc,
     754             Tcl_Obj *const *objv)
     755{
     756    float zoom;
     757    if (GetFloatFromObj(interp, objv[2], &zoom) != TCL_OK) {
     758        return TCL_ERROR;
     759    }
     760    NanoVis::cam->z(-2.5f / zoom);
    748761    return TCL_OK;
    749762}
     
    752765    {"aim",     2, CameraAimOp,      5, 5, "x y z",},
    753766    {"angle",   2, CameraAngleOp,    5, 5, "xAngle yAngle zAngle",},
    754     {"eye",     1, CameraEyeOp,      5, 5, "x y z",},
     767    {"pan",     1, CameraPanOp,      4, 4, "x y",},
    755768    {"zoom",    1, CameraZoomOp,     3, 3, "factor",},
    756769};
Note: See TracChangeset for help on using the changeset viewer.