diff --git a/wrap/gl/pos.h b/wrap/gl/pos.h new file mode 100644 index 00000000..d1ccaa60 --- /dev/null +++ b/wrap/gl/pos.h @@ -0,0 +1,66 @@ +/**************************************************************************** +* VCGLib o o * +* Visual and Computer Graphics Library o o * +* _ O _ * +* Copyright(C) 2004 \/)\/ * +* Visual Computing Lab /\/| * +* ISTI - Italian National Research Council | * +* \ * +* All rights reserved. * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* 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 (http://www.gnu.org/licenses/gpl.txt) * +* for more details. * +* * +****************************************************************************/ +/**************************************************************************** + History + +$Log: not supported by cvs2svn $ + + +****************************************************************************/ + +#ifndef VCG_GL_POS_H +#define VCG_GL_POS_H + +// Please note that this file assume that you have already included your +// gl-extension wrapping utility, and that therefore all the extension symbol are already defined. + +#include +#include + +namespace vcg { + + template + struct GlPos{ + typedef typename PosType::ScalarType S; + static void Draw(PosType & p){ + Point3 bc = Barycenter(*(p.f)); + Point3 mid = (p.f->P(p.z)+p.f->P(((p.z+1)%3)))*0.5f; + Point3 up = ((bc- p.v->P()) ^ (mid- p.f->P(p.z) )).Normalize(); + Point3 ax = ( up ^ (mid-p.f->P(p.z)) ) .Normalize(); + S proj = (bc-mid)*(ax)*0.5; + Point3 bc1 = mid+ (ax)*proj; + + + glBegin(GL_TRIANGLES); + glVertex(p.v->P()); + if( p.v == p.f->V(p.z)) + { glVertex(mid); glVertex(bc1);} + else + {glVertex(bc1); glVertex(mid);} + glEnd(); + } + + + }; +}//namespace +#endif