Original Post
OK, so I pretty much stole a camera class from here. It links to some source that I took and altered for my purposes. But for some reason, when I'm looking straight at my object it's very far away. As I rotate to the left and right, the object gets closer. It's weird. Here's the camera code:
camControl::camControl(const Vector3 &cPosition, float h, float v) :
radius(1), moveDist(CAM_STEP)
{
Vector3 blank; blank[0] = 0; blank[1] = 0; blank[2] = 0;
AssignVector(cameraPosition,cPosition);
AssignVector(cameraTarget,blank);
AssignVector(cameraUpVector,blank);
hRadians = h;
vRadians = v;
RotateCamera(0,0);
}
void camControl::RotateCamera(float h, float v)
{
hRadians += h;
vRadians += v;
cameraTarget[1] = cameraPosition[1]+(float)(radius*sin(vRadians));
cameraTarget[0] = cameraPosition[0]+(float)(radius*cos(vRadians)*cos(hRadians));
cameraTarget[2] = cameraPosition[2]+(float)(radius*cos(vRadians)*sin(hRadians));
cameraUpVector[0] = cameraPosition[0]-cameraTarget[0];
cameraUpVector[1] = fabs(cameraPosition[1]+(float)(radius*sin(vRadians+PI/2))) ;
cameraUpVector[2] = cameraPosition[2]-cameraTarget[2];
}
And then my keyhandler calls RotateCamera with a positive or negative 0.05 for h and 0.0 for v. Then my render function looks like this:
bool DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
gluLookAt(Camera->XPosition(), Camera->YPosition(), Camera->ZPosition(),
Camera->XTarget(), Camera->YTarget(), Camera->ZTarget(),
Camera->XUp(), Camera->YUp(), Camera->ZUp());
theBall->draw();
return true;
}
I can't figure out what it's doing wrong, so I'd really appreciate any help. I'm new to this whole camera thing and it's driving me nuts.