I’ve been searching the forum for an answer, but I really didn’t manage to pull it of.
My challenge is as follows: I have a 3D sphere with an earth map and I would like to be able to rotate the sphere just so that a given geolocation (longitude & latitude) will be centered.
If I try to rotate the sphere with -60.0f latitude and 0.0f longitude it works (http://sht.tl/aMw), this also applies when I try 0.0f latitude and -30.0f longitude (http://sht.tl/KVcP). But when I try to combine them and try -60.0f latitude and -30.0f it doesn’t work anymore (http://sht.tl/qbLst).
I was already expecting this to happen, but I really can’t think of a way to calculate the correct rotations for both axes.
This is the code where I draw my sphere:
ofPushMatrix(); ofTranslate(current_position.x, current_position.y); ofPushMatrix(); ofRotateY( -lat ); ofRotateX( -90 - lon ); glPushMatrix(); glEnable(GL_DEPTH_TEST); shader.begin(); shader.setUniformTexture("colormap", earth, 1); shader.setUniformTexture("bumpmap", bumpmap, 2); shader.setUniform1i("maxHeight", 5); gluSphere(quadric, current_radius, 400, 400); shader.end(); glDisable(GL_DEPTH_TEST); glPopMatrix(); ofPopMatrix(); ofSetColor(255,0,0,140); ofCircle(0,0,5); ofPopMatrix();
Is this a very complicated math problem?