     public func look (axis axis: Cartesian3, angle: Double? = nil) {
         
         let turnAngle = angle ?? defaultLookAmount
-        let quaternion = Quaternion(fromAxis: axis, angle: -turnAngle)
-        let rotation = Matrix3(fromQuaternion: quaternion)
+        let quaternion = Quaternion(axis: axis, angle: -turnAngle)
+        let rotation = Matrix3(quaternion: quaternion)
         
         direction = rotation.multiplyByVector(direction)
         up = rotation.multiplyByVector(up)

        southCenter = southCenter.subtract(center)
        
        let direction = ellipsoid.geodeticSurfaceNormal(center).negate()
        cameraRF.direction = direction
        let right = direction.cross(Cartesian3.unitZ).normalize()
        cameraRF.right = right
        let up = right.cross(direction)
        cameraRF.up = up
        
        var tanPhi = tan(frustum.fovy * 0.5)
        var tanTheta = frustum.aspectRatio * tanPhi

    
    func updateViewMatrix() {
        
        let newViewMatrix = Matrix4(
            right.x, right.y, right.z, -right.dot(position),
            up.x, up.y, up.z, -up.dot(position),
            -direction.x, -direction.y, -direction.z, direction.dot(position),
            0.0, 0.0, 0.0, 1.0
        )
        _viewMatrix = newViewMatrix.multiply(_actualInvTransform)
        _invViewMatrix = _viewMatrix.inverse
    }
