强基初中数学&学Python——第五十三课 坐标应用之四:用坐标表示平移

    “强基初中数学&学Python班”正在招六、七、八年级学生,有意者请关注后私信报名!

    更多课程,请复制本公众号网址http://www.5xstar.com在浏览器中打开。

    平面中有了直角坐标系,平面上的点就可以用坐标表示。那平面上的图形的平移就一定可以用坐标的变化了表示了。在研究物体的平移之前,先探究一下点的位置变动规律。点A(-1,2)分别向左右上下四个移动5单位长度后的坐标:左右移动y坐标不变,左移动后坐标应该是(-6,2);右移动后坐标应该是(4,2)。上下移动x坐标不变,上移动后坐标应该是(-1,7);下移动后坐标应该是(-1,-3)。用海龟画图验证如下图,程序代码见附录1:

    一般地,在平面直角坐标系中,将点(x,y)向右(或左)移动a个单位长度可以得到对应点(x+a,y)(或(x-a,y));将点(x,y)向上(或下)移动b个单位长度,可以得到对应点(x,y+b)(或(x,y-b))。

    如果点的移动复合了,情况会怎样呢?例如,从A(-2,4)点向下移动6个单位长度后到B点,根据上面的结论得到B点坐标是(-2,-2),再向右移动8个单位的长度得到C点,同样得到C点坐标是(6,-2)。如果从A直接移动到C,根据勾股定理,只需移动10个长度单位。用程序验证如下图,代码看附录2:

    一般地,平面上点的位置变化,可以拆分为两个步骤:先x轴方向的移动(x坐标增加或减少1个数)再y轴方向的移动(y坐标增加或减少1个数),或先y轴方向的移动(y坐标增加或减少1个数)再x轴方向的移动(x坐标增加或减少1个数)。反过来,连续的x和y轴方向的两次移动,可以用一次“斜”的移动代替(x坐标增加或减少1个数,同时y坐标也增加或减少1个数)。

    平面中的图形各点的运动方向保持平行同向,距离也保持相等,这样的运动我们认为是平移运动。

    一般地,在平面直角坐标系内,如果把一个图形各个点的横坐标都加(或减去)一个正数a,相应的新图形就是把原图形向右(或向左)平移a个单位长度;如果把它各个点的纵坐标都加(或减去)一个正数a,相应的新图形就是把原图形向上(或向下)平移a个单位长度。纵横坐标同时变化,可以分开两步,但不影响最终结果。

    例题1:如下图,三角形平移运动的x和y轴的变化,画出实际的平移后的位置,并写出坐标。

解:
方法一:过A1和A2的方格线(过A1平行于y轴及过A2平行于x轴的两条直线)交点是平移后A的位置A3(-2,-2),同理得到B3(-3,-4)和C3(-5,-3),连接这三点就得到平移后的三角形。
方法二:A1(-2,3)、A2(4,-2),根据平行于坐标轴方向移动的规律,x轴方向, y坐标不变;y轴方向,x坐标不变,取A1的横坐标-2与A2的纵坐标-2组成的(-2,-2)坐标就是A3的坐标,同理得到B3(-3,-4)和C3(-5,-3),连接这三点就得到平移后的三角形(下图)。程序代码附录3。

    例题2:如下图,三角形平移后的位置A3(-1,-1)、B3(-2,-3)和C3(-4,-2)画出拆开为x和y两个方向平移的位置,标出顶点的坐标。

解:
方法一:过A和A3的方格线交于2点,对于A点处于y轴对侧的是x轴方向平移A1(-1,4),另外一点是y轴方向平移A2(5,-1);同理得到B1(-2,2)、B2(4,-3)、C1(-4,3)、C2(2,-2),过这些点连接成三角形。
方法二:轴平移的三角形A1坐标由A3的横坐标和A的纵坐标组成,得A1(-1,4),同理得B1(-2,2)、C1(-4,3);y轴平移的三角形A2坐标由A3的纵坐标和A的横坐标组成,得A2(5,-1),同理得B2(4,-3)、C2(3,-2),过这些点连接成三角形(下图)。程序代码附录4。

    例题3:在海龟画图中,默认情况坐标是隐藏的。如下图,已知平行四边形ABCD的三个顶点坐标A(-7,-8)、B(-4,0)和C(-1,2),向右平移5个单位后向上平移4个单位,求移动前后的D点坐标?

