Changeset bc3953 for molecuilder/src
- Timestamp:
- Aug 20, 2009, 3:40:49 PM (16 years ago)
- Children:
- 2aea0b, 390a2b
- Parents:
- 6c6d84
- Location:
- molecuilder/src
- Files:
-
- 7 edited
-
atom.cpp (modified) (2 diffs)
-
molecules.cpp (modified) (2 diffs)
-
molecules.hpp (modified) (1 diff)
-
vector.cpp (modified) (1 diff)
-
vector.hpp (modified) (1 diff)
-
vectorunittest.cpp (modified) (1 diff)
-
vectorunittest.hpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/atom.cpp
r6c6d84 rbc3953 38 38 previous = NULL; 39 39 next = NULL; 40 father = this; // generally, father is itself40 father = pointer; // generally, father is itself 41 41 Ancestor = NULL; 42 42 GraphNr = -1; … … 53 53 nr = -1; 54 54 sort = &nr; 55 node = &x; 55 56 } 56 57 -
molecuilder/src/molecules.cpp
r6c6d84 rbc3953 176 176 * Increases molecule::last_atom and gives last number to added atom. 177 177 * \param *pointer allocated and set atom 178 * \return true - succeeded, false - atom not found in list178 * \return pointer to the newly added atom 179 179 */ 180 180 atom * molecule::AddCopyAtom(atom *pointer) … … 612 612 return copy; 613 613 }; 614 615 616 /** 617 * Copies all atoms of a molecule which are within the defined parallelepiped. 618 * 619 * @param offest for the origin of the parallelepiped 620 * @param three vectors forming the matrix that defines the shape of the parallelpiped 621 */ 622 molecule* molecule::CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped) { 623 molecule *copy = new molecule(elemente); 624 atom *Walker = start; 625 626 while(Walker->next != end) { 627 Walker = Walker->next; 628 if (Walker->x.IsInParallelepiped(offset, parallelepiped)) { 629 cout << "Adding atom " << *Walker << endl; 630 copy->AddCopyAtom(Walker); 631 } 632 } 633 634 //TODO: copy->BuildInducedSubgraph((ofstream *)&cout, this); 635 636 return copy; 637 } 614 638 615 639 /** Adds a bond to a the molecule specified by two atoms, \a *first and \a *second. -
molecuilder/src/molecules.hpp
r6c6d84 rbc3953 207 207 208 208 molecule *CopyMolecule(); 209 molecule* CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped); 209 210 210 211 /// Fragment molecule by two different approaches: -
molecuilder/src/vector.cpp
r6c6d84 rbc3953 1221 1221 return true; 1222 1222 }; 1223 1224 /** 1225 * Checks whether this vector is within the parallelepiped defined by the given three vectors and 1226 * their offset. 1227 * 1228 * @param offest for the origin of the parallelepiped 1229 * @param three vectors forming the matrix that defines the shape of the parallelpiped 1230 */ 1231 bool Vector::IsInParallelepiped(Vector offset, double *parallelepiped) 1232 { 1233 Vector a; 1234 a.CopyVector(this); 1235 a.SubtractVector(&offset); 1236 a.InverseMatrixMultiplication(parallelepiped); 1237 bool isInside = true; 1238 1239 for (int i=NDIM;i--;) 1240 isInside = isInside && ((a.x[i] <= 1) && (a.x[i] >= 0)); 1241 1242 return isInside; 1243 } -
molecuilder/src/vector.hpp
r6c6d84 rbc3953 68 68 void AskPosition(double *cell_size, bool check); 69 69 bool Output(ofstream *out) const; 70 bool IsInParallelepiped(Vector offset, double *parallelepiped); 70 71 }; 71 72 -
molecuilder/src/vectorunittest.cpp
r6c6d84 rbc3953 258 258 } 259 259 260 /** 261 * UnitTest for Vector::IsInParallelepiped(). 262 */ 263 void VectorTest::IsInParallelepipedTest() 264 { 265 double parallelepiped[NDIM*NDIM]; 266 parallelepiped[0] = 1; 267 parallelepiped[1] = 0; 268 parallelepiped[2] = 0; 269 parallelepiped[3] = 0; 270 parallelepiped[4] = 1; 271 parallelepiped[5] = 0; 272 parallelepiped[6] = 0; 273 parallelepiped[7] = 0; 274 parallelepiped[8] = 1; 275 276 fixture.CopyVector(zero); 277 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 278 fixture.Init(2.5,2.5,2.5); 279 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 280 fixture.Init(1.,1.,1.); 281 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 282 fixture.Init(3.5,3.5,3.5); 283 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 284 fixture.Init(2.,2.,2.); 285 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 286 fixture.Init(2.,3.,2.); 287 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 288 fixture.Init(-2.,2.,-1.); 289 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 290 } 291 260 292 261 293 /********************************************** Main routine **************************************/ -
molecuilder/src/vectorunittest.hpp
r6c6d84 rbc3953 28 28 CPPUNIT_TEST ( LineIntersectionTest ); 29 29 CPPUNIT_TEST ( VectorRotationTest ); 30 CPPUNIT_TEST ( IsInParallelepipedTest ); 30 31 CPPUNIT_TEST_SUITE_END(); 31 32 … … 44 45 void LineIntersectionTest(); 45 46 void VectorRotationTest(); 47 void IsInParallelepipedTest(); 46 48 47 49 private:
Note:
See TracChangeset
for help on using the changeset viewer.
