Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az m×n mátrix m sorokba és n oszlopokba rendezett számok készlete. Az alábbi ábrán több mátrix látható.
Az egyes elemek hozzáadásával két azonos méretű mátrixot adhat hozzá. Az alábbi ábrán két példa látható a mátrix hozzáadására.
Az m×n mátrix megszorzható egy n×p mátrixtal, és az eredmény egy m×p mátrix. Az első mátrix oszlopainak számának meg kell egyeznie a második mátrix sorainak számával. Egy 4×2 mátrix például megszorozható egy 2×3 mátrixtal egy 4×3 mátrix létrehozásához.
A mátrix síkjában, soraiban és oszlopaiban lévő pontok vektoroknak tekinthetők. A (2, 5) például egy két összetevőből álló vektor, a (3, 7, 1) pedig egy három összetevőből álló vektor. Két vektor pont szorzata a következőképpen van definiálva:
(a, b) • (c, d) = ac + bd
(a, b, c) • (d, e, f) = ad + be + cf
A (2, 3) és (5, 4) pont szorzata például (2)(5) + (3)(4) = 22. A (2, 5, 1) és (4, 3, 1) pont szorzata (2)(4) + (5)(3) + (1)(1) = 24. Vegye figyelembe, hogy a két vektor pont szorzata egy szám, nem pedig egy másik vektor. Azt is vegye figyelembe, hogy a pont terméket csak akkor számíthatja ki, ha a két vektor azonos számú összetevőt tartalmaz.
Legyen az A(i, j) az A mátrix bejegyzése az i. sorban és a j. oszlopban. Az A(3; 2) például az A mátrix 3. sorában és a 2. oszlopban lévő bejegyzése. Tegyük fel, hogy az A, B és C mátrixok, és AB = C. A C bejegyzéseit a következőképpen számítjuk ki:
C(i, j) = (A i. sora) • (B oszlop j oszlopa)
Az alábbi ábra több példát mutat be a mátrixok szorzására.
Ha egy sík egy pontjára 1×2 mátrixként gondol, átalakíthatja ezt a pontot úgy, hogy megszorozza egy 2×2 mátrixtal. Az alábbi ábrán a pontra alkalmazott számos átalakítás látható (2, 1).
Az előző ábrán látható összes átalakítás lineáris átalakítás. Bizonyos egyéb átalakítások, például a fordítás, nem lineárisak, és nem fejezhetők ki szorzásként 2×2 mátrixtal. Tegyük fel, hogy a ponttal (2, 1) szeretné kezdeni, forgassa el 90 fokkal, fordítsa le 3 egységre az x irányban, és fordítsa le 4 egységre az y irányban. Ezt egy mátrix-szorzás, majd egy mátrix összeadása segítségével teheti meg.
A lineáris transzformációt (2×2 mátrix szorzását) és egy fordítást (1×2 mátrix hozzáadásával) affin transzformációnak nevezzük. Affine-transzformáció egy mátrixpárban való tárolásának alternatívája (egy a lineáris részhez és egy a fordításhoz) a teljes transzformáció tárolása egy 3×3 mátrixban. Ahhoz, hogy ez működjön, a sík egy pontját egy 1×3 mátrixban kell tárolni egy hamis 3. koordinátával. A szokásos technika az, hogy az összes 3. koordinátát 1-nek kell egyenlővé tenni. A pontot (2, 1) például a mátrix [2 1 1] jelöli. Az alábbi ábra egy affine-transzformációt mutat (90 fok elforgatása; 3 egység fordítása x irányban, 4 egység y irányban) egyetlen 3×3 mátrix szorzásaként kifejezve.
Az előző példában a pont (2, 1) a ponthoz van megfeleltetve (2, 6). Vegye figyelembe, hogy a 3×3 mátrix harmadik oszlopa a 0, 0, 1 számokat tartalmazza. Ez mindig így lesz az affin transzformáció 3×3 mátrixában. A fontos számok az 1. és a 2. oszlopban szereplő hat szám. A mátrix bal felső 2×2 része az átalakítás lineáris részét jelöli, a harmadik sor első két bejegyzése pedig a fordítást.
A GDI+-ban egy objektumban tárolhat affine-transzformációt Matrix . Mivel egy mátrix harmadik oszlopa mindig (0, 0, 1) affine-transzformációt jelöl, az első két oszlopban csak a hat számot kell megadnia egy Matrix objektum létrehozásakor. Az utasítás Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4)
az előző ábrán látható mátrixot hozza létre.
Összetett átalakítások
Az összetett átalakítás az átalakítások sorozata, amelyet a másik követ. Vegye figyelembe az alábbi listában szereplő mátrixokat és átalakításokat:
Mátrix | Transzformáció |
---|---|
A mátrix | Forgatás 90 fokkal |
B mátrix | Skálázás 2 tényezővel az x irányban |
C mátrix | 3 egység fordítása az y irányban |
Ha a ponttal (2, 1) kezdjük – amelyet a mátrix [2 1 1] jelöl –, és az A, majd a B, majd a C szorzattal szorozzuk, a pont (2, 1) a felsorolt sorrendben a három transzformáción megy keresztül.
[2 1 1]ABC = [-2 5 1]
Ahelyett, hogy az összetett transzformáció három részét három külön mátrixban tárolné, az A, B és C szorzatával egyetlen 3×3 mátrixot kaphat, amely a teljes összetett transzformációt tárolja. Tegyük fel, hogy ABC = D. Ezután a D-vel szorzott pont ugyanazt az eredményt adja, mint az A, majd a B, majd a C szorzata.
[2 1 1]D = [-2 5 1]
Az alábbi ábra az A, B, C és D mátrixokat mutatja be.
Az a tény, hogy az összetett transzformáció mátrixa az egyes transzformációs mátrixok szorzásával alakítható ki, azt jelenti, hogy az affin-transzformációk sorozata egyetlen Matrix objektumban tárolható.
Figyelmeztetés
Az összetett átalakítás sorrendje fontos. Általánosságban elmondható, hogy a forgatás, majd a skálázás, majd a fordítás nem ugyanaz, mint a skálázás, majd a forgatás, majd a fordítás. Hasonlóképpen fontos a mátrix szorzásának sorrendje is. Az ABC általában nem ugyanaz, mint a BAC.
Az Matrix osztály számos módszert kínál az összetett átalakítás létrehozásához: Multiply, Rotate, RotateAt, Scale, Shearés Translate. Az alábbi példa egy összetett transzformáció mátrixát hozza létre, amely először 30 fokban forog, majd 2-es tényezővel skáláz az y irányban, majd 5 egységet fordít le az x irányban:
Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)
Az alábbi ábrán a mátrix látható.
Lásd még
.NET Desktop feedback