1:二维平面向量与向量 及 向量与标量的运算
向量可进行加、减、乘、除:
- 向量的加法add:向量+向量
- 向量的减法sub:向量-向量
- 向量的乘法mult:向量*标量
- 向量的除法div:向量/标量
- 学习心得体会:
- 1: 标量就是一个数字,只有大小,无方向。
- 2: 向量既有大写,还有方向。
- 3: 向量:有方向的线段。箭头代表方向,线段长度代表向量的大小或者长度。
- 4: 向量在形式上,可以是一个坐标(x,y)点,代表原点(0,0)沿着x轴走了x步,又沿着y轴走了y步,最后到达(x,y)点。
- 5: 向量与向量或者与标量运算后,结果是一个向量。
- 6: 向量没有特定的起始位置。只要方向和长度不变,就可以移动它并使其在任何位置开始,它仍然是相同的向量。
- 7: 向量的长度是标量,这意味着它是常规数字,而不是向量或点。
向量还有结合律、分配律:
- 结合律:(标量1*标量2)*向量=标量1*(标量2*向量)
- 分配律:(标量1+标量2)*向量=标量1*向量+标量2*向量
- 分配律:(向量1+向量2)*向量=向量1*向量+向量2*向量
- 学习心得体会:
- 1: 向量大小就是向量的长度,以像素为单位。在p5.js中,通过mag()获取。实际就是通过勾股定理由x,y,推出斜边的长度。
- 2 :标准化某个向量,就是保持该向量方向不变,将其长度变为1,即变为单位向量(1个像素)。在p5.js中,通过normalize()获取。由于一个像素在屏幕上太小了,为了能看见,一般要进行倍数的放大。
- 3: 简单化理解,向量是直角三角形的斜边。标准化向量,就是对原三角形进行缩小或者放大得到一个相似三角形。原三角形每条边都除以向量的大小,所得到的相似三角形的斜边就是单位向量。
以上是理论,下面结合在画布上画图来加深对向量的理解
2:向量与小球的运动(采用匀速度)
向量与运动结合起来,学起来有滋有味:
- 画布上的小球有一个位置和速度
- 位置和速度 都是向量
- 位置加上速度,就可以改变小球的位置
3:向量与汽车的运动(采用加速度)
效果:按住键盘向右箭头,汽车向右移动;左箭头,刹车。
操作使用说明:
- 一开始小车是静止的,右键加速,左键刹车
- 按住键盘右键不放,加速度会越来越大。
- 按住键盘左键不放,直至小车停止。
- 程序对小车的最大速度做了限制。
- 松开右键后,加速度不会继续增加会立即变为0。所以汽车不会继续加速,只会保持当前速度。
- 此程序暂时没有考虑摩擦力的因素。因为俺不会。哈哈。
状态变化解释如下:
- 初始状态:
- 加速度: (0, 0)
- 速度: (0, 0)
- 位置: 初始位置
- 第一次按下右方向键:
- 加速度: (0.1, 0)
- 速度每帧增加 0.1,例如在一帧之后速度变为 (0.1, 0)
- 第一次松开右方向键:
- 加速度: (0, 0)
- 速度保持当前值 (0.1, 0)
- 第二次按下右方向键:
- 加速度: (0.1, 0)
- 速度再次增加,例如在一帧之后速度变为 (0.2, 0)
- 第二次松开右方向键:
- 加速度: (0, 0)
- 速度保持当前值 (0.2, 0)
- 学习心得体会:
- 当前速度=初始速度+加速度
- 使用左右键,可连续改变当前速度
- 汽车的当前位置=初始位置+当前速度
- 本程序中 加速度设为(0.1,0),减速度设为(-0.1,0)
- 可见,加减速度都是固定的,只有当前速度可以一直在变化。
4:向量与用鼠标控制的小球(也采用了加速度)
效果:鼠标指哪小球就跟到哪。但到达目标时不会停止。超出画布边界后,从另一端出现。
程序思路:
- 计算从小球指向目标位置(鼠标)的向量。
- 标准化该向量(将其长度减小到1)。
- 将该向量缩放到适当的值(通过将其乘以某个值)。
- 将该向量赋值给加速度。
学习心得体会:
- 为什么小球到达目的地后,不会停止?
- 是因为,小球闷头赶路,直奔目的地,不可避免会越过目的地后,又转向奔向目的地。
- 如何让小球到达目的地后停止呢?下节再讨论
5:(加速度的大小)与距离成反比。
效果:鼠标指哪 多个小球 就会直奔过来,越靠近鼠标位置,加速越快,不会停止。
程序思路:
- 计算从小球指向目标位置(鼠标)的向量。
- 标准化该向量(将其长度减小到1)。
- 将该向量缩放到适当的值(通过将其乘以某个值)。
- 将该向量赋值给加速度。
学习心得体会:
- 为什么小球到达目的地后,不会停止?
- 是因为,小球闷头赶路,直奔目的地,不可避免会越过目的地后,又转向奔向目的地。
- 如何让小球到达目的地后停止呢?再讨论
6: 力是矢量(向量)和牛顿运动三规律
效果:还没写
牛顿第一定律:
- 静止物体静止不动,运动中的物体保持恒定的速度和方向,除非受到不平衡的力的作用。
- 解读,也就是说,运动的物体不需要任何力,就会一直运动下去。
- 解读,没有任何力的情况下,或者如果作用在物体上的力相互抵消,即净力加起来为零,物体的速度才会保持不变。这通常被称为 平衡状态。
- 解读,在p5.js中,如果物体处于平衡状态,其PVector向量速度保持不变
牛顿第二定律:
- 力等于质量乘以加速度。F=MA (F力,M质量,A加速度,其中F和A 都是向量,M是标量)
- 解读,A=F/M 加速度与力成正比,与质量成反比。
- 解读,如果你被推,你被推得越用力,你就会移动得越快(加速)。你越大,移动的速度就越慢。
- 前面说的力 等于质量乘以加速度,其实更准确的说法是 净力 等于质量乘以加速度。
- 或者说成 加速度等于 所有力的和 除以质量
- 牛顿第一定律中, 如果所有的力加起来都是零, 一个物体就会经历一个平衡状态 (即没有加速度)。我们通过一个被称为 力的累计积累的过程来实现这一点
- 将每个新力添加到加速度中,并将它们积累,或者说在任何给定时刻将所有力相加
重量(重力)与质量的区别:
- 物体的 质量 是对物体中物质量(以公斤为单位)的度量
- 解读,重量,虽然经常被误认为质量,实际上它就是物体所受的重力。从牛顿的第二定律F=MA,可得出重量=质量乘以重力加速度 (w = m * g )
- 解读,密度是单位体积的质量的量(例如,克/立方厘米)。
- 解读,地球上质量为一公斤的物体在月球上的质量仍是一公斤。不过, 它的重量只有六分之一。
牛顿第三定律:
- 力总是成对发生。这两种力量的强度相等,但方向相反。
- 解读,每一个作用力,都有一个等大和相反的反作用力。被称为 "作用力和反作用力"。
本题任务:
- 在屏幕上创建一个响应风和重力的移动对象。
程序思路:
- 在电脑屏幕上,物体的质量由n个像素组成,假设所有的物体都只有一个质量,那就是1
- 此时,F=MA => F=1*A=A,也就是物体的加速度等于力
- 此时,我豁然开朗,在前面的运动部分看到,加速度是控制对象在屏幕上运动的关键。位置由速度调整,速度由加速度调整。加速是这一切开始的地方。现在我们了解到,力 才是一切真正开始的地方。
- 牛顿第一定律中, 如果所有的力加起来都是零, 一个物体就会经历一个平衡状态 (即没有加速度)。我们通过一个被称为 力的累计积累的过程来实现这一点
- 将每个新力添加到加速度中,并将它们积累,或者说在任何给定时刻将所有力相加
学习心得体会:
- 牛顿运动规律 的概念:力是导致有质量的物体加速的矢量
- 牛顿之前,亚里士多德说:如果一个物体在移动,需要某种力量来保持它的移动,没有了力,就会停止。
- 是牛顿推翻了亚里士多德的说法。
7: 多个对象的运动
效果:
8: 重力、空气和流体阻力,基础来自摩擦力
效果:
学习心得体会:
- 一个物体通过液体或者气体时,也会发生摩擦,产生的摩擦力也叫做阻力
-
其阻力的计算公式:\( F_{d} =-\frac{1}{2} \rho v^{2} A C_{d} \hat{v} \)
- \(F_{d}\):是阻力
- \( -\frac{1}{2} \):是一个常数(说明,这个常数,在程序中无关紧要)
- \(\rho\):是液体的密度(说明,为了编程需要,简化为常数1)
- \(v^{2}\):v是物体移动的速度。物体的速度是速度向量的大小velocity.mag()
- \(A\):是物体推动液体(或气体)的正面的面积(说明,为了编程需要,忽略这个因素)
- \(C_{d}\):是阻力系数,和摩擦力系数(μ)完全一样。这是个根据我们想要强阻力还是弱阻力来决定的常数。
- \(\hat{v}\):是速度的单位向量,也就是velocity.normalize()。就像摩擦力一样,阻力是作用在速度的反方向的力。
- 解读,为了能在电脑上模拟出阻力的效果,对公式做了简化,阻力=力的大小*方向
9:万有引力
每一个有质量的物体都会对其他物体施加引力。意思是小球被大球吸引同时,大球也被小球吸引。
公式:\(F=\frac{Gm_{1}m_{2}}{r^{2}} \hat{r} \)
- F:引力
- G:万有引力常量。为了方便编程,让这个常数为1或者忽略它。
- \(m_{1}\)和\(m_{2}\):物体1和物体2的质量。对于电脑屏幕上画的物体而言,并没有实际的质量。
- \(r^{2}\):表示两个物体之间距离的平方。
- \(\hat{r} \):方向的单位向量。此向量等于物体1和物体2 两点之间的差,然后再进行归一化。
- 程序中物体1 对物体2 施加的引力方向为:var dir = PVector.sub(location1, location2)
- 归一化为单位向量:dir.normalize()
11:两种角度模式:度数(degrees)和弧度(radians
弧度:是以圆弧长度与圆半径之比定义的角度的度量单位。一个弧度是当这个比等于一时的角度。
- 180度 = PI 弧度,360 度 = 2*PI 弧度,90 度 = PI/2 弧度
- 绘图库(如 p5.js),所有涉及角度的函数都会使用弧度制。
12:坐标:笛卡尔坐标 与 极坐标
两者之间可互转,目前先研究二维平面上的互转,至于三维以后再说。
- 笛卡尔坐标:平面上的一个点(或者说屏幕上的一个像素位置), 用(x,y)来表示。
- 极坐标:空间中的一个点描述为围绕原点和原点半径的旋转角度,用 (r, θ) 来表示。也就是向量的大小(长度)和方向(角度)
- 对于二维平面而言,极坐标 转化 笛卡尔坐标:
-
x = r * cos(角度θ)
- y = r * sin(角度θ)
- 注意,程序中,使用三角函数时候,参数中的角度用的都是弧度,所以要把度数转为弧度。再使用。
应用实战
-
这一类的转换在某些应用中很有用。例如,用笛卡尔坐标沿着圆形路径移动一个图像并不容易。而用极坐标就很简单:增加角度!
13:振荡振幅和周期
振荡是指物体在一个平衡位置周围来回运动的现象。这种运动通常是周期性的,也就是说它在固定的时间间隔内重复。
正弦函数的输出是一个在–1和 1之间交替的平滑曲线。这种类型的行为被称为 振荡,这是两点之间的周期性运动。
振荡的基本概念:
- 1 平衡位置:振荡物体静止时的位置。在平衡位置上,物体的净力或净能量为零。
- 2 振幅(A):从平衡位置到最大位移的距离。它表示振荡的最大程度。
- 3 周期(T):完成一个完整振荡所需的时间。一个周期包括从一个位置开始、到达最大位移、回到平衡位置、到达相反方向的最大位移、再回到初始位置的过程。
- 4 频率 (f):单位时间内完成的振荡次数,通常以赫兹 (Hz) 为单位。频率与周期的关系为:\(f=\frac{1}{T} \)
- 5 角频率 (ω):角频率是每秒钟经过的弧度数。它与频率的关系为:\(ω=2πf=\frac{2π}{T} \)
- 6 相位 (φ):描述振荡在特定时间点上的状态。相位角通常以弧度或度数表示。
振荡的类型:
-
1 简谐振荡:最简单的振荡形式,通常由弹簧系统或钟摆来描述。其运动可以用正弦或余弦函数描述:
- x(t)=Acos(ωt+ϕ)
- 或者 x(t)=Asin(ωt+ϕ)
-
2 阻尼振荡:在简谐振荡的基础上,考虑到摩擦力或阻力的影响。振幅会随着时间逐渐减小,最终停止振荡。
-
3 受迫振荡:在外力的驱动下,系统持续振荡。外力的频率可以影响系统的振荡频率和振幅。
振荡的实例:
-
1 钟摆:当钟摆从平衡位置被拉开并释放时,它在重力作用下来回摆动。其运动是简谐振荡的一个例子。
-
2 弹簧系统:当一个质量块被连接到弹簧并被拉开或压缩时,它在弹力作用下振荡。其运动可以用胡克定律和牛顿第二定律描述。
-
3 电路中的振荡:在LC电路(电感和电容)中,电流和电压会周期性地变化,形成电振荡。这在无线电波的产生和接收中非常重要。
应用案例实战:
-
此案例属于简谐振荡:有一个圆圈从画布的左侧振荡到右侧。
14:波
在屏幕上绘制一个波浪
应用实战
15:三角函数的学习
从直角三角形到任意三角形
直角三角形
- \(sin\theta =\frac{b}{c} \)
- \(cos\theta =\frac{a}{c} \)
- \(tan\theta =\frac{sin\theta}{cos\theta} =\frac{\frac{b}{c} }{\frac{a}{c} } =\frac{b}{c} \)
- 毕达哥拉斯定理:\(c^{2} =a^{2}+b^{2} \)
- 单位圆中三角恒等式:\(cos^{2} \theta +sin^{2}\theta =1\)
任意三角形
- 余弦定理:\(c^{2}=a^{2}+b^{2}-2ab cos\gamma\)
- 正弦定理:\(\frac{sin\alpha }{a} =\frac{sin\beta}{b} =\frac{sin\gamma }{c} \)
应用实战
END