Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/MoleculeAction/RotateAroundSelfByAngleAction.cpp

    rb8463f r833b15  
    6262  }
    6363
    64   // check whether Axis is valid
    65   if (params.Axis.get().IsZero()) {
    66     STATUS("Rotation Axis must not be zero.");
    67     return Action::failure;
    68   }
    69 
    70   // convert from degrees to radian
    71   const double angle_radian = params.angle.get() * M_PI/180.;
    72 
    7364  // go through all selected molecules
    7465  BOOST_FOREACH(molecule *mol, selectedMolecules) {
     66    // check whether Axis is valid
     67    if (params.Axis.get().IsZero()) {
     68      STATUS("Rotation Axis must not be zero.");
     69      return Action::failure;
     70    }
     71
     72    // convert from degrees to radian
     73    params.angle.set(params.angle.get() * M_PI/180.);
     74
    7575    // Creation Line that is the rotation axis
    7676    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
    77     LOG(3, "DEBUG: Center of gravity is " << CenterOfGravity << ".");
     77    LOG(0,  "Center of gravity is " << CenterOfGravity << ".");
    7878    Line RotationAxis(CenterOfGravity, params.Axis.get());
    79     LOG(2, "DEBUG: Rotate " << mol->getName() << " around self by " << angle_radian << " radian around axis " << RotationAxis << ".");
     79    LOG(0, "Rotate " << mol->getName() << " around self by " << params.angle.get() << " radian around axis " << RotationAxis << ".");
    8080
    8181    for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) {
    82       (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), angle_radian));
     82      (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), params.angle.get()));
    8383    }
    84     LOG(2, "DEBUG: Rotatating of " << mol->getName() << " done.");
     84    LOG(0, "done.");
    8585  }
    8686
     
    9191  MoleculeRotateAroundSelfByAngleState *state = assert_cast<MoleculeRotateAroundSelfByAngleState*>(_state.get());
    9292
    93   // convert from degrees to radian
    94   const double angle_radian = -state->params.angle.get() * M_PI/180.;
    95 
    9693  BOOST_FOREACH(molecule *mol, state->selectedMolecules) {
    9794    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
    9895    LOG(0,  "Center of gravity is " <<CenterOfGravity << ".");
    9996    Line RotationAxis(CenterOfGravity, state->params.Axis.get());
    100     LOG(0, "Rotate " << mol->getName() << " around self by " << angle_radian << " radian around axis " << RotationAxis << ".");
     97    LOG(0, "Rotate " << mol->getName() << " around self by " << -state->params.angle.get() << " radian around axis " << RotationAxis << ".");
    10198
    102     for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter)
    103       (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), angle_radian));
     99    for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) {
     100      (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), -state->params.angle.get()));
     101    }
    104102  }
    105103
     
    110108  MoleculeRotateAroundSelfByAngleState *state = assert_cast<MoleculeRotateAroundSelfByAngleState*>(_state.get());
    111109
    112   // convert from degrees to radian
    113   const double angle_radian = state->params.angle.get() * M_PI/180.;
    114 
    115110  BOOST_FOREACH(molecule *mol, state->selectedMolecules) {
    116111    const Vector CenterOfGravity = mol->DetermineCenterOfGravity();
    117112    LOG(0,  "Center of gravity is " << CenterOfGravity << ".");
    118113    Line RotationAxis(CenterOfGravity, state->params.Axis.get());
    119     LOG(0, "Rotate " << mol->getName() << " around self by " << angle_radian << " radian around axis " << RotationAxis << ".");
     114    LOG(0, "Rotate " << mol->getName() << " around self by " << state->params.angle.get() << " radian around axis " << RotationAxis << ".");
    120115
    121     for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter)
    122       (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), angle_radian));
     116    for (molecule::iterator iter = mol->begin(); iter != mol->end(); ++iter) {
     117      (*iter)->setPosition(RotationAxis.rotateVector((*iter)->getPosition(), state->params.angle.get()));
     118    }
    123119  }
    124120
Note: See TracChangeset for help on using the changeset viewer.