Merge pull request #435 from gendx/add_look_at_dir
Add Matrix4::look_at_dir (fix #433).
This commit is contained in:
commit
429249fffd
1 changed files with 8 additions and 2 deletions
|
@ -232,8 +232,8 @@ impl<S: BaseFloat> Matrix4<S> {
|
|||
|
||||
/// Create a homogeneous transformation matrix that will cause a vector to point at
|
||||
/// `dir`, using `up` for orientation.
|
||||
pub fn look_at(eye: Point3<S>, center: Point3<S>, up: Vector3<S>) -> Matrix4<S> {
|
||||
let f = (center - eye).normalize();
|
||||
pub fn look_at_dir(eye: Point3<S>, dir: Vector3<S>, up: Vector3<S>) -> Matrix4<S> {
|
||||
let f = dir.normalize();
|
||||
let s = f.cross(up).normalize();
|
||||
let u = s.cross(f);
|
||||
|
||||
|
@ -243,6 +243,12 @@ impl<S: BaseFloat> Matrix4<S> {
|
|||
-eye.dot(s), -eye.dot(u), eye.dot(f), S::one())
|
||||
}
|
||||
|
||||
/// Create a homogeneous transformation matrix that will cause a vector to point at
|
||||
/// `center`, using `up` for orientation.
|
||||
pub fn look_at(eye: Point3<S>, center: Point3<S>, up: Vector3<S>) -> Matrix4<S> {
|
||||
Matrix4::look_at_dir(eye, center - eye, up)
|
||||
}
|
||||
|
||||
/// Create a homogeneous transformation matrix from a rotation around the `x` axis (pitch).
|
||||
pub fn from_angle_x<A: Into<Rad<S>>>(theta: A) -> Matrix4<S> {
|
||||
// http://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
|
||||
|
|
Loading…
Reference in a new issue