Tech Lead" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ ͘ίϩφऩଋͯ͠ग़ࣾۈ͍ͨ͠… """ final class Me: Developable, Talkable {
c = 0.8 tx = 13 ty = 2 b = -0.1 d = 0.9 x = 10 y = 10 x' = 27 y' = 19 x = 0 y = 0 x' = 13 y' = 2 x ax + by + t x x′ y cx + dy + t y y′ CGAffineTransformͷ a b c d tx ty Ͱ͢
tx ty = ty b = 0 d = 1 x = 10 y = 10 x' = 10 + tx y' = 10 + ty มޙɺݻ༗࠲ඪΑΓ Y͕࣠UYɺZ͕࣠UZҠಈͨ͠࠲ඪ P(x, y) P′ (x′ , y′ ) x ax + by + t x x′ y cx + dy + t y y′
0 ty = 0 b = -sin(θ) d = cos(θ) x = 10 y = 10 x' = 10a + 10b y' = 10c + 10d มޙɺݻ༗࠲ඪΑΓ В˃ճసͨ͠࠲ඪ P(x, y) P′ (x′ , y′ ) x ax + by + t x x′ y cx + dy + t y y′
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1n b 21 b 22 … b 2n ⋮ ⋮ ⋱ ⋮ b m1 b m2 … b mn શͯͷ ɺ ʹର͠ɺ ͳ Βɺߦྻ ͱߦྻ ͕૬ʢٯવΓʣ i j (1 ≤ i ≤ m, 1 ≤ j ≤ n) a ij = b ij A B ೋͭͷಉܕʢ ܕʣߦྻ ɺ ʹ͍ͭͯɿ (m, n) A B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1n b 21 b 22 … b 2n ⋮ ⋮ ⋱ ⋮ b m1 b m2 … b mn A ± B = a 11 ± b 11 a 12 ± b 12 … a 1n ± b 1n a 21 ± b 21 a 22 ± b 22 … a 2n ± b 2n ⋮ ⋮ ⋱ ⋮ a m1 ± b m1 a m2 ± b m2 … a mn ± b mn ೋͭͷಉܕʢ ܕʣߦྻ ɺ ʹ͍ͭͯɿ (m, n) A B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn λ × A = λ × a 11 λ × a 12 … λ × a 1n λ × a 21 λ × a 22 … λ × a 2n ⋮ ⋮ ⋱ ⋮ λ × a m1 λ × a m2 … λ × a mn ࣮ ͱߦྻ ʹ͍ͭͯɿ λ A
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kl ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kl ⋮ ⋮ ⋱ ⋮ ∑n k=1 a mk × b k1 ∑n k=1 a mk × b k2 … ∑n k=1 a mk × b kl n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
a 21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a m1 a m2 … a mn B = b 11 b 12 … b 1l b 21 b 22 … b 2l ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nl ͷ݁Ռ ܕߦྻʹͳΔ A × B (m, l) ܕߦྻ ͱɺ ܕߦྻ ʹ͍ͭͯɿ (m, n) A (n, l) B
w A + B = B + A, A + O = O + A = A (A + B) + C = A + (B + C) A × E = E × A = A (A × B) × C = A × (B × C) (α + β)A = αA + βA, α(A + B) = αA + αBʢЋ Ќ࣮ʣ (A + B) × C = A × C + B × C
= ( a b c d) × ( x y) + ( t x t y) , ( x′ ′ y′ ′ ) = ( a′ b′ c′ d′ ) × ( x′ y′ ) + ( t′ x t′ y) ( x′ ′ y′ ′ ) = ( a′ b′ c′ d′ ) × (( a b c d) × ( x y) + ( t x t y)) + ( t′ x t′ y) x′ ′ y′ ′ 1 = a′ b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) x′ ′ y′ ′ 1 = a′ b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) = a′ ′ b′ ′ t′ ′ x c′ ′ d′ ′ t′ ′ y 0 0 1 × ( x y 1)
= ( a b c d) × ( x y) + ( t x t y) , ( x′ ′ y′ ′ ) = ( a′ b′ c′ d′ ) × ( x′ y′ ) + ( t′ x t′ y) ( x′ ′ y′ ′ ) = ( a′ b′ c′ d′ ) × (( a b c d) × ( x y) + ( t x t y)) + ( t′ x t′ y) x′ ′ y′ ′ 1 = a′ b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) x′ ′ y′ ′ 1 = a′ b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) = a′ ′ b′ ′ t′ ′ x c′ ′ d′ ′ t′ ′ y 0 0 1 × ( x y 1) CGAffineTransform ެࣜɿ(A × B) × C = A × (B × C)
21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a n1 a n2 … a nn B = b 11 b 12 … b 1n b 21 b 22 … b 2n ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nn ˞ A × B = ∑n k=1 a 1k × b k1 ∑n k=1 a 1k × b k2 … ∑n k=1 a 1k × b kn ∑n k=1 a 2k × b k1 ∑n k=1 a 2k × b k2 … ∑n k=1 a 2k × b kn ⋮ ⋮ ⋱ ⋮ ∑n k=1 a nk × b k1 ∑n k=1 a nk × b k2 … ∑n k=1 a nk × b kn n ∑ k=1 a 1k × b k1 = a 11 × b 11 + a 12 × b 21 + … + a 1n × b n1 ೋͭͷ ࣍ਖ਼ํߦྻ ɺ ʹ͍ͭͯɿ n A B
21 a 22 … a 2n ⋮ ⋮ ⋱ ⋮ a n1 a n2 … a nn B = b 11 b 12 … b 1n b 21 b 22 … b 2n ⋮ ⋮ ⋱ ⋮ b n1 b n2 … b nn ˞ B × A = ∑n k=1 b 1k × a k1 ∑n k=1 b 1k × a k2 … ∑n k=1 b 1k × a kn ∑n k=1 b 2k × a k1 ∑n k=1 b 2k × a k2 … ∑n k=1 b 2k × a kn ⋮ ⋮ ⋱ ⋮ ∑n k=1 b nk × a k1 ∑n k=1 b nk × a k2 … ∑n k=1 b nk × a kn n ∑ k=1 b 1k × a k1 = b 11 × a 11 + b 12 × a 21 + … + b 1n × a n1 ೋͭͷ ࣍ߦྻ ɺ ʹ͍ͭͯɿ n A B
c d) × ( x y) + ( t x t y) , ( x′ ′ y′ ′ ) = ( a′ b′ c′ d′ ) × ( x′ y′ ) + ( t′ x t′ y) x′ ′ y′ ′ 1 = a′ b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) ֻ͚ࢉͷॱ൪ɺ߹ॱͷٯʹ ͳΔඞཁ͕͋Δ͕ɺ͔ͯ͠͠ $PSF(SBQIJDT͕͜͜Ͱ߹ॱ ௨ΓͰֻ͚ࢉͪ͠Όͬͨʂʁ
b′ t′ x c′ d′ t′ y 0 0 1 × a b t x c d t y 0 0 1 × ( x y 1) (x′ ′ y′ ′ 1) = (x y 1) × a b 0 c d 0 t x t y 1 × a′ b′ 0 c′ d′ 0 t′ x t′ y 1 ී௨ͷΞϑΟϯมղઆͰ Α͘ΘΕΔܭࢉࣜ ࣮ࡍͷ$PSF(SBQIJDTͰ ΘΕͯΔܭࢉࣜ