Hi,
I am using nalgbra_glm.
fn test_rot() {
let points_to_rotate = [
TVec3::<f32>::new(-1., -1., 0.),
TVec3::<f32>::new(-1., 1., 0.),
TVec3::<f32>::new(1., 1., 0.),
TVec3::<f32>::new(1., -1., 0.),
];
let original_points_normal = TVec3::<f32>::new(0., 0., 1.);
let target_normal = TVec3::<f32>::new(1., 0., 0.);
let look_at_matrix =
nalgebra_glm::look_at(&TVec3::zeros(), &target_normal, &original_points_normal);
let converted_matrix_4_to_3 = nalgebra_glm::mat4_to_mat3(&look_at_matrix);
for i in points_to_rotate.iter() {
println!("{:?}", converted_matrix_4_to_3 * i);
}
}
Z is up in this example.
I have some points that I want to rotate to match a target normal.
In this example, it's easy, the points lay on the XY plane.
I want them to be on the YZ plane.
So here it is a simple 90 degrees rotation but it may be anything else.
I would like to confirm that I am doing it right with the code above.
More generally, I want to be able to rotate points of a 3D triangle with a given normal to match the orientation of a given vector ( a look at I guess).
Is my code above correct ? Is there a better way using this lib?
Thanks,