Example #1
0
//-------------------------------------------------------------------------
// CREATE LOOK AT creates a look-at matrix for use as a view matrix
matrix4
create_look_at(vector3 &camera, vector3 &target, vector3 &up){
	// Builds a look-at style view matrix.
	// This is essentially the same matrix used by gluLookAt().

	matrix4 out;

	vector3 zAxis = camera - target;
	zAxis.Normalize();

	vector3 xAxis = up.Cross(zAxis);
	xAxis.Normalize();

	vector3 yAxis = zAxis.Cross(xAxis);
	yAxis.Normalize();

	out[0] = xAxis.x;
	out[4] = xAxis.y;
	out[8] = xAxis.z;
	out[12] = -xAxis.Dot(camera);

	out[1] = yAxis.x;
	out[5] = yAxis.y;
	out[9] = yAxis.z;
	out[13] = -yAxis.Dot(camera);

	out[2] = zAxis.x;
	out[6] = zAxis.y;
	out[10] = zAxis.z;
	out[14] = -zAxis.Dot(camera);

	out[3] = 0.0f;
	out[7] = 0.0f;
	out[11] = 0.0f;
	out[15] = 1.0f;

	return out;
}
Example #2
0
vector3 vector3::Cross(const vector3& v1, const vector3& v2)
{
	return v1.Cross(v2);
}