给出 TransformationFunction,表示将 r 映射到 m.r 的仿射变换.
AffineTransform[{m,v}]
给出将 r 映射到 m.r+v 的仿射变换.
AffineTransform
给出 TransformationFunction,表示将 r 映射到 m.r 的仿射变换.
AffineTransform[{m,v}]
给出将 r 映射到 m.r+v 的仿射变换.
更多信息
- AffineTransform 给出可应用于向量的 TransformationFunction.
- 对于
维的普通仿射变换,m 是一个
×
矩阵. - AffineTransform 一般支持
×
矩阵的
维变换.
范例
打开所有单元 关闭所有单元基本范例 (2)
t = AffineTransform[{{{Subscript[a, 1, 1], Subscript[a, 1, 2]}, {Subscript[a, 2, 1], Subscript[a, 2, 2]}}, {Subscript[b, 1], Subscript[b, 2]}}]t[{x, y}]tr = AffineTransform[RotationMatrix[θ]]tr[{x, y}]tt = AffineTransform[{IdentityMatrix[2], {Subscript[b, 1], Subscript[b, 2]}}]tt[{x, y}]范围 (3)
t = AffineTransform[{DiagonalMatrix[{1, 1, 1, 2}], {x0, y0, z0, w0}}]t[{x, y, z, w}]InverseFunction[t]InverseFunction[t][{x, y, z, w}]gr = {Rectangle[], AbsolutePointSize[10], Opacity[1], {Magenta, Point[{0, 0}]}, {Green, Point[{1, 1}]}};Graphics[{{Opacity[.35], Blue, gr}, GeometricTransformation[{Opacity[.85], Red, gr}, AffineTransform[{{.8, .5}, {0, .8}}]]}]gr = {Cuboid[], AbsolutePointSize[10], Opacity[1], {Magenta, Point[{0, 0, 0}]}, {Green, Point[{1, 1, 1}]}};Graphics3D[{{Opacity[.35], Blue, gr}, GeometricTransformation[{Opacity[.85], Red, gr}, AffineTransform[{{.8, .5, .5}, {0, .8, .5}, {0, 0, .8}}]]}, Boxed -> False]应用 (5)
迭代函数系统 (3)
定义一个迭代函数系统(IFS),通过计算每一个迭代的
,将其在点集上迭代:
IFS[{T__TransformationFunction}][pl_List] := Join@@Comap[{T}, pl]IFSPlot[f_IFS, pts_, n_Integer] := Graphics[{PointSize[Tiny], Point[Nest[f, pts, n]]}]SierpinskiGasket = With[{𝒟 = DiagonalMatrix[{1, 1} / 2]}, IFS[{AffineTransform[{𝒟}], AffineTransform[{𝒟, {1 / 2, 0}}],
AffineTransform[{𝒟, {0.25, 0.433}}]}]];IFSPlot[N@SierpinskiGasket, RandomReal[1, {100, 2}], 4]SierpinskiCarpet = With[{𝒟 = DiagonalMatrix[{1, 1} / 3]}, IFS[{AffineTransform[{𝒟} ], AffineTransform[{𝒟, {0, 1 / 3}}], AffineTransform[{𝒟, {0, 2 / 3}}], AffineTransform[{𝒟, {1 / 3, 0}}], AffineTransform[{𝒟, {1 / 3, 2 / 3}}], AffineTransform[{𝒟, {2 / 3, 0}}], AffineTransform[{𝒟, {2 / 3, 1 / 3}}],
AffineTransform[{𝒟, {2 / 3, 2 / 3}}]}]];IFSPlot[N@SierpinskiCarpet, RandomReal[1, {100, 2}], 4]HeighwayDragon = IFS[{AffineTransform[{{{1 / 2, -1 / 2}, {1 / 2, 1 / 2}}}], AffineTransform[{{{-1 / 2, -1 / 2}, {1 / 2, -1 / 2}}, {1, 0}}]}];IFSPlot[N@HeighwayDragon, RandomReal[1, {100, 2}], 12]通过随机挑选点集的子部,有效地计算一个迭代函数系统(IFS)的固定点:
RandomIFS[IFS[{T__TransformationFunction}], m_][pl_List] :=
Apply[Join, Comap[{T}, RandomChoice[pl, m]]]IFSPlot[f_RandomIFS, pts_, n_Integer] := Graphics[{PointSize[Tiny], Point[Nest[f, pts, n]]}]SierpinskiGasket = With[{𝒟 = DiagonalMatrix[{1, 1} / 2]}, IFS[{AffineTransform[{𝒟}], AffineTransform[{𝒟, {1 / 2, 0}}],
AffineTransform[{𝒟, {0.25, 0.433}}]}]];IFSPlot[RandomIFS[N@SierpinskiGasket, 10^3], RandomReal[1, {10 ^ 3, 2}], 12]SierpinskiCarpet = With[{𝒟 = DiagonalMatrix[{1, 1} / 3]}, IFS[{AffineTransform[{𝒟} ], AffineTransform[{𝒟, {0, 1 / 3}}], AffineTransform[{𝒟, {0, 2 / 3}}], AffineTransform[{𝒟, {1 / 3, 0}}], AffineTransform[{𝒟, {1 / 3, 2 / 3}}], AffineTransform[{𝒟, {2 / 3, 0}}], AffineTransform[{𝒟, {2 / 3, 1 / 3}}],
AffineTransform[{𝒟, {2 / 3, 2 / 3}}]}]];IFSPlot[RandomIFS[N@SierpinskiCarpet, 10 ^ 3], RandomReal[1, {1000, 2}], 20]HeighwayDragon = IFS[{AffineTransform[{{{1 / 2, -1 / 2}, {1 / 2, 1 / 2}}}], AffineTransform[{{{-1 / 2, -1 / 2}, {1 / 2, -1 / 2}}, {1, 0}}]}];IFSPlot[RandomIFS[N@HeighwayDragon, 10 ^ 4], RandomReal[1, {10 ^ 4, 2}], 12]Hedgehog = With[{a = (1 + 1 / 3) / 2, b = (1 - 1 / 3) / 2}, IFS[{ScalingTransform[{1, 1, 1} / 3], ScalingTransform[{b, b, b}].TranslationTransform[{a, a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, a, -a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, -a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, -a, -a}], ScalingTransform[{b, b, b}].TranslationTransform[{-a, a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{-a, a, -a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, -a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, -a}]}]];Graphics3D[ {PointSize[Tiny], Point[Nest[RandomIFS[N@Hedgehog, 10 ^ 4], RandomReal[1, {100, 3}], 3]]}]TransformIFS[g_, IFS[l_List]] :=
Module[{prim = First[g], h = Head[g]},
t = Table[GeometricTransformation[prim, l[[i]]], {i, Length[l]}];h[t]];TransformIFS[g_, ifs_IFS, 0] := g;
TransformIFS[g_, ifs_IFS, 1] := TransformIFS[g, ifs];
TransformIFS[g_, ifs_IFS, n_Integer ? Positive] :=
TransformIFS[TransformIFS[g, ifs], ifs, n - 1];SierpinskiGasket = With[{𝒟 = DiagonalMatrix[{1, 1} / 2]}, IFS[{AffineTransform[{𝒟}], AffineTransform[{𝒟, {1 / 2, 0}}],
AffineTransform[{𝒟, {0.25, 0.433}}]}]];Table[TransformIFS[Graphics[Rectangle[]], SierpinskiGasket, n], {n, 0, 5}]SierpinskiCarpet = With[{𝒟 = DiagonalMatrix[{1, 1} / 3]}, IFS[{AffineTransform[{𝒟} ], AffineTransform[{𝒟, {0, 1 / 3}}], AffineTransform[{𝒟, {0, 2 / 3}}], AffineTransform[{𝒟, {1 / 3, 0}}], AffineTransform[{𝒟, {1 / 3, 2 / 3}}], AffineTransform[{𝒟, {2 / 3, 0}}], AffineTransform[{𝒟, {2 / 3, 1 / 3}}],
AffineTransform[{𝒟, {2 / 3, 2 / 3}}]}]];Table[TransformIFS[Graphics[Rectangle[]], SierpinskiCarpet, n], {n, 0, 3}]Hedgehog = With[{a = (1 + 1 / 3) / 2, b = (1 - 1 / 3) / 2}, IFS[{ScalingTransform[{1, 1, 1} / 3], ScalingTransform[{b, b, b}].TranslationTransform[{a, a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, a, -a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, -a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{a, -a, -a}], ScalingTransform[{b, b, b}].TranslationTransform[{-a, a, a}], ScalingTransform[{b, b, b}].TranslationTransform[{-a, a, -a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, -a}],
ScalingTransform[{b, b, b}].TranslationTransform[{-a, -a, -a}]}]];Table[TransformIFS[Graphics3D[Cuboid[]], Hedgehog, n], {n, 0, 3}]图像转换 (2)
用 AffineTransform 旋转图像:
ImageTransformation[[image], AffineTransform[(| | |
| ----------- | ---------- |
| Cos[π / 8] | Sin[π / 8] |
| -Sin[π / 8] | Cos[π / 8] |)]]ImageTransformation[[image], AffineTransform[(| | | |
| - | --- | - |
| 1 | 0.5 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |)]]属性和关系 (3)
Composition[TranslationTransform[{x0, y0}], RotationTransform[a]] == AffineTransform[{{{Cos[a], -Sin[a]}, {Sin[a], Cos[a]}}, {x0, y0}}]{m, v} = {Array[a, {3, 3}], {x, y, z}};AffineTransform[{m, v}] == LinearFractionalTransform[{m, v, {0, 0, 0}, 1}]{m1, v1} = {Array[a1, {2, 2}], {x[1], y[1]}};{m2, v2} = {Array[a2, {2, 2}], {x[2], y[2]}};Composition[AffineTransform[{m1, v1}], AffineTransform[{m2, v2}]] == AffineTransform[{m1.m2, m1.v2 + v1}]文本
Wolfram Research (2007),AffineTransform,Wolfram 语言函数,https://reference.wolfram.com/language/ref/AffineTransform.html.
CMS
Wolfram 语言. 2007. "AffineTransform." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/AffineTransform.html.
APA
Wolfram 语言. (2007). AffineTransform. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/AffineTransform.html 年
BibTeX
@misc{reference.wolfram_2026_affinetransform, author="Wolfram Research", title="{AffineTransform}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/AffineTransform.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_affinetransform, organization={Wolfram Research}, title={AffineTransform}, year={2007}, url={https://reference.wolfram.com/language/ref/AffineTransform.html}, note=[Accessed: 18-August-2026]}