Ignore:
Timestamp:
Apr 29, 2010, 1:55:21 PM (16 years ago)
Author:
Tillmann Crueger <crueger@…>
Children:
070651, 5d1a94
Parents:
90c4460 (diff), 32842d8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'VectorRefactoring' into StructureRefactoring

Conflicts:

molecuilder/src/Legacy/oldmenu.cpp
molecuilder/src/Makefile.am
molecuilder/src/analysis_correlation.cpp
molecuilder/src/boundary.cpp
molecuilder/src/builder.cpp
molecuilder/src/config.cpp
molecuilder/src/ellipsoid.cpp
molecuilder/src/linkedcell.cpp
molecuilder/src/molecule.cpp
molecuilder/src/molecule_fragmentation.cpp
molecuilder/src/molecule_geometry.cpp
molecuilder/src/molecule_graph.cpp
molecuilder/src/moleculelist.cpp
molecuilder/src/tesselation.cpp
molecuilder/src/tesselationhelpers.cpp
molecuilder/src/unittests/AnalysisCorrelationToSurfaceUnitTest.cpp
molecuilder/src/unittests/bondgraphunittest.cpp
molecuilder/src/vector.cpp
molecuilder/src/vector.hpp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/ellipsoid.cpp

    r90c4460 r0d111b  
    4242
    4343  // 1. translate coordinate system so that ellipsoid center is in origin
    44   helper.CopyVector(&x);
    45   helper.SubtractVector(&EllipsoidCenter);
    46   RefPoint.CopyVector(&helper);
     44  RefPoint = helper = x - EllipsoidCenter;
    4745  //Log() << Verbose(4) << "Translated given point is at " << RefPoint << "." << endl;
    4846
     
    6159  Matrix[8] = cos(theta);
    6260  helper.MatrixMultiplication(Matrix);
    63   helper.Scale(InverseLength);
     61  helper.ScaleAll(InverseLength);
    6462  //Log() << Verbose(4) << "Transformed RefPoint is at " << helper << "." << endl;
    6563
     
    7270  theta = -EllipsoidAngle[1];
    7371  phi = -EllipsoidAngle[2];
    74   helper.Scale(EllipsoidLength);
     72  helper.ScaleAll(EllipsoidLength);
    7573  Matrix[0] = cos(psi)*cos(phi) - sin(psi)*cos(theta)*sin(phi);
    7674  Matrix[1] = -cos(psi)*sin(phi) - sin(psi)*cos(theta)*cos(phi);
     
    8684
    8785  // 5. determine distance between backtransformed point and x
    88   distance = RefPoint.DistanceSquared(&helper);
     86  distance = RefPoint.DistanceSquared(helper);
    8987  //Log() << Verbose(4) << "Squared distance between intersection and RefPoint is " << distance << "." << endl;
    9088
     
    116114  // put parameters into suitable ellipsoid form
    117115  for (int i=0;i<3;i++) {
    118     Center.x[i] = gsl_vector_get(x, i+0);
     116    Center[i] = gsl_vector_get(x, i+0);
    119117    EllipsoidLength[i] = gsl_vector_get(x, i+3);
    120118    EllipsoidAngle[i] = gsl_vector_get(x, i+6);
     
    160158    x = gsl_vector_alloc (9);
    161159    for (int i=0;i<3;i++) {
    162       gsl_vector_set (x, i+0, EllipsoidCenter->x[i]);
     160      gsl_vector_set (x, i+0, EllipsoidCenter->at(i));
    163161      gsl_vector_set (x, i+3, EllipsoidLength[i]);
    164162      gsl_vector_set (x, i+6, EllipsoidAngle[i]);
     
    195193      if (status == GSL_SUCCESS) {
    196194        for (int i=0;i<3;i++) {
    197           EllipsoidCenter->x[i] = gsl_vector_get (s->x,i+0);
     195          EllipsoidCenter->at(i) = gsl_vector_get (s->x,i+0);
    198196          EllipsoidLength[i] = gsl_vector_get (s->x, i+3);
    199197          EllipsoidAngle[i] = gsl_vector_get (s->x, i+6);
     
    304302                Candidate = (*Runner);
    305303                DoLog(2) && (Log() << Verbose(2) << "Current picked node is " << **Runner << " with index " << index << "." << endl);
    306                 x[PointsPicked++].CopyVector(Candidate->node);    // we have one more atom picked
     304                x[PointsPicked++] = *Candidate->node;    // we have one more atom picked
    307305                current++;    // next pre-picked atom
    308306              }
     
    350348      //Log() << Verbose(3) << "Current node is " << *Runner->second->node << " with " << value << " ... " << threshold << ": ";
    351349      if (value > threshold) {
    352         x[PointsPicked].CopyVector(Runner->second->node->node);
     350        x[PointsPicked] = (*Runner->second->node->node);
    353351        PointsPicked++;
    354352        //Log() << Verbose(0) << "IN." << endl;
     
    387385  Center.Zero();
    388386  for (PointMap::iterator Runner = T->PointsOnBoundary.begin(); Runner != T->PointsOnBoundary.end(); Runner++)
    389     Center.AddVector(Runner->second->node->node);
     387    Center += (*Runner->second->node->node);
    390388  Center.Scale(1./T->PointsOnBoundaryCount);
    391389  DoLog(1) && (Log() << Verbose(1) << "Center is at " << Center << "." << endl);
     
    405403    // calculate some sensible starting values for parameter fit
    406404    MaxDistance = 0.;
    407     MinDistance = x[0].ScalarProduct(&x[0]);
     405    MinDistance = x[0].ScalarProduct(x[0]);
    408406    for (int i=0;i<N;i++) {
    409       distance = x[i].ScalarProduct(&x[i]);
     407      distance = x[i].ScalarProduct(x[i]);
    410408      if (distance > MaxDistance)
    411409        MaxDistance = distance;
     
    414412    }
    415413    //Log() << Verbose(2) << "MinDistance " << MinDistance << ", MaxDistance " << MaxDistance << "." << endl;
    416     EllipsoidCenter.CopyVector(&Center);  // use Center of Gravity as initial center of ellipsoid
     414    EllipsoidCenter = Center;  // use Center of Gravity as initial center of ellipsoid
    417415    for (int i=0;i<3;i++)
    418416      EllipsoidAngle[i] = 0.;
     
    427425      output << number << "\t";
    428426      for (int i=0;i<3;i++)
    429         output << setprecision(9) << EllipsoidCenter.x[i] << "\t";
     427        output << setprecision(9) << EllipsoidCenter[i] << "\t";
    430428      for (int i=0;i<3;i++)
    431429        output << setprecision(9) << EllipsoidLength[i] << "\t";
Note: See TracChangeset for help on using the changeset viewer.