/* =========================================================================== Copyright (C) 1999 - 2005, Id Software, Inc. Copyright (C) 2000 - 2013, Raven Software, Inc. Copyright (C) 2001 - 2013, Activision, Inc. Copyright (C) 2013 - 2015, OpenJK contributors This file is part of the OpenJK source code. OpenJK is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . =========================================================================== */ // tr_mesh.c: triangle model functions #include "tr_local.h" float ProjectRadius( float r, vec3_t location ) { float pr; float dist; float c; vec3_t p; float width; float depth; c = DotProduct( tr.viewParms.ori.axis[0], tr.viewParms.ori.origin ); dist = DotProduct( tr.viewParms.ori.axis[0], location ) - c; if ( dist <= 0 ) return 0; p[0] = 0; p[1] = Q_fabs( r ); p[2] = -dist; width = p[0] * tr.viewParms.projectionMatrix[1] + p[1] * tr.viewParms.projectionMatrix[5] + p[2] * tr.viewParms.projectionMatrix[9] + tr.viewParms.projectionMatrix[13]; depth = p[0] * tr.viewParms.projectionMatrix[3] + p[1] * tr.viewParms.projectionMatrix[7] + p[2] * tr.viewParms.projectionMatrix[11] + tr.viewParms.projectionMatrix[15]; pr = width / depth; if ( pr > 1.0f ) pr = 1.0f; return pr; }