Home | nevrax.com |
|
bounding_sphere.cppGo to the documentation of this file.00001 00007 /* Copyright, 2000, 2001 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 "stdsound.h" 00027 00028 #include "bounding_sphere.h" 00029 00030 using namespace NLMISC; 00031 00032 00033 namespace NLSOUND { 00034 00035 00036 /* 00037 * Constructor 00038 */ 00039 /*CBoundingSphere::CBoundingSphere() 00040 { 00041 }*/ 00042 00043 00044 /* 00045 * Return true if the box includes the specified point 00046 */ 00047 bool CBoundingSphere::include( const NLMISC::CVector& pos ) const 00048 { 00049 return _BSphere.include( pos ); 00050 } 00051 00052 00053 00054 /* Return the ratio of a point between this shape and another inner shape. 00055 * The point must be included in this shape (the outer one) and not 00056 * in the inner shape. 00057 * If the point is near this shape, the ratio is near 0. 00058 * If the point is near the inner shape, the ratio is near 1. 00059 */ 00060 float CBoundingSphere::getRatio( const NLMISC::CVector& pos, IBoundingShape *inner ) const 00061 { 00062 return (_BSphere.Radius-(pos-_BSphere.Center).norm()) / (_BSphere.Radius-inner->getRadiusAtIntersect(pos)); 00063 } 00064 00065 00066 /* 00067 * Set properties (EDIT) 00068 */ 00069 void CBoundingSphere::setProperties( const NLMISC::CVector& center, float radius ) 00070 { 00071 _BSphere.Center = center; 00072 _BSphere.Radius = radius; 00073 } 00074 00075 00076 } // NLSOUND |