*** cmndline.c 2004/12/30 02:56:26 1.1 --- cmndline.c 2004/12/30 02:55:19 *************** *** 637,654 **** static void PerformMouseFunc( int func, int delta, int max ) ! { switch( func ) ! { case(MM_ROTX): WrapDial( DialRX, (Real)(2*delta)/max ); ! ReDrawFlag |= RFRotateX; break; ! ! case(MM_ROTY): if ( (RotMode == RotBond) && BondSelected) { WrapDial( DialBRot, (Real)(2*delta)/max ); } else { ! WrapDial( DialRY, (Real)(2*delta)/max ); } ! ReDrawFlag |= RFRotateY; break; case(MM_ROTZ): WrapDial( DialRZ, (Real)(2*delta)/max ); --- 638,695 ---- static void PerformMouseFunc( int func, int delta, int max ) ! { Real xcomp, ycomp, zcomp; ! int dist; ! switch( func ) ! { case(MM_ROTX): if ( (RotMode == RotBond) && BondSelected) { ! WrapDial( DialBRot, (Real)(2*delta)/max ); ! } else { ! dist = PointX-XRange/2; ! if (dist < -XRange/8) { ! dist += XRange/8; ! dist *= 2; ! if (dist < -XRange/2) dist=-XRange/2; ! } else { ! dist -= XRange/8; ! if (dist < 0 ) dist = 0; ! dist *=2; ! if (dist > XRange/2) dist = XRange/2; ! } ! xcomp = (Real)(delta*(XRange/2-AbsFun(dist)))/((Real)(XRange/2)); ! zcomp = (Real)(delta*dist)/((Real)(XRange/2)); ! WrapDial( DialRX, 2*xcomp/(Real)max ); ! WrapDial( DialRZ, 1.8*zcomp/(Real)max ); ! /* WrapDial( DialRX, (Real)(2*delta)/max ); */ ! } ! ReDrawFlag |= RFRotateX|RFRotateZ; break; ! ! case(MM_ROTY): if ( (RotMode == RotBond) && BondSelected) { WrapDial( DialBRot, (Real)(2*delta)/max ); } else { ! dist = PointY-YRange/2; ! if (dist < -YRange/8) { ! dist += YRange/8; ! dist *= 2; ! if (dist < -YRange/2) dist=-YRange/2; ! } else { ! dist -= YRange/8; ! if (dist < 0 ) dist = 0; ! dist *=2; ! if (dist > YRange/2) dist = YRange/2; ! } ! ycomp = (Real)(delta*(YRange/2-AbsFun(dist)))/((Real)(YRange/2)); ! #ifdef INVERT ! zcomp = (Real)(delta*dist)/((Real)(YRange/2)); ! #else ! zcomp = (Real)(-delta*dist)/((Real)(YRange/2)); ! #endif ! WrapDial( DialRY, 2*ycomp/(Real)max ); ! WrapDial( DialRZ, 1.8*zcomp/(Real)max ); ! /* WrapDial( DialRY, (Real)(2*delta)/max ); */ } ! ReDrawFlag |= RFRotateY|RFRotateZ; break; case(MM_ROTZ): WrapDial( DialRZ, (Real)(2*delta)/max );