4.5 仿射变换

仿射变换的概念:

仿射变换,又称仿射映射,是指一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。设点P的坐标是(x,y,z),通过jhtbhelp计算出变换后的点P'(x',y',z'),它是“线性变换”+“平移”。包括旋转,缩放,平移,反射,错切等。

仿射变换保“同素性”、“结合性”、“平行性”。在经过变换之后,点仍然是点,线仍然是线,共线的点变换之后还是共线,平行的直线变换之后还是平行。并且保持共线点之间的位置比例不变,即“保单比”。但它不能“保距离”、“保夹角”。

jhtbhelp

简单地说,仿射变换把平面内的一个三角形变成另一个三角形,把一个平行四边形变成另一个平行四边形,把空间中一个四面体变成另一个四面体,把一个平行六面体变成另一个平行六面体。变换前后往往发生位置平移,方向旋转,长度放缩,夹角不等等。但中点还是中点,分点的单比不变。

仿射变换也可以看作是一个仿射坐标系到另一个仿射坐标系间的对应。平面内不共线三点OAB,确定向量OA、OB,可以作为基向量,确定一个平面内的坐标系统。另三点O'A'B',确定向量O'A'、O'B',也可以作为基向量,确定另一个坐标系统。变换前后,对应的向量在各自基下的坐标是相同的。三维与此类似,四个不共面的点A、B、D、A1对应四个不共面的点A'、B'、D'、A1'。变换公式中12个系数就可以由四对点的坐标代入得到的12个方程解出,这由程序为你自动完成。

jhtbhelp

画法:

1. 先标志仿射规则:

图霸中的【变换】,要先标志,再实施。不标志只能输入固定的值。仿射规则的标志分二维与三维两类,分别用于平面图形与立体图形。选择使用下面的一种标志方式即可。

(1)选择二维平面内的三个点,【变换-标志仿射变换规则】,这样就把三点与系统坐标系中的(0,0),(1,0),(0,1)三点之间建立仿射对应。变换方向在实施变换时选择是“二维坐标系到二维三点”还是“二维三点到二维坐标系”。注意选取的三点要不共线,它们可以作为平面向量的基底,以下的类似,不再指明。

jhtbhelp

(2)选择二维平面内的六个点,【变换-标志仿射变换规则】,这样就把前三点与后三点建立仿射对应。如图(1)中的O、A、B,O'、A'、B'。先选取的三点还可以用于与系统坐标系间的对应。

(3)六点分两次标志。先选择三点,【变换-标志仿射变换规则】,再选择三点,【变换-标志仿射变换规则】。后选取的三点用于与系统坐标系间的对应,同时,先三点与后三点间也可以建立仿射对应。与(2)不同的是后三点中有些点可以是与前三点是相同的。比如点O、A、B到点O、A、C。

(4)选择三维空间中的八个点,【变换-标志仿射变换规则】,这样就把前四点与后四点建立仿射对应。如图(2)中的A、B、D、A1,A'、B'、D'、A1'。

(5)八点分两次标志。先选择四点,【变换-标志仿射变换规则】,再选择四点,【变换-标志仿射变换规则】。这样,先四点与后四点间建立仿射对应。与(4)不同的是后四点中有些点是可以与前四点是相同的。比如点O、A、B、C到点O、A、C、D。

2. 选取若干个点、线、圆、面、曲线、轨迹,【变换-仿射】,在对话框中选择适当的仿射变换规则(也可以自己指定变换公式中的系数,这时标志的规则无效,下次要再次标志),确定后得到这些图元的象。

jhtbhelp

在选择变换规则时,根据你的标志确定是二维还是三维的变换,二维变换前后的点的z值是相同的。

对话框中的变换系数能根据选择的标志类型即时变化,当点选使用“指定二维(或三维)变换公式”进行变换时计算效率较高,高手可以自己输入公式,还可以使用函数。若不修改参数值,用公式与用标志进行变换得到的象是相同的。但确定后它的值不能被修改,不能随标志的点的变化而变化,是静态数据。此时可以删除用于标志的点而不影响变换。

例4.5.1:在矩形坐标系(两轴单位长不等)中绘制函数y=x^2的图象。

