Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Function: al_translate_transform_3d
- */
- void al_translate_transform_3d(ALLEGRO_TRANSFORM *trans, float x, float y, float z)
- {
- ASSERT(trans);
- trans->m[3][0] += x;
- trans->m[3][1] += y;
- trans->m[3][2] += z;
- }
- /* Function: al_scale_transform_3d
- */
- void al_scale_transform_3d(ALLEGRO_TRANSFORM *trans, float sx, float sy, float sz)
- {
- int ii;
- ASSERT(trans);
- for(ii = 0; ii < 3; ii++)
- {
- trans->m[ii][0] *= sx;
- trans->m[ii][1] *= sy;
- trans->m[ii][2] *= sz;
- }
- }
- /* Function: al_rotate_transform_x
- */
- void al_rotate_transform_x(ALLEGRO_TRANSFORM *trans, float theta)
- {
- float c = cosf(theta);
- float s = sinf(theta);
- int ii;
- ASSERT(trans);
- for(ii = 0; ii < 4; ii++)
- {
- float t = trans->m[ii][1];
- trans->m[ii][1] = t * c - trans->m[ii][2] * s;
- trans->m[ii][2] = t * s + trans->m[ii][2] * c;
- }
- }
- /* Function: al_rotate_transform_y
- */
- void al_rotate_transform_y(ALLEGRO_TRANSFORM *trans, float theta)
- {
- float c = cosf(theta);
- float s = sinf(theta);
- int ii;
- ASSERT(trans);
- for(ii = 0; ii < 4; ii++)
- {
- float t = trans->m[ii][0];
- trans->m[ii][0] = trans->m[ii][2] * s + t * c;
- trans->m[ii][2] = trans->m[ii][2] * c - t * s;
- }
- }
- /* Function: al_rotate_transform_z
- */
- void al_rotate_transform_z(ALLEGRO_TRANSFORM *trans, float theta)
- {
- float c = cosf(theta);
- float s = sinf(theta);
- int ii;
- ASSERT(trans);
- for(ii = 0; ii < 4; ii++)
- {
- float t = trans->m[ii][0];
- trans->m[ii][0] = t * c - trans->m[ii][1] * s;
- trans->m[ii][1] = t * s + trans->m[ii][1] * c;
- }
- }
- /* Function: al_rotate_transform_axis
- */
- void al_rotate_transform_axis(ALLEGRO_TRANSFORM *trans, float x, float y, float z, float theta)
- {
- /*float c = cosf(theta);
- float s = sinf(theta);
- ASSERT(trans);
- for(int ii = 0; ii < 4; ii++)
- {
- float t = trans->m[ii][0];
- trans->m[ii][0] = t * c - trans->m[ii][1] * s;
- trans->m[ii][1] = t * s + trans->m[ii][1] * c;
- }*/
- }
- /* Function: al_transform_coordinates
- */
- void al_transform_coordinates_3d(const ALLEGRO_TRANSFORM *trans, float *x, float *y, float* z)
- {
- float tx, ty;
- ASSERT(trans);
- ASSERT(x);
- ASSERT(y);
- ASSERT(z);
- tx = *x;
- ty = *y;
- *x = tx * trans->m[0][0] + ty * trans->m[1][0] + *z * trans->m[2][0] + trans->m[3][0];
- *y = tx * trans->m[0][1] + ty * trans->m[1][1] + *z * trans->m[2][1] + trans->m[3][1];
- *z = tx * trans->m[0][2] + ty * trans->m[1][2] + *z * trans->m[2][2] + trans->m[3][2];
- }
- /* Function: al_transform_transform_3d
- */
- void al_transform_transform_3d(const ALLEGRO_TRANSFORM *trans, ALLEGRO_TRANSFORM *trans2)
- {
- ASSERT(trans);
- al_transform_coordinates_3d(trans, trans->m[0], trans->m[0] + 1, trans->m[0] + 2);
- al_transform_coordinates_3d(trans, trans->m[1], trans->m[1] + 1, trans->m[1] + 2);
- al_transform_coordinates_3d(trans, trans->m[2], trans->m[2] + 1, trans->m[2] + 2);
- al_transform_coordinates_3d(trans, trans->m[3], trans->m[3] + 1, trans->m[3] + 2);
- }
Add Comment
Please, Sign In to add comment