mesh_triangle_holes.C
Go to the documentation of this file.00001 // The libMesh Finite Element Library. 00002 // Copyright (C) 2002-2012 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 00019 #include "libmesh/libmesh_config.h" 00020 00021 #ifdef LIBMESH_HAVE_TRIANGLE 00022 00023 // Local includes 00024 #include "libmesh/mesh_triangle_holes.h" 00025 00026 namespace libMesh 00027 { 00028 00029 // 00030 // PolygonHole member functions 00031 // 00032 TriangleInterface::PolygonHole::PolygonHole(Point center, Real radius, unsigned int n_points_in) 00033 : _center(center), 00034 _radius(radius), 00035 _n_points(n_points_in) 00036 {} 00037 00038 00039 unsigned int TriangleInterface::PolygonHole::n_points() const 00040 { 00041 return _n_points; 00042 } 00043 00044 Point TriangleInterface::PolygonHole::point(const unsigned int n) const 00045 { 00046 // The nth point lies at the angle theta = 2 * pi * n / _n_points 00047 const Real theta = static_cast<Real>(n) * 2.0 * libMesh::pi / static_cast<Real>(_n_points); 00048 00049 return Point(_center(0) + _radius*std::cos(theta), // x=r*cos(theta) 00050 _center(1) + _radius*std::sin(theta), // y=r*sin(theta) 00051 0.); 00052 } 00053 00054 00055 00056 Point TriangleInterface::PolygonHole::inside() const 00057 { 00058 // The center of the hole is definitely inside. 00059 return _center; 00060 } 00061 00062 00063 00064 00065 // 00066 // ArbitraryHole member functions 00067 // 00068 TriangleInterface::ArbitraryHole::ArbitraryHole(const Point center, 00069 const std::vector<Point>& points) 00070 : _center(center), 00071 _points(points) 00072 {} 00073 00074 00075 unsigned int TriangleInterface::ArbitraryHole::n_points() const 00076 { 00077 return _points.size(); 00078 } 00079 00080 00081 Point TriangleInterface::ArbitraryHole::point(const unsigned int n) const 00082 { 00083 libmesh_assert_less (n, _points.size()); 00084 return _points[n]; 00085 } 00086 00087 00088 Point TriangleInterface::ArbitraryHole::inside() const 00089 { 00090 return _center; 00091 } 00092 00093 00094 } // namespace libMesh 00095 00096 00097 #endif // LIBMESH_HAVE_TRIANGLE
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:47 UTC
Hosted By: