在平面直角坐标系xoy,高一数学解析几何

  • 日期:2019-10-14 11:56
  • 来源: 未知
  • 浏览:
  • 字体:[ ]

 

我们这次的任务是在XOY平面上建立两个直角坐标,然后通过坐标转换,得知坐标系1中的一点在坐标系2中的坐标,如下图所示。
第一步,我们需要输入一些必要的模块,主要用于数学或线性代数的计算,代码如下:
1
第二步,我们需要在程序的提示下建立两个XOY平面上的直角坐标系,具体定义过程如下:
1)输入第一个直角坐标系的坐标原点O:
2)输入第一个直角坐标系X轴正向上一点:
3)输入第一个直角坐标系Y轴正向上一点:
4)输入第二个直角坐标系的坐标原点O':
5)输入第二个直角坐标系X'轴正向上一点:
6)输入第二个直角坐标系Y'轴正向上一点:
7)输入坐标系一中的一个点的坐标:
2
在这个过程中,有几个重点知识点需要我们掌握:
1、我们希望输入点的坐标是a,b格式,其中a代表该点的x坐标,b代表该点的y坐标,那么程序必须能够将输入的字符格式的坐标提取出来,转化成数值,并且能够自动识别逗号,将两个坐标值分开,代码如下:
ipt=input('请您输入坐标系1的坐标原点a,b,以逗号隔开:')
dataO = ipt.split(',')
dataO =np.array([int(x) for x in dataO])
只需要将上述代码重复6次,并定义不同的变量名,即可完成所有点的输入,剩余代码如下:
ipt=input('请您输入坐标系1X轴正向上一点a,b,以逗号隔开:')
datax = ipt.split(',')
datax =np.array([int(x) for x in datax])
ipt=input('请您输入坐标系1Y轴正向上一点a,b,以逗号隔开:')
datay = ipt.split(',')
datay = np.array([int(x) for x in datay])
ipt=input('请您输入坐标系2的坐标原点a,b,以逗号隔开:')
data1O = ipt.split(',')
data1O = np.array([int(x) for x in data1O])
ipt=input('请您输入坐标系2X轴正向上一点a,b,以逗号隔开:')
data1x = ipt.split(',')
data1x = np.array([int(x) for x in data1x])
ipt=input('请您输入坐标系2Y轴正向上一点a,b,以逗号隔开:')
data1y = ipt.split(',')
data1y = np.array([int(x) for x in data1y])
ipt=input('请您输入坐标系1上一点a,b,以逗号隔开:')
point = ipt.split(',')
point = np.array([int(x) for x in point])
2、我们需要知道坐标系2相对于坐标系1是逆时针旋转还是顺时针旋转,因为这涉及到旋转角度的正负号问题,一般认为逆时针旋转为正,顺时针旋转为负。那怎么判断呢?有如下的经验可以借鉴:
假设矢量A=(x1,y1),矢量B=(x2,y2),那么如果x1*y2-y1*x2<0,则矢量A在矢量B的逆时针方向。
因此,我们可以利用两个坐标系的x轴,根据上述经验来判断坐标系2相对于坐标系1的旋转方向,代码如下:
#计算出坐标系2原点相对于坐标系1原点的变化量
delt=data1O-dataO
#计算坐标系1X轴的矢量
vectorax=datax[0]-dataO[0]
vectoray=datax[1]-dataO[1]
#计算坐标系2X轴的矢量
vectorbx=data1x[0]-data1O[0]
vectorby=data1x[1]-data1O[1]
#判断旋转方向
direction=vectorax*vectorby-vectoray*vectorbx
 

    关于我们 广告合作 版权声明意见建议 RSS订阅 TAG标签网站地图

    COPYRIGHT 2009 - 2020 自学习网

    本站部分内容摘自网络,若您的文章不愿被本站摘录,请及时通知我们。