1.【二维】视图,用【常用-工具-自定义-基本画图工具】中“二维矩形坐标系”工具在图形区添加一个坐标系,右击回到箭头点选状态。点击显示网格按钮及显示参数按钮。双击计算式dx,计算器中修改值为1,双击计算式dy,计算器中修改值为10。选取y轴上刻度数值10和-10,【编辑-值精度-输入值】1,保留到整数,不显示小数部分。在x轴上单位1处点击隐形点,【属性】中修改显示方式为“圆形”,同样改y轴上10处的点为“圆形”显示。当你熟悉此处有个隐形点后就不用再改了,可以直接点击此处选取。拖动这两个点改变单位长,拖动轴端点改变轴长,拖动刻度线端点改变刻度线长。以点O为中心把y轴上的点10按比0.1综放为点1。

jhtbhelp

2.【 新建参数】x,【计算】x^2,选取这两个式子,【点】工具绘制坐标点A,它是系统坐标系中的点。下图有个系统坐标系供参考,不用画出来。下面用仿射变换把点A变换到自定义的坐标系中。选取点O及两轴上的两个单位1点(下图左边),【标志仿射规则】,选取点A,【仿射】变换,保持选取的“二维坐标系到二维三点”,确定,得点A'。选取x及点A',【构造-轨迹】。

jhtbhelp

3. 把轴上的两个红点仍改回“隐形”显示,继续拖动它们改变单位长。隐藏y轴上的单位1,点A、A',参数x及计算式x^2。

jhtbhelp

例4.5.2:向量分解

jhtbhelp

分析:向量分解可以用平行四边形法则,线性表示式的系数既可以度量点值也可以用仿射变换。

画法:

1. 【二维】视图中,【点】工具添加全自由点O,在点O上击两次添加随从点A、B后右击鼠标。添加向量OA、OB,直线AB,直线浅蓝色虚线显示。添加线AB上点C,向量OC,桔黄色显示。拖动自由点,如图。

jhtbhelp

2. 选取三点B、A、C,【标志比】,选取点O,【标志中心】,把点A按标志比BC:BA缩放到点A',连结A'C,同样把点B以O为中心按比AC:AB缩放到点B',连结CB'。则四边形OA'CB'为平行四边形,这种作法比先画平行线再画交点好。画向量OA'、OB',桔黄色全实线显示,画直线OA、OB,直线用浅蓝色虚线显示。把向量OA、OB改为仅实线显示,这样层次清楚。度量点A'在直线OA上的值,度量点B'在直线OB上的值。

jhtbhelp

3. 改两个度量值标签为m、n,【计算】m+n,拖动点C,m+n总为1。

jhtbhelp

4. 选取三点O、A、B,【标志仿射变换规则】,选取点C,【仿射】变换,使用“二维三点到二维坐标系”,得点C',度量C'的坐标x(C')、y(C'),它与m、n分别相等。从此可见OC在OA、OB下的坐标与对应的点C在系统坐标系的坐标是一样的,这种方法求向量分解系数比画平行线度量方便得多。

jhtbhelp

例4.5.3:应用仿射变换解椭圆问题:

jhtbhelp

思路:在解决椭圆的某些综合问题时,可以利用仿射变换的办法,把椭圆变换为圆来进行研究,会使得问题的解决过程变得简单。在使用时应了解仿射变换前后对应图形的面积比不变。

画法:

1.平面图形使用【常用-视图-二维】视图,显示【坐标系】,鼠标在单位1处向右拖动放大单位长,如下图。再点击【坐标系】工具,隐藏。

jhtbhelp

2.【点工具】添加自由点,改名为O,选取它,向右【平移】2个单位得点A,向上【平移】1个单位得点B,【线工具】连接AB。选取点O,【插入-二维坐标轴】。点击刻度值处选取轴,【属性】中改刻度线、刻度值间距均为1.

jhtbhelp

3.【常用-自定义工具-圆锥曲线工具-椭圆(中心+两顶点)】工具,匹配点O、A、B,添加椭圆。【线工具】点击点O,线段AB,添加直线,改AB上点的标签为D。选取直线OD和椭圆,【点工具】添加交点E、F。【线工具】连接AE、EB、BF、FA。选取四点A、E、B、F,【面工具】添加填充的四边形AEBF.

