A <- matrix(c(2, 1, 1, 3), nrow = 2) # symmetrisch
streckung <- matrix(c(3, 0, 0, 0.5), nrow = 2)
drehung <- matrix(c(0, 1, -1, 0), nrow = 2) # 90 Grad
scherung <- matrix(c(1, 0, 1.5, 1), nrow = 2)
punkte <- rbind(c(1, 0), c(0, 1), c(1, 1), c(1, -1), c(2, 1))
cbind(punkte, abgebildet = punkte %*% t(A)) [,1] [,2] [,3] [,4]
[1,] 1 0 2 1
[2,] 0 1 1 3
[3,] 1 1 3 4
[4,] 1 -1 1 -2
[5,] 2 1 5 5
for (nm in c("A", "streckung", "drehung", "scherung")) {
M <- get(nm)
cat(sprintf("%-10s det = %5.2f spur = %5.2f (1,1) -> (%.2f, %.2f)\n",
nm, det(M), sum(diag(M)),
(M %*% c(1, 1))[1], (M %*% c(1, 1))[2]))
}A det = 5.00 spur = 5.00 (1,1) -> (3.00, 4.00)
streckung det = 1.50 spur = 3.50 (1,1) -> (3.00, 0.50)
drehung det = 1.00 spur = 0.00 (1,1) -> (-1.00, 1.00)
scherung det = 1.00 spur = 2.00 (1,1) -> (2.50, 1.00)
quadrat <- rbind(c(0, 0), c(1, 0), c(1, 1), c(0, 1), c(0, 0))
bild <- quadrat %*% t(A)
ggplot() +
geom_path(data = data.frame(quadrat), aes(X1, X2), linetype = "dashed") +
geom_path(data = data.frame(bild), aes(X1, X2), linewidth = 0.9) +
coord_equal() +
labs(x = "", y = "", subtitle = "gestrichelt: Einheitsquadrat, durchgezogen: Bild unter A")


