这我写的一个Python程序
第一个图片设置初速度和初抛射角的,采用极坐标系法,本来是尝试了若干个角度和初速度,但不方便发视频
第二个图片程序的窗口标题显示的是当前时间和指针飞行的速度
第三个图片写了一个用键盘操控指针飞行,方法是按下方向键就给指针在这个方向上的动力,这个动力将会促使指针飞起来,标题的F是加速度在两坐标轴方向上的分解,以及Time后面是模拟时间
原理:定义了一个类Vector,Vector里有两个值,一个是大小,一个是方向(极坐标系),然后自学了一点力在直角坐标系上的分解,把动量分解为x方向和y方向的速度,重力加速度和动力(这里默认指针1kg,则动力造成的加速度a=F/m=F/1kg,数值上不变)都分解为x方向和y方向,然后直接加起来,加起来得到的(x,y)数组,为了把数组还原为向量,用反三角函数arctan,这样角度就是arctan(y/x),大小就是√(x²+y²)(这里头arctan会搞出来负的,为了适应极坐标系,要在x<0时把arctan值再加一个π,然后再与2π求余(这样就会避免大于360°的角出现))
这个斜抛其实是一段一段算的,因为精确的轨迹要微分,所以我分成了每0.0x秒刷新一次,所有的加速度都会乘上这个0.0x秒才会变成要加的速度
第一个图片设置初速度和初抛射角的,采用极坐标系法,本来是尝试了若干个角度和初速度,但不方便发视频
第二个图片程序的窗口标题显示的是当前时间和指针飞行的速度
第三个图片写了一个用键盘操控指针飞行,方法是按下方向键就给指针在这个方向上的动力,这个动力将会促使指针飞起来,标题的F是加速度在两坐标轴方向上的分解,以及Time后面是模拟时间
原理:定义了一个类Vector,Vector里有两个值,一个是大小,一个是方向(极坐标系),然后自学了一点力在直角坐标系上的分解,把动量分解为x方向和y方向的速度,重力加速度和动力(这里默认指针1kg,则动力造成的加速度a=F/m=F/1kg,数值上不变)都分解为x方向和y方向,然后直接加起来,加起来得到的(x,y)数组,为了把数组还原为向量,用反三角函数arctan,这样角度就是arctan(y/x),大小就是√(x²+y²)(这里头arctan会搞出来负的,为了适应极坐标系,要在x<0时把arctan值再加一个π,然后再与2π求余(这样就会避免大于360°的角出现))
这个斜抛其实是一段一段算的,因为精确的轨迹要微分,所以我分成了每0.0x秒刷新一次,所有的加速度都会乘上这个0.0x秒才会变成要加的速度