use corners, store vectors

rename extensions, update playground
This commit is contained in:
Paul Zabelin
2016-02-22 00:13:21 -08:00
parent e2c4823f1c
commit c3f28665df
5 changed files with 10 additions and 16 deletions

View File

@@ -9,19 +9,19 @@
import simd
public final class Perspective {
let quadrilateral : Quadrilateral
let vectors : [Vector3Type]
public init(_ q: Quadrilateral) {
quadrilateral = q
vectors = q.corners.map{$0.homogeneous3dvector}
}
lazy var basisVectorsToPointsMap: Matrix3x3Type! = {
let m = Matrix3x3Type([
self.quadrilateral.p1.homogeneous3dvector,
self.quadrilateral.p2.homogeneous3dvector,
self.quadrilateral.p3.homogeneous3dvector]
self.vectors[0],
self.vectors[1],
self.vectors[2]]
)
let solution = m.homogeneousInverse() * self.quadrilateral.p4.homogeneous3dvector
let solution = m.homogeneousInverse() * self.vectors[3]
let scale = Matrix3x3Type(diagonal: solution)
let basisToPoints = m * scale
return basisToPoints.zNormalized()

View File

@@ -9,16 +9,10 @@
import UIKit
public final class Quadrilateral {
public let p1 : CGPoint
public let p2 : CGPoint
public let p3 : CGPoint
public let p4 : CGPoint
public let corners : [CGPoint]
public init(_ points:[CGPoint]) {
p1 = points[0]
p2 = points[1]
p3 = points[2]
p4 = points[3]
corners = points
}
public convenience init(_ origin:CGPoint, _ size:CGSize) {
self.init([