分析:平移时,各点的坐标变化是一致的,只要知道D点平移前的坐标,就可以求出平移后的坐标;根据平行四边形的性质,边DC可以认为是边AB的平移所得。
解:
    ∵  D点对于A点的变化与C点对于B点的变化相同,x坐标变化=-1-(-4)=3;y坐标变化=2-0=2;
    ∴  D点坐标x=-7+3=-4,y=-8+2=-6,即D(-4,-6);
    ∴  D点平移后坐标x=-4+5=1,y=-6+4=-2,即D'(1,-2)。
计算后坐标下图,程序代码附录5。

练习题:

1、如下图,在隐含直坐标系的平面中,已知平行四边形ABCD的三个顶点坐标A(-2,-2)、B(1,4)和D(6,1),向左平移6个单位后向下平移5个单位,求移动前后的C点坐标?

2、如下图,三辆汽车P(-1,1)、Q(-3,1)、R(-1,-1)保持编队行驶,当汽车P行驶到P'(4,3)时,标出汽车Q、R行驶到的位置Q'、R'的坐标?

3、选择题,如下图,将三角形向右平移2个单位长度,再向上平移3个单位长度,平移后三个顶点的坐标是( ):
(A)  (2, 2),(3, 4),(1, 7)
(B)  (-2, 2),(4, 3),(1, 7)
(C)  (-2, 2),(3, 4),(1, 7)
(D)  (2, -2),(3, 3),(1, 7)

4、如下图,三角形ABC中任意一点P(x,y)经平移后对应点为P'(x+5,y+3),将三角形ABC作同样的平移得到三角形A'B'C'。求A',B',C'的坐标。

5、如下图,三角形AOB中,A,B两点的坐标分别为(2,4),(6,2),求三角形AOB的面积。(提示:三角形AOB的面积可以看作一个长方形的面积减去一些小三角形的面积。)

附录1:

