1 /* 2 * This program source code file is part of KiCad, a free EDA CAD application. 3 * 4 * Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr 5 * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, you may find one here: 19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 20 * or you may search the http://www.gnu.org website for the version 2 license, 21 * or you may write to the Free Software Foundation, Inc., 22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 23 */ 24 25 #ifndef __CONVEX_HULL_H 26 #define __CONVEX_HULL_H 27 28 29 #include <vector> 30 class wxPoint; // Defined in wxWidgets 31 class SHAPE_POLY_SET; 32 33 /** 34 * Calculate the convex hull of a list of points 35 * in counter-clockwise order. 36 * @param aResult = a vector to store the convex polygon. 37 * @param aPoly is the list of points. 38 */ 39 40 void BuildConvexHull( std::vector<wxPoint>& aResult, const std::vector<wxPoint>& aPoly); 41 42 43 /** 44 * Calculate the convex hull of a SHAPE_POLY_SET 45 * @param aResult = a vector to store the convex polygon. 46 * @param aPolygons = the SHAPE_POLY_SET 47 */ 48 void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons ); 49 50 /** 51 * Calculate the convex hull (rotated and moved) of a SHAPE_POLY_SET 52 * @param aResult = a vector to store the convex polygon. 53 * @param aPolygons is the set of polygons 54 * @param aPosition = the final position of the convex hull 55 * @param aRotation = the rotation of the convex hull 56 */ 57 void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons, 58 wxPoint aPosition, double aRotation ); 59 #endif // __CONVEX_HULL_H 60