1 /* $Id$ 2 * 3 * Name: projections.hpp 4 * Authors: Pietro Belotti, Carnegie Mellon University 5 * Purpose: tools for projecting points on lines/planes 6 * 7 * (C) Carnegie-Mellon University, 2006-10. 8 * This file is licensed under the Eclipse Public License (EPL) 9 */ 10 11 #ifndef CouenneProjections_hpp 12 #define CouenneProjections_hpp 13 14 #include <stdio.h> 15 16 #include "CouennePrecisions.hpp" 17 18 namespace Couenne { 19 20 /** Compute projection of point (x0, y0) on the segment defined by 21 * line ax + by + c <>= 0 (sign provided by parameter sign) and 22 * bounds [lb, ub] on x. Return distance from segment, 0 if satisfied 23 */ 24 25 CouNumber project (CouNumber a, CouNumber b, CouNumber c, 26 CouNumber x0, CouNumber y0, 27 CouNumber lb, CouNumber ub, 28 int sign, 29 CouNumber *xp = NULL, CouNumber *yp = NULL); 30 31 /** Compute projection of point (x0, y0) on the segment defined by two 32 * points (x1,y1), (x2, y2) -- sign provided by parameter 33 * sign. Return distance from segment, 0 if on it. 34 */ 35 36 CouNumber projectSeg (CouNumber x0, CouNumber y0, 37 CouNumber x1, CouNumber y1, 38 CouNumber x2, CouNumber y2, 39 int sign, 40 CouNumber *xp = NULL, CouNumber *yp = NULL); 41 } 42 43 #endif 44