Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

_QGAR_segment.TCC

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------+
00002  | Library QgarLib, graphics analysis and recognition                  |
00003  | Copyright (C) 2002  Qgar Project, LORIA                             |
00004  |                                                                     |
00005  | This library is free software; you can redistribute it and/or       |
00006  | modify it under the terms of the GNU Lesser General Public          |
00007  | License version 2.1, as published by the Free Software Foundation.  |
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.                |
00012  | See the GNU Lesser General Public License for more details.         |
00013  |                                                                     |
00014  | The GNU Lesser General Public License is included in the file       |
00015  | LICENSE.LGPL, in the root directory of the Qgar packaging. See      |
00016  | http://www.gnu.org/licenses/lgpl.html for the terms of the licence. |
00017  | To receive a paper copy, write to the Free Software Foundation,     |
00018  | Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.       |
00019  |                                                                     |
00020  | Contact Project Qgar for any information:                           |
00021  |   LORIA - équipe Qgar                                               |
00022  |   B.P. 239, 54506 Vandoeuvre-lès-Nancy Cedex, France                |
00023  |   email: qgar-contact@loria.fr                                      |
00024  |   http://www.qgar.org/                                              |
00025  *---------------------------------------------------------------------*/
00026 
00027 
00028 /**
00029  * @file   _QGAR_segment.TCC
00030  * @brief  Implementation of functions which compute segments.
00031  *
00032  * Computational geometry equations can be found in the FAQ section
00033  * of comp.graphics.algorithms and are based on
00034  * [<a href="Bibliography.html#Kirk-1992">Kirk,&nbsp;1992</a>],
00035  * pages 199-202, and
00036  * [<a href="Bibliography.html#ORourke-1994">O'Rourke,&nbsp;1994</a>],
00037  * pages 249-51.
00038  *
00039  * @author <a href="mailto:qgar-develop@loria.fr?subject=Qgar fwd Gérald Masini">Gérald Masini</a>
00040  * @date   February 03, 2005  19:18
00041  * @since  Qgar 2.2
00042  */
00043 
00044 
00045 
00046 namespace qgar
00047 {
00048 
00049 
00050 // -------------------------------------------------------------------
00051 // P R O J E C T I O N S
00052 // -------------------------------------------------------------------
00053 
00054 
00055 // SEGMENT PERPENDICULAR TO A GIVEN SEGMENT
00056 // ========================================
00057 // The source of the new segment is the given point, the target
00058 // is the orthogonal projection of the given point onto the line
00059 // supporting the given segment
00060 
00061 
00062 template <class T>
00063 inline GenSegment<double>
00064 qgPerpendicular(const GenPoint<T>& aPt, const GenSegment<T>& aSeg)
00065 {
00066   return GenSegment<double>(static_cast< GenPoint<double> >(aPt),
00067                             qgProject(aPt,aSeg));
00068 }
00069 
00070 
00071 // SEGMENT PERPENDICULAR TO A GIVEN Qgar SEGMENT
00072 // =============================================
00073 
00074 
00075 template <class T>
00076 inline GenQgarSegment<double>
00077 qgPerpendicular(const GenPoint<T>& aPt, const GenQgarSegment<T>& aQSeg)
00078 {
00079   return GenQgarSegment<double>(static_cast< GenPoint<double> >(aPt),
00080                                 qgProject(aPt,aQSeg),
00081                                 aQSeg.color(),
00082                                 aQSeg.thickness(),
00083                                 aQSeg.outLine());
00084 }
00085 
00086 
00087 // -------------------------------------------------------------------
00088 
00089 
00090 } // namespace qgar