Changeset 1229 for trunk/packages/vizservers/nanovis
- Timestamp:
- Nov 24, 2008, 2:21:14 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/Command.cpp
r1219 r1229 693 693 } 694 694 695 static int 696 CameraEyeOp(ClientData cdata, Tcl_Interp *interp, int objc, 697 Tcl_Obj *const *objv) 695 696 static int 697 CameraAimOp(ClientData cdata, Tcl_Interp *interp, int objc, 698 Tcl_Obj *const *objv) 698 699 { 699 700 float x, y, z; … … 703 704 return TCL_ERROR; 704 705 } 705 NanoVis::cam->x(x);706 NanoVis::cam->y(y);707 NanoVis::cam->z(z);708 return TCL_OK;709 }710 711 static int712 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 }721 706 NanoVis::cam->aim(x, y, z); 722 707 return TCL_OK; … … 727 712 Tcl_Obj *const *objv) 728 713 { 729 doubletheta, 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)) { 733 718 return TCL_ERROR; 734 719 } … … 739 724 740 725 static 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); 726 CameraPanOp(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 752 static int 753 CameraZoomOp(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); 748 761 return TCL_OK; 749 762 } … … 752 765 {"aim", 2, CameraAimOp, 5, 5, "x y z",}, 753 766 {"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",}, 755 768 {"zoom", 1, CameraZoomOp, 3, 3, "factor",}, 756 769 };
Note: See TracChangeset
for help on using the changeset viewer.