#点的数轴方向(上下左右)移动规律
import sys
sys.path.append("/5xstar/pyfiles")  #预制自定义模块(py文件)存放根目录
import turtle as t  #导入海龟画图
t.setup(500,500)
t.screensize(420,420)  
from mymath.rcs import * #导入函数轨迹模块
xUnt = (1,20)  #数值与像素数值比例1:20,实际坐标是像素数的二十分之一
yUnt = (1,20)
build(t,xUnt,yUnt) #画平面直角坐标系
t.up()
workFont=("宋体", 12, "bold") #标位置字体:12号,宋体,黑体
#标定位置
def indication(name,pos,dx=2,dy=2,algn=None):
    '''
    @name 位置名称
    @pos 位置坐标
    @dx 写字位置x增加值
    @dy 写字位置y增加值
    @align 写字方向:center,left,right
    '''
    t.setpos(pos)
    t.stamp()
    t.setpos(pos[0]+dx,pos[1]+dy)
    if algn == None:
        t.write("%s(%d,%d)" % (name, pos[0]//20, pos[1]//20), font=workFont)  #实际坐标是像素数的二十分之一
    else:
        t.write("%s(%d,%d)" % (name, pos[0]//20, pos[1]//20), align=algn, font=workFont)
        
t.pencolor("blue")  #画线颜色
t.fillcolor("blue")
x, y = -1, 2  #A点
t.setpos(x*20,y*20)
t.shape("circle")  
t.stamp()
indication("A",t.pos())  #打名称坐标
t.down()
t.shape("classic")
dx = 5  #向右移动5
t.setx((x+dx)*20)
t.seth(0)
t.stamp()
indication("右",t.pos())  #打名称坐标
t.up()
t.setpos(x*20,y*20) #复位
t.down()
dx = -5  #向左移动5
t.setx((x+dx)*20)
t.seth(180)
t.stamp()
indication("左",t.pos())  #打名称坐标
t.up()
t.setpos(x*20,y*20) #复位
t.down()
dy = 5  #向上移动5
t.sety((y+dy)*20)
t.seth(90)
t.stamp()
indication("上",t.pos())  #打名称坐标
t.up()
t.setpos(x*20,y*20) #复位
t.down()
dy = -5  #向下移动5
t.sety((y+dy)*20)
t.seth(-90)
t.stamp()
indication("下",t.pos())  #打名称坐标
t.up()
t.ht()
t.mainloop()

附录2:

#点的“斜”移动规律
import sys
sys.path.append("/5xstar/pyfiles")  #预制自定义模块(py文件)存放根目录
import turtle as t  #导入海龟画图
t.setup(500,500)
t.screensize(420,420)  
from mymath.rcs import * #导入函数轨迹模块
xUnt = (1,20)  #数值与像素数值比例1:20,实际坐标是像素数的二十分之一
yUnt = (1,20)
build(t,xUnt,yUnt) #画平面直角坐标系
t.up()
workFont=("宋体", 12, "bold") #标位置字体:12号,宋体,黑体
#标定位置
def indication(name,pos,dx=2,dy=2,algn=None):
    '''
    @name 位置名称
    @pos 位置坐标
    @dx 写字位置x增加值
    @dy 写字位置y增加值
    @align 写字方向:center,left,right
    '''
    t.setpos(pos)
    t.stamp()
    t.setpos(pos[0]+dx,pos[1]+dy)
    if algn == None:
        t.write("%s(%d,%d)" % (name, pos[0]//20, pos[1]//20), font=workFont)  #实际坐标是像素数的二十分之一
    else:
        t.write("%s(%d,%d)" % (name, pos[0]//20, pos[1]//20), align=algn, font=workFont)
        
t.pencolor("blue")  #画线颜色
t.fillcolor("blue")
x, y = -2, 4  #A点
t.setpos(x*20,y*20)
t.shape("circle")  
t.stamp()
indication("A",t.pos())  #打名称坐标
t.down()
t.shape("classic")
dy = -6  #向下移动6
t.sety((y+dy)*20)
t.seth(-90)
t.stamp()
indication("下",t.pos())  #打名称坐标
dx = 8  #不复位向右移动8
t.setx((x+dx)*20)
t.seth(0)
t.stamp()
indication("右",t.pos())  #打名称坐标
t.up()
t.setpos(x*20,y*20) #复位
t.down()
d = 10  #斜移动10
import math
t.seth(math.atan2(-6,8)*180/math.pi)
t.pencolor("red")  #画线颜色
t.fillcolor("red")
t.forward(10*20)
t.stamp()
pos=t.pos()
t.sety(pos[1]+20);
t.write("%s(%d,%d)" % ("斜", pos[0]//20, pos[1]//20), font=workFont)
t.up()
t.ht()
t.mainloop()

附录3:

#图形平移的合成
import sys
sys.path.append("/5xstar/pyfiles")  #预制自定义模块(py文件)存放根目录
import turtle as t  #导入海龟画图
t.setup(500,500)
t.screensize(440,440)  
from mymath.rcs import * #导入函数轨迹模块
xUnt = (1,40)  #数值与像素数值比例1:40,实际坐标是像素数的二十分之一
yUnt = (1,40)
build(t,xUnt,yUnt) #画平面直角坐标系
t.up()
workFont=("宋体", 12, "bold") #标位置字体:12号,宋体,黑体
#标定位置
def indication(name,pos,dx=2,dy=2,algn=None):
    '''
    @name 位置名称
    @pos 位置坐标
    @dx 写字位置x增加值
    @dy 写字位置y增加值
    @align 写字方向:center,left,right
    '''
    t.up()
    t.setpos(pos[0]+dx,pos[1]+dy)
    if algn == None:
        t.write(name, font=workFont)  #实际坐标是像素数的二十分之一
    else:
        t.write(name,align=algn, font=workFont)
    t.setpos(pos)
    t.down()
        
#原三角形
Ax, Ay, Bx, By, Cx, Cy = 4,3,3,1,1,2
t.setpos(Ax*40,Ay*40)
indication("A",t.pos())  #打名称坐标
t.down()
t.setpos(Bx*40,By*40)
indication("B",t.pos(),dy=-20)  #打名称坐标
t.setpos(Cx*40,Cy*40)
indication("C",t.pos())  #打名称坐标
t.setpos(Ax*40,Ay*40)
t.up()
t.pencolor("blue")  #画箭头
t.fillcolor("blue")
t.shape("classic")
t.setpos(1.5*40,2.5*40)
t.down()
t.setx(-1.5*40)
t.seth(180)
t.stamp()
t.up()
#x平移三角形
A1x, B1x, C1x = -2,-3,-5
t.setpos(A1x*40,Ay*40)
indication("A1",t.pos())  #打名称坐标
t.down()
t.setpos(B1x*40,By*40)
indication("B1",t.pos(),dy=-20)  #打名称坐标
t.setpos(C1x*40,Cy*40)
indication("C1",t.pos())  #打名称坐标
t.setpos(A1x*40,Ay*40)
t.up()
t.pencolor("red")  #画箭头
t.fillcolor("red")
t.setpos(2.5*40,1*40)
t.down()
t.sety(-2.1*40)
t.seth(-90)
t.stamp()
t.up()
#y平移三角形
A2y, B2y, C2y = -2,-4,-3
t.setpos(Ax*40,A2y*40)
indication("A2",t.pos())  #打名称坐标
t.down()
t.setpos(Bx*40,B2y*40)
indication("B2",t.pos(),dy=-20)  #打名称坐标
t.setpos(Cx*40,C2y*40)
indication("C2",t.pos())  #打名称坐标
t.setpos(Ax*40,A2y*40)
t.up()
t.pencolor("green")  #画线颜色
t.fillcolor("green")
#平移后三角形
t.setpos(A1x*40,A2y*40)
indication("A3",t.pos())  #打名称坐标
t.down()
t.setpos(B1x*40,B2y*40)
indication("B3",t.pos(),dy=-20)  #打名称坐标
t.setpos(C1x*40,C2y*40)
indication("C3",t.pos())  #打名称坐标
t.setpos(A1x*40,A2y*40)
t.up()
t.ht()
t.mainloop()

附录4:

#图形平移的分解
import sys
sys.path.append("/5xstar/pyfiles")  #预制自定义模块(py文件)存放根目录
import turtle as t  #导入海龟画图
t.setup(500,500)
t.screensize(440,440)  
from mymath.rcs import * #导入函数轨迹模块
xUnt = (1,40)  #数值与像素数值比例1:40,实际坐标是像素数的二十分之一
yUnt = (1,40)
build(t,xUnt,yUnt) #画平面直角坐标系
t.up()
workFont=("宋体", 12, "bold") #标位置字体:12号,宋体,黑体
#标定位置
def indication(name,pos,dx=2,dy=2,algn=None):
    '''
    @name 位置名称
    @pos 位置坐标
    @dx 写字位置x增加值
    @dy 写字位置y增加值
    @align 写字方向:center,left,right
    '''
    t.up()
    t.setpos(pos[0]+dx,pos[1]+dy)
    if algn == None:
        t.write(name, font=workFont)  #实际坐标是像素数的二十分之一
    else:
        t.write(name,align=algn, font=workFont)
    t.setpos(pos)
    t.down()
        
#原三角形
Ax, Ay, Bx, By, Cx, Cy = 5,4,4,2,2,3
t.setpos(Ax*40,Ay*40)
indication("A",t.pos())  #打名称坐标
t.down()
t.setpos(Bx*40,By*40)
indication("B",t.pos(),dy=-20)  #打名称坐标
t.setpos(Cx*40,Cy*40)
indication("C",t.pos())  #打名称坐标
t.setpos(Ax*40,Ay*40)
t.up()
t.pencolor("green")  #画线颜色
t.fillcolor("green")
#平移后三角形
A3x, A3y, B3x, B3y, C3x, C3y = -1,-1,-2,-3,-4,-2
t.setpos(A3x*40,A3y*40)
indication("A3",t.pos())  #打名称坐标
t.down()
t.setpos(B3x*40,B3y*40)
indication("B3",t.pos(),dy=-20)  #打名称坐标
t.setpos(C3x*40,C3y*40)
indication("C3",t.pos())  #打名称坐标
t.setpos(A3x*40,A3y*40)
t.up()
t.pencolor("blue")  #画箭头
t.fillcolor("blue")
t.shape("classic")
t.setpos(2.5*40,3.5*40)
t.down()
t.setx(-0.5*40)
t.seth(180)
t.stamp()
t.up()
#x平移三角形
t.setpos(A3x*40,Ay*40)
indication("A1",t.pos())  #打名称坐标
t.down()
t.setpos(B3x*40,By*40)
indication("B1",t.pos(),dy=-20)  #打名称坐标
t.setpos(C3x*40,Cy*40)
indication("C1",t.pos())  #打名称坐标
t.setpos(A3x*40,Ay*40)
t.up()
t.pencolor("red")  #画箭头
t.fillcolor("red")
t.setpos(3.5*40,2*40)
t.down()
t.sety(-1.1*40)
t.seth(-90)
t.stamp()
t.up()
#y平移三角形
t.setpos(Ax*40,A3y*40)
indication("A2",t.pos())  #打名称坐标
t.down()
t.setpos(Bx*40,B3y*40)
indication("B2",t.pos(),dy=-20)  #打名称坐标
t.setpos(Cx*40,C3y*40)
indication("C2",t.pos())  #打名称坐标
t.setpos(Ax*40,A3y*40)
t.up()
t.ht()
t.mainloop()

附录5:

#图形平移的同步性
import turtle as t  #导入海龟画图
t.setup(500,500)
t.screensize(420,420)  
xyUnit = 20  #数值与像素数值比例1:20,实际坐标是像素数的二十分之一
t.up()
workFont=("宋体", 12, "bold") #标位置字体:12号,宋体,黑体
#标定位置
def indication(name,pos,dx=2,dy=2,algn=None,posOn=True):
    '''
    @name 位置名称
    @pos 位置坐标
    @dx 写字位置x增加值
    @dy 写字位置y增加值
    @align 写字方向:center,left,right
    @posOn 是否打坐标
    '''
    t.up()
    t.setpos(pos[0]+dx,pos[1]+dy)
    if algn == None:
        if posOn:
            t.write("%s(%d,%d)" % (name, pos[0]//xyUnit, pos[1]//xyUnit), font=workFont)
        else:
            t.write(name, font=workFont)  #实际坐标是像素数的二十分之一
    else:
        if posOn:
            t.write("%s(%d,%d)" % (name, pos[0]//xyUnit, pos[1]//xyUnit), align=algn, font=workFont)
        else:
            t.write(name,align=algn, font=workFont)
    t.setpos(pos)
    t.down()
        
#原平行四边形
Ax, Ay, Bx, By, Cx, Cy, Dx, Dy = -7,-8,-4,0,-1,2,-4,-6
t.setpos(Ax*xyUnit,Ay*xyUnit)
indication("A",t.pos(),dy=-xyUnit)  #打名称坐标
t.down()
t.setpos(Bx*xyUnit,By*xyUnit)
indication("B",t.pos())  #打名称坐标
t.setpos(Cx*xyUnit,Cy*xyUnit)
indication("C",t.pos())  #打名称坐标
t.setpos(Dx*xyUnit,Dy*xyUnit)
indication("D",t.pos(),dy=-xyUnit)  #打名称坐标,posOn=False
t.setpos(Ax*xyUnit,Ay*xyUnit)
t.up()
t.pencolor("blue")  #画箭头
t.fillcolor("blue")
#平移后平行四边形
t.setpos((Ax+5)*xyUnit,(Ay+4)*xyUnit)
indication("A'",t.pos(),dy=-xyUnit)  #打名称坐标
t.down()
t.setpos((Bx+5)*xyUnit,(By+4)*xyUnit)
indication("B'",t.pos())  #打名称坐标
t.setpos((Cx+5)*xyUnit,(Cy+4)*xyUnit)
indication("C'",t.pos())  #打名称坐标
t.setpos((Dx+5)*xyUnit,(Dy+4)*xyUnit)
indication("D'",t.pos(),dy=-xyUnit)  #打名称坐标
t.setpos((Ax+5)*xyUnit,(Ay+4)*xyUnit)
t.up()
t.ht()
t.mainloop()

粤ICP备11092478号