Changeset c48641 for src/Shapes
- Timestamp:
- Apr 5, 2012, 3:57:20 PM (13 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- b98a32
- Parents:
- 5cdd83
- git-author:
- Frederik Heber <heber@…> (04/03/12 14:29:31)
- git-committer:
- Frederik Heber <heber@…> (04/05/12 15:57:20)
- Location:
- src/Shapes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Shapes/ShapeOps.cpp
r5cdd83 rc48641 90 90 91 91 std::vector<Vector> ShapeOpsBase_impl::getHomogeneousPointsOnSurface(const size_t N) const { 92 return getArg()->getHomogeneousPointsOnSurface(N); 92 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N); 93 std::transform(PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(), 94 boost::bind(&ShapeOpsBase_impl::translateOutPos, this, _1) ); 95 return PointsOnSurface; 93 96 } 94 97 95 98 std::vector<Vector> ShapeOpsBase_impl::getHomogeneousPointsInVolume(const size_t N) const { 96 return getArg()->getHomogeneousPointsInVolume(N); 99 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N); 100 std::transform(PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(), 101 boost::bind(&ShapeOpsBase_impl::translateOutPos, this, _1) ); 102 return PointsOnSurface; 97 103 } 98 104 … … 144 150 } 145 151 146 std::vector<Vector> Resize_impl::getHomogeneousPointsOnSurface(const size_t N) const {147 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);148 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),149 boost::bind(&Vector::operator*, _1, size) );150 return PointsOnSurface;151 }152 153 std::vector<Vector> Resize_impl::getHomogeneousPointsInVolume(const size_t N) const {154 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);155 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),156 boost::bind(&Vector::operator*, _1, size) );157 return std::vector<Vector>();158 }159 160 161 152 Shape resize(const Shape &arg,double size){ 162 153 Shape::impl_ptr impl = Shape::impl_ptr(new Resize_impl(getShapeImpl(arg),size)); … … 212 203 sstr << "translate(" << getArg()->toString() << "," << offset << ")"; 213 204 return sstr.str(); 214 }215 216 std::vector<Vector> Translate_impl::getHomogeneousPointsOnSurface(const size_t N) const {217 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);218 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),219 boost::bind(&Vector::operator+, _1, offset) );220 return PointsOnSurface;221 }222 223 std::vector<Vector> Translate_impl::getHomogeneousPointsInVolume(const size_t N) const {224 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);225 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),226 boost::bind(&Vector::operator+, _1, offset) );227 return PointsOnSurface;228 205 } 229 206 … … 294 271 } 295 272 296 std::vector<Vector> Stretch_impl::getHomogeneousPointsOnSurface(const size_t N) const {297 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);298 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),299 boost::bind( static_cast<void (Vector::*)(const Vector&)>(&Vector::ScaleAll), _1, reciFactors) );300 return PointsOnSurface;301 }302 303 std::vector<Vector> Stretch_impl::getHomogeneousPointsInVolume(const size_t N) const {304 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);305 std::for_each(PointsOnSurface.begin(), PointsOnSurface.end(),306 boost::bind( static_cast<void (Vector::*)(const Vector&)>(&Vector::ScaleAll), _1, reciFactors) );307 return PointsOnSurface;308 }309 310 273 Shape stretch(const Shape &arg, const Vector &factors){ 311 274 Shape::impl_ptr impl = Shape::impl_ptr(new Stretch_impl(getShapeImpl(arg),factors)); … … 357 320 } 358 321 359 std::vector<Vector> Transform_impl::getHomogeneousPointsOnSurface(const size_t N) const {360 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsOnSurface(N);361 std::transform( PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(),362 boost::bind(static_cast<Vector(*)(const RealSpaceMatrix&,const Vector&)>(operator*), transformation, _1));363 return PointsOnSurface;364 }365 366 std::vector<Vector> Transform_impl::getHomogeneousPointsInVolume(const size_t N) const {367 std::vector<Vector> PointsOnSurface = getArg()->getHomogeneousPointsInVolume(N);368 std::transform( PointsOnSurface.begin(), PointsOnSurface.end(), PointsOnSurface.begin(),369 boost::bind(static_cast<Vector(*)(const RealSpaceMatrix&,const Vector&)>(operator*), transformation, _1));370 return PointsOnSurface;371 }372 373 322 Shape transform(const Shape &arg, const RealSpaceMatrix &transformation){ 374 323 Shape::impl_ptr impl = Shape::impl_ptr(new Transform_impl(getShapeImpl(arg),transformation)); -
src/Shapes/ShapeOps_impl.hpp
r5cdd83 rc48641 60 60 virtual std::string toString() const; 61 61 virtual bool isInside(const Vector& point) const; 62 virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;63 virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;64 62 private: 65 63 double size; … … 81 79 virtual std::string toString() const; 82 80 virtual bool isInside(const Vector& point) const; 83 virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;84 virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;85 81 private: 86 82 Vector offset; … … 102 98 virtual std::string toString() const; 103 99 virtual bool isInside(const Vector& point) const; 104 virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;105 virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;106 100 private: 107 101 Vector factors; … … 122 116 virtual std::string toString() const; 123 117 virtual bool isInside(const Vector& point) const; 124 virtual std::vector<Vector> getHomogeneousPointsOnSurface(const size_t N) const;125 virtual std::vector<Vector> getHomogeneousPointsInVolume(const size_t N) const;126 118 private: 127 119 RealSpaceMatrix transformation; -
src/Shapes/unittests/Makefile.am
r5cdd83 rc48641 50 50 Shape_HomogeneousPointsUnitTest_SOURCES = $(top_srcdir)/src/unittests/UnitTestMain.cpp \ 51 51 ../Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp \ 52 ../Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp 52 ../Shapes/unittests/Shape_HomogeneousPointsUnitTest.hpp \ 53 ../Shapes/unittests/stubs/ApproximateShapeAreaStub.cpp \ 54 ../Shapes/unittests/stubs/ApproximateShapeVolumeStub.cpp 53 55 nodist_Shape_HomogeneousPointsUnitTest_SOURCES = \ 54 56 ../Helpers/defs.hpp \ -
src/Shapes/unittests/Shape_HomogeneousPointsUnitTest.cpp
r5cdd83 rc48641 24 24 #include <cmath> 25 25 #include <limits> 26 #include <vector> 26 27 27 28 #ifdef HAVE_TESTRUNNER … … 31 32 #include "CodePatterns/Assert.hpp" 32 33 34 #include "LinearAlgebra/Vector.hpp" 33 35 #include "Shapes/BaseShapes.hpp" 34 36 #include "Shapes/Shape.hpp" … … 53 55 void Shape_HomogeneousPointsTest::surfaceTest() 54 56 { 55 CPPUNIT_ASSERT(true); 57 { 58 Shape s = Sphere(); 59 std::vector<Vector> nodes = s.getHomogeneousPointsOnSurface(12); 60 CPPUNIT_ASSERT_EQUAL( (size_t)12, nodes.size()); 61 for (size_t i=0;i<12;++i) 62 CPPUNIT_ASSERT( s.isOnSurface(nodes[i]) ); 63 } 64 { 65 Shape s = Sphere(zeroVec, 2.); 66 std::vector<Vector> nodes = s.getHomogeneousPointsOnSurface(12); 67 CPPUNIT_ASSERT_EQUAL( (size_t)12, nodes.size()); 68 for (size_t i=0;i<12;++i) 69 CPPUNIT_ASSERT( s.isOnSurface(nodes[i]) ); 70 } 56 71 } 57 72 … … 61 76 void Shape_HomogeneousPointsTest::volumeTest() 62 77 { 63 CPPUNIT_ASSERT(true); 78 // is not implemented 79 // Shape s = Sphere(); 80 // std::vector<Vector> nodes = s.getHomogeneousPointsInVolume(12); 81 // CPPUNIT_ASSERT_EQUAL( (size_t)12, nodes.size()); 82 // for (size_t i=0;i<12;++i) 83 // CPPUNIT_ASSERT( s.isInside(nodes[i]) ); 64 84 }
Note:
See TracChangeset
for help on using the changeset viewer.