Sitelet https://github.com/C4Labs/C4iOS/commit/dddac4bcdbb0c011e00c041ce7f18bb97f0f9e8d
Skip to content

Commit dddac4b

Browse files
Improved transform inversion code
1 parent 4006810 commit dddac4b

1 file changed

Lines changed: 1 addition & 25 deletions

File tree

‎C4/Core/Transform.swift‎

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1818
// IN THE SOFTWARE.
1919

20-
import Accelerate
2120
import CoreGraphics
2221
import QuartzCore
2322

@@ -297,28 +296,5 @@ public func concat(_ t1: Transform, t2: Transform) -> Transform {
297296
/// - parameter t: The transform to invert
298297
/// - returns: A new transform that is the inverse of `t`
299298
public func inverse(_ t: Transform) -> Transform? {
300-
var m: Int32 = 4
301-
var n: Int32 = 4
302-
var lda: Int32 = 4
303-
var error: Int32 = 0
304-
var pivot = [Int32](repeating: 0, count: 4)
305-
var matrix: [Double] = t.matrix
306-
307-
// LU factorisation
308-
dgetrf_(&m, &n, &matrix, &lda, &pivot, &error)
309-
if error != 0 {
310-
return nil
311-
}
312-
313-
// matrix inversion
314-
var workSize: Int32 = 4
315-
var workspace = [Double](repeating: 0, count: 4)
316-
dgetri_(&n, &matrix, &lda, &pivot, &workspace, &workSize, &error)
317-
if error != 0 {
318-
return nil
319-
}
320-
321-
var r = Transform()
322-
r.matrix = matrix
323-
return r
299+
return Transform(CATransform3DInvert(t.transform3D))
324300
}

0 commit comments

Comments
 (0)