use crate::{Affine3, Affine3A, Mat3, Mat3A, Mat4, Quat, Vec3, camera::camera_impl};
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_mat4(eye: Vec3, center: Vec3, up: Vec3) -> Mat4 {
look_to_mat4(eye, (center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_mat4(eye: Vec3, dir: Vec3, up: Vec3) -> Mat4 {
camera_impl::look_to_mat4::<false>(eye, dir, up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_affine3(eye: Vec3, center: Vec3, up: Vec3) -> Affine3 {
look_to_affine3(eye, (center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_affine3(eye: Vec3, dir: Vec3, up: Vec3) -> Affine3 {
camera_impl::look_to_affine3::<false>(eye, dir, up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_affine3a(eye: Vec3, center: Vec3, up: Vec3) -> Affine3A {
look_to_affine3a(eye, (center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_affine3a(eye: Vec3, dir: Vec3, up: Vec3) -> Affine3A {
camera_impl::look_to_affine3a::<false>(eye, dir, up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_mat3(eye: Vec3, center: Vec3, up: Vec3) -> Mat3 {
look_to_mat3((center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_mat3(dir: Vec3, up: Vec3) -> Mat3 {
camera_impl::look_to_mat3::<false>(dir, up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_mat3a(eye: Vec3, center: Vec3, up: Vec3) -> Mat3A {
look_to_mat3a((center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_mat3a(dir: Vec3, up: Vec3) -> Mat3A {
camera_impl::look_to_mat3a::<false>(dir, up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_at_quat(eye: Vec3, center: Vec3, up: Vec3) -> Quat {
look_to_quat((center - eye).normalize(), up)
}
#[inline]
#[must_use]
#[cfg_attr(any(debug_assertions, feature = "glam-assert"), track_caller)]
pub fn look_to_quat(dir: Vec3, up: Vec3) -> Quat {
camera_impl::look_to_quat::<false>(dir, up)
}