Förflyttning och homogena koordinater

Först några observationer

Enhetsmatriser

(({{1, 0}, {0, 1}})).(({{x1, y1}, {x2, y2}}))//MatrixForm

(({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {0, 0}}))//MatrixForm

Transformationsmatris

(({{a, b}, {c, d}})).(({{x1, y1}, {x2, y2}}))//MatrixForm

(({{a, b, 0}, {c, d, 0}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {0, 0}}))//MatrixForm

Med siffervärden

(({{2, -6}, {-1, 3}})).(({{5, 2}, {1, 7}}))//MatrixForm

(({{2, -6, 0}, {-1, 3, 0}, {0, 0, 1}})).(({{5, 2}, {1, 7}, {0, 0}}))//MatrixForm

Vad händer här?

(({{a, b, 0}, {c, d, 0}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {1, 1}}))//MatrixForm

Med siffervärden

(({{2, -6, 0}, {-1, 3, 0}, {0, 0, 1}})).(({{5, 2}, {1, 7}, {1, 1}}))//MatrixForm

Och här?

(({{a, b, p}, {c, d, 0}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {1, 1}}))//MatrixForm

Och här?

(({{a, b, 0}, {c, d, k}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {1, 1}}))//MatrixForm

Vi inför homogena koordinater

(({{x1, y1}, {x2, y2}}))->(({{x1, y1}, {x2, y2}, {1, 1}}))

Transformationsmatriser

En  rotationsmatris blir

(({{cos φ, -sin φ, o}, {sin φ, cos φ, o}, {0, 0, 1}}))

En skevningsmatris blir

(({{1, h, 0}, {k, 1, 0}, {0, 0, 1}}))

En skalningsmatris blir

(({{k, 0, 0}, {0, m, 0}, {0, 0, 1}}))

Förflyttning

Förflyttning i x-led

(({{1, 0, a}, {0, 1, 0}, {0, 0, 1}}))

(({{1, 0, a}, {0, 1, 0}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {1, 1}}))//MatrixForm

Förflyttning i y-led

(({{1, 0, 0}, {0, 1, b}, {0, 0, 1}}))

(({{1, 0, 0}, {0, 1, b}, {0, 0, 1}})).(({{x1, y1}, {x2, y2}, {1, 1}}))//MatrixForm

Figur i homogena koordinater

figur={{0,0},{2,0},{2,2},{1,3},{0,2},{0,0}};

figurhom=Append [#,1]&/@ figur

xmove=(({{1, 0, 3}, {0, 1, 0}, {0, 0, 1}}));

xmove.Transpose[figurhom]
MatrixForm[%]

nyfigur=Transpose[Drop[xmove.Transpose[figurhom],-1]]

Show[Graphics[{Blue,Thick,Line[nyfigur],Red,Line[figur]}],Axes->True,PlotRange->{{-5,5},{-5,5}}]