 }
 
 extension float3 {
-	init(_ vector: GLKVector4) {
+	init(_ vector: GLKVector3) {
 		self = unsafeBitCast(vector, to: float3.self)
 	}
 }


    init(_ transform: CGAffineTransform) {
		let t = CATransform3DMakeAffineTransform(transform)
		self.init(m: (
				Float(t.m11), Float(t.m12), Float(t.m13), Float(t.m14),
				Float(t.m21), Float(t.m22), Float(t.m23), Float(t.m24),
				Float(t.m31), Float(t.m32), Float(t.m33), Float(t.m34),
				Float(t.m41), Float(t.m42), Float(t.m43), Float(t.m44)))
	}

    var scaleFactor : Float {
		return sqrt(m00 * m00 + m01 * m01 + m02 * m02)
	}

    var invert: GLKMatrix4 {
		var invertible: Bool = true
		let t = GLKMatrix4Invert(self, &invertible)
		if !invertible { print("not invertible") }
		return t
	}

    public var description: String {

	static func * (l: GLKMatrix4, r: GLKMatrix4) -> GLKMatrix4 {
		return GLKMatrix4Multiply(l, r)
	}
}

extension GLKVector2: CustomStringConvertible {
