opengl - How to get the position of an orbiting sphere -
i'm trying position of sphere rotating around idle object in opengl application. how perform orbiting:
gltranslatef(positions[i].getposx(), //center of rotation (yellow ball) positions[i].getposy(), positions[i].getposz()); glrotatef(rotation_angle,0.0,1.0,0.0); //angle of rotation gltranslatef(distance[i].getposx(), //distance center of rotation distance[i].getposy(), distance[i].getposz()); variable rotation_angle loops 0 360 endlessly. in distance vector i'm changing z-distance of object, example let's idle object in (0,0,0), distance vector (0,0,200).
opengl draws stuff. doesn't maintain "scene". you'll have math yourself. simple multiplying vector (0,0,0,1) current modelview-projection matrix , perform viewport remapping. has been conveniently packed in glu (not opengl) function gluproject.
since you're using (old-and-busted) fixed function pipeline procedure follows about
gldouble x,y,z; gldouble win_x, win_y, win_z; gldouble mv[16], prj[16]; glint vp[4]; glgetdoublev(gl_modelview_matrix, mv); glgetdoublev(gl_projection_matrix, prj); glgetinteger(gl_viewport, vp); gluprojection(x,y,z, mv, prj, vp, win_x, win_y, win_z); note due opengl's stateful nature value of modelview , projection matrix , viewport at moment of drawing sphere matters. retrieving values @ other moment may produce different data , result in outcome inconsistent drawing.
Comments
Post a Comment