# comp.graphics.algorithms

## Subject: 3D camera question

Really stuck here, and could use some help. I'm trying to add a camera to my
3D engine. Say I just have one shape - a large triangle that's acting as the
ground plane.

The triangle is not transformed, as you can see the arguments to the
rotation and translation are 0. For reference, I have one of the matrix
methods below, it sets it up and then multiplies. If I change the values of
my camera rotation, the triangle still rotates as if I were simply rotating
it (from its center) and not the camera. I know I need to subtract the
location of the camera relative to the shape, but Im not sure how/where to
do this. Can anyone help? Please let me know if you need more information.

TIA

---------------------

camTransX = 0.0;
camTransY = -50.0;
camTransZ = 500.0;

groundMatrix.setIdentity();
groundMatrix.rotateX(0);
groundMatrix.rotateY(0);
groundMatrix.rotateZ(0);
groundMatrix.translate(0, 0, 0);

groundMatrix.rotateX(camRotX);
groundMatrix.rotateY(camRotY);
groundMatrix.rotateZ(camRotZ);
groundMatrix.translate(camTransX, camTransY, camTransZ);
ground.draw(groundMatrix);

-------------------

public function rotateY(angleY:Number):Void {

if (angleY == 0) {
return;
}

var cosAngle:Number = Math.cos(angleY);
var sinAngle:Number = Math.sin(angleY);

temp[0][0] = cosAngle;
temp[0][1] = 0;
temp[0][2] = -sinAngle;
temp[0][3] = 0;

temp[1][0] = 0;
temp[1][1] = 1;
temp[1][2] = 0;
temp[1][3] = 0;

temp[2][0] = sinAngle;
temp[2][1] = 0;
temp[2][2] = cosAngle;
temp[2][3] = 0;

temp[3][0] = 0;
temp[3][1] = 0;
temp[3][2] = 0;
temp[3][3] = 1;

multiply();
}