Changes in src/Shapes/BaseShapes.cpp [57f243:bcf653]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Shapes/BaseShapes.cpp
r57f243 rbcf653 1 /* 2 * Project: MoleCuilder 3 * Description: creates and alters molecular systems 4 * Copyright (C) 2010 University of Bonn. All rights reserved. 5 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details. 6 */ 7 1 8 /* 2 9 * BaseShapes_impl.cpp … … 6 13 */ 7 14 15 // include config.h 16 #ifdef HAVE_CONFIG_H 17 #include <config.h> 18 #endif 19 20 #include "Helpers/MemDebug.hpp" 21 8 22 #include "Shapes/BaseShapes.hpp" 9 23 #include "Shapes/BaseShapes_impl.hpp" 10 24 25 #include <cmath> 26 27 #include "Helpers/Assert.hpp" 11 28 #include "LinearAlgebra/Vector.hpp" 12 29 … … 14 31 return point.NormSquared()<=1; 15 32 } 33 34 35 /** 36 * algorithm taken from http://www.cgafaq.info/wiki/Evenly_distributed_points_on_sphere 37 * \param N number of points on surface 38 */ 39 std::vector<Vector> Sphere_impl::getHomogeneousPointsOnSurface(const int N) const { 40 std::vector<Vector> PointsOnSurface; 41 42 const double dlength = M_PI*(3.-sqrt(5.)); 43 double length = 0; 44 const double dz = 2.0/N; 45 double z = 1. - dz/2.; 46 Vector point; 47 for (int ka = 0; ka<N; ka++){ 48 const double r = sqrt(1.-z*z); 49 point.Zero(); 50 point[0] = cos(length)*r; 51 point[1] = sin(length)*r; 52 point[2] = z; 53 PointsOnSurface.push_back(point); 54 z = z - dz; 55 length = length + dlength; 56 } 57 58 ASSERT(PointsOnSurface.size() == N, "Sphere_impl::getHomogeneousPointsOnSurface() did not create enough points."); 59 return PointsOnSurface; 60 } 61 16 62 17 63 Shape Sphere(){ … … 21 67 22 68 bool Cuboid_impl::isInside(const Vector &point){ 23 return point[0]<=1 && point[1]<=1 && point[2]<=1; 69 return (point[0]>=0 && point[0]<=1) && (point[1]>=0 && point[1]<=1) && (point[2]>=0 && point[2]<=1); 70 } 71 72 /** 73 * \param N number of points on surface 74 */ 75 std::vector<Vector> Cuboid_impl::getHomogeneousPointsOnSurface(const int N) const { 76 std::vector<Vector> PointsOnSurface; 77 ASSERT(false, "Cuboid_impl::getHomogeneousPointsOnSurface() not implemented yet"); 78 return PointsOnSurface; 24 79 } 25 80 26 81 Shape Cuboid(){ 27 Shape::impl_ptr impl = Shape::impl_ptr(new Sphere_impl());82 Shape::impl_ptr impl = Shape::impl_ptr(new Cuboid_impl()); 28 83 return Shape(impl); 29 84 }
Note:
See TracChangeset
for help on using the changeset viewer.