.\" Automatically generated by Pandoc 3.6.1 .\" .TH "al_transform_coordinates_3d_projective" "3" "" "Allegro reference manual" .SH NAME al_transform_coordinates_3d_projective \- Allegro 5 API .SH SYNOPSIS .IP .EX #include \f[B]\f[R] void al_transform_coordinates_3d_projective(const ALLEGRO_TRANSFORM *trans, float *x, float *y, float *z) .EE .SH DESCRIPTION Transform x, y, z as homogeneous coordinates. This is the same as using al_transform_coordinates_4d(3) with the w coordinate set to 1, then dividing x, y, z by the resulting w. This will provide the same normalized coordinates Allegro will draw to when a projective transform is in effect as set with al_use_projection_transform(3). To get the actual pixel coordinates from those translate and scale like so (w and h would be the pixel dimensions of the target bitmap): .IP .EX x = w / 2 + x * w / 2 y = h / 2 \- y * h / 2 .EE .PP \f[I]Parameters:\f[R] .IP \[bu] 2 trans \- Transformation to use .IP \[bu] 2 x, y, z \- Pointers to the coordinates .PP Example: .IP .EX ALLEGRO_TRANSFORM t2; al_copy_transform(&t2, al_get_current_transform()); al_compose_transform(&t2, al_get_current_projection_transform()); ALLEGRO_TRANSFORM t3; al_identity_transform(&t3); al_scale_transform(&t3, 0.5, \-0.5); al_translate_transform(&t3, 0.5, 0.5); al_scale_transform(&t3, al_get_bitmap_width(al_get_target_bitmap()), al_get_bitmap_height(al_get_target_bitmap())); al_transform_coordinates_3d_projective(&t2, &x, &y, &z); \f[I]// x, y now contain normalized coordinates\f[R] al_transform_coordinates(&t3, &x, &y); \f[I]// x, y now contain pixel coordinates\f[R] .EE .PP Since 5.2.4 .SH SEE ALSO al_use_transform(3), al_transform_coordinates(3), al_transform_coordinates_3d(3), al_use_projection_transform(3)