Home | nevrax.com |
|
line.cppGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "stdmisc.h" 00027 00028 #include "nel/misc/line.h" 00029 #include <limits> 00030 00031 namespace NLMISC 00032 { 00033 00034 void CLine::project(const CVector &inV,CVector &outV) 00035 { 00036 CVector seg = V1 - V0; 00037 float n = seg.sqrnorm(); 00038 if (n == 0.f) 00039 { 00040 outV = V0; 00041 } 00042 else 00043 { 00044 float dp = (inV - V0) * seg; 00045 outV = V0 + (dp / n) * seg; 00046 } 00047 } 00048 00049 00050 00051 } // NLMISC |