Exemplo n.º 1
0
void Compute_Rotation_Transform (TRANSFORM *transform, const VECTOR vector)
{
	register DBL cosx, cosy, cosz, sinx, siny, sinz;
	MATRIX Matrix;
	VECTOR Radian_Vector;

	VScale (Radian_Vector, vector, M_PI_180);

	MIdentity (transform->matrix);

	cosx = cos (Radian_Vector[X]);
	sinx = sin (Radian_Vector[X]);
	cosy = cos (Radian_Vector[Y]);
	siny = sin (Radian_Vector[Y]);
	cosz = cos (Radian_Vector[Z]);
	sinz = sin (Radian_Vector[Z]);

	(transform->matrix) [1][1] = cosx;
	(transform->matrix) [2][2] = cosx;
	(transform->matrix) [1][2] = sinx;
	(transform->matrix) [2][1] = 0.0 - sinx;

	MTranspose (transform->inverse, transform->matrix);

	MIdentity (Matrix);

	Matrix [0][0] = cosy;
	Matrix [2][2] = cosy;
	Matrix [0][2] = 0.0 - siny;
	Matrix [2][0] = siny;

	MTimesA (transform->matrix, Matrix);

	MTranspose (Matrix);

	MTimesB (Matrix, transform->inverse);

	MIdentity (Matrix);

	Matrix [0][0] = cosz;
	Matrix [1][1] = cosz;
	Matrix [0][1] = sinz;
	Matrix [1][0] = 0.0 - sinz;

	MTimesA (transform->matrix, Matrix);

	MTranspose (Matrix);

	MTimesB (Matrix, transform->inverse);
}
Exemplo n.º 2
0
static void Transform_Quadric(OBJECT *Object, TRANSFORM *Trans)
{
  QUADRIC *Quadric=(QUADRIC *)Object;
  MATRIX Quadric_Matrix, Transform_Transposed;

  Quadric_To_Matrix (Quadric, Quadric_Matrix);

  MTimesB (Trans->inverse, Quadric_Matrix);
  MTranspose (Transform_Transposed, Trans->inverse);
  MTimesA (Quadric_Matrix, Transform_Transposed);

  Matrix_To_Quadric (Quadric_Matrix, Quadric);

  Recompute_BBox(&Object->BBox, Trans);
}
Exemplo n.º 3
0
void Compose_Transforms (TRANSFORM *Original_Transform, const TRANSFORM *New_Transform)
{
	MTimesA(Original_Transform->matrix, New_Transform->matrix);

	MTimesB(New_Transform->inverse, Original_Transform->inverse);
}