jhtbhelp

4.选取点O、A、B,【变换-标志仿射变换规则】。全选,【变换-仿射】,对话框中点选“二维三点→二维坐标系”,“确定”后,椭圆变换为单位圆,圆心O'是系统坐标系的原点。

椭圆变换为单位圆的公式为x'=x/a,y'=y/b。由于上图中有平移,所以对话框中的公式为:x'=0.5x+2.5,y'=y,z'=z.

jhtbhelp

5.分别选取两个四边形,【度量-多边形面积】,选取,【计算】两个面积比;分别选取直线OD,直线O'D',【度量-斜率】,选取,【计算】两个斜率之比。拖动点D,观看两个比值,发现它们是不变的。还可以通过【度量】、【计算】,验证ED:DF=E'D':D'F',AD:DB=A'D':D'B'等不变量。思考它们与椭圆方程中系数a、b的关系。拖动点D,观察它在何处,四边形面积最大,为什么?

此题略解如下:

jhtbhelp

由上述过程可知,当D'为A'B'中点时,四边形A'E'B'F'的面积取到最大值。由于仿射变换保单比,故当D为AB中点时,四边形AEBF的面积取到最大值( 此时对角线AB与EF的斜率之积为-(b/a)^2 )。

例4.5.4:画三角形的内切椭圆。

已知三角形ABC内一点O,射线AO交BC于点D,射线BO交AC于点E,射线CO交AB于点F。绘制三角形的内切椭圆,切点分别为D、E、F。

jhtbhelp

思路:利用三角形的内切圆仿射变换得到内切椭圆。如图,假设由三角形A'BC到三角形ABC的仿射变换能使内切圆变为内切椭圆,且切点P、Q变换为切点E、F,关键是如何画出点A'。由于仿射变换“保单比”,BQ:BA'=BF:BA,又BQ=BD,所以BA'=BD*(BA:BF),因此可以把点D以B为中心,BA:BF为比缩放得到点S,从而BA'=BS,QA'=DS。作S关于点D的对称点T,则CT=CD+DT=CP+DS=CP+QA'=CP+PA'=CA'.这样A'可以由两圆交点得到。

jhtbhelp

画法:

1.进入【二维视图】,使用【常用-自定义工具-平面几何工具-三角形】工具,添加一个三角形ABC,拖动顶点,选取三个顶点,【面】工具添加填充面。选取它,【常用-点】工具,添加三角形内的一点,改名称为O.

jhtbhelp

2.【线工具】构造射线AO,选取AO与BC,【点工具】添加交点D,同法绘制BE、CF,隐藏面及三射线。拖动点O,它总在三角形内移动。点O称为三角形ABC的塞瓦(Ceva)点,是三线AD、BE、CF的公共点,有塞瓦定理:(BD:DC)*(CE:EA)*(AF:FB)=1.

3.右击点B,【标志中心】,依次选取点B、F、A,【变换-标志比】,选取点D,【变换-伸缩】,得到点(改名)S,选取点S,D,【点】工具得对称点(改名)T。

jhtbhelp

4.选取点B、S,【圆】工具添加圆B,选取点C、T,【圆】工具添加圆C,选取两圆,【点】工具添加交点,删除下面的一个,改另一个为A',如图。

5.选取点A'、B、C,【常用-自定义工具-基本画图工具-三角形内切圆】工具,添加圆I,隐藏切点。

jhtbhelp

6.选取点A'、B、C,【变换-标志仿射变换规则】,再选取三点A、B、C,【变换-标志仿射变换规则】。选取圆I、圆心I,【变换-仿射】,对话框中点选“二维三点→二维三点”,“确定”后得到椭圆及其中心I'。注意点O并非椭圆中心。隐藏A',圆I等。

拖动点O,观察椭圆与三边相切的情况,何时椭圆面积最大呢?答案是当点O为三角形ABC的重心时,如图。

jhtbhelp

 

练习:把函数y=lgx,x∈(0,1000]的图象通过仿射变换绘制在自定义的矩形坐标系下(由于x的范围较大,所以轨迹的精度不能太高)。

jhtbhelp

 

 

进入下一课

返回帮助目录