From c2175edc7aa44ca0b526f008d473d6f8a8ac4933 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 14 Jun 2010 23:14:16 +0000 Subject: asy 1.98 git-svn-id: svn://tug.org/texlive/trunk@18982 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/utils/asymptote/glrender.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'Build/source/utils/asymptote/glrender.h') diff --git a/Build/source/utils/asymptote/glrender.h b/Build/source/utils/asymptote/glrender.h index 7d37e3dfdb2..22b52fe95ce 100644 --- a/Build/source/utils/asymptote/glrender.h +++ b/Build/source/utils/asymptote/glrender.h @@ -89,6 +89,36 @@ void glrender(const string& prefix, const camp::picture* pic, bool view, int oldpid=0); } +namespace camp { + +struct billboard +{ + triple u,v,w; + + void init() { + gl::projection P=gl::camera(false); + w=unit(P.camera-P.target); + v=unit(perp(P.up,w)); + u=cross(v,w); + } + + void store(GLfloat* C, const triple& V, const triple ¢er) { + double cx=center.getx(); + double cy=center.gety(); + double cz=center.getz(); + double x=V.getx()-cx; + double y=V.gety()-cy; + double z=V.getz()-cz; + C[0]=cx+u.getx()*x+v.getx()*y+w.getx()*z; + C[1]=cy+u.gety()*x+v.gety()*y+w.gety()*z; + C[2]=cz+u.getz()*x+v.getz()*y+w.getz()*z; + } +}; + +extern billboard BB; + +} + #else typedef void GLUnurbs; typedef float GLfloat; -- cgit v1.2.3