作者:亿只小花
亿只小花
covers
内容简介:第一次做教程
2023/12/10 13:37

scratch教程——三角函数

我最近发现bcdou大部分用户编程技术不怎么样,所以决定推出一系列教程,以提升作品质量。
提示:此教程的对象是会用(知道每个模块是干什么的)且可以熟练使用(知道它的特点以及用途)大部分模块的人,所以如果你不会用scratch,那么请在B站上找个教程
如果你认为这玩意你早会了那么请提出建议或者是

那么,

就让我们开始这个教程。

第一部分:数学


我们首先来复习一下小学3年级学过的直角三角形

↑差不多就长这样,那么,现在我们给它赋予几个新名词:
θ:读作theta,一个变量,决定三角形的形状
邻边:与∠A较近的一条直角边(构成直角的边)
斜边:最长的一条边,不是直角边
对边与角A相对的一条直角边
当然,三角形不一定长这样,对边、斜边和邻边的位置取决于θ的位置

之后呢,我们就来讲一下六个函数:

没事,慢慢消化。
好吧我来讲一下。
sin(θ)是在θ下A的对边除以斜边的值,就是a:c。读作/saɪn/而不是/sɪn/(sine是正弦,sin是罪恶的意思,也是sine的缩写)

cos(θ)就是邻边除以斜边的值,就是b:c,读作/ˈkəʊsaɪn/,就是con-sine

而tan(tangent, /ˈtændʒənt/)则是对边除以邻边; cot(cotangent,同上)正好是反过来,邻边除以对边。

后面的两个:sec和csc不常用,

sec是cos的倒数,csc是sin的倒数,差不多就这样。

当然,我们这边找到了一个速记方法:
  • 对角相乘乘积为1(sin(θ)*csc(θ) = 1)
  • 六边形任意相邻的三个顶点代表的三角函数,处于中间位置的函数值等于与它相邻两个函数值的乘积
  • 阴影部分的三角形,处于上方两个顶点的平方之和等于下顶点的平方值

懂了吗?

懂了的话我们来讲Scratch。

第二部分:scratch应用


scratch里面有这个:

但你知道吗还有这些:

我们这里可以看到sin cos tan

还有asin acos atan

这是什么呢?
是它们的逆运算
像这样:
如sin(x) = y, 则asin(y) = x
如cos(x) = y, 则acos(y) = x
如tan(x) = y, 则atan(y) = x
懂?

好的我们现在开始实践

最简单的,就是非线性移动了
这是因为三角函数是的:
我们用scratch模拟一下轨迹:
发现轨迹是这样的:
所以,当我们想做非线性移动时,就可以截取一部分,来实现丝滑的运动:
(sin和cos组合可以画圆)

接下来,我们来编两个复杂一点的东西:

1:

我们平时一般都用来实现这种功能。
但是,这种方法太逊了。如果你的角色想要边走边旋转,那么程序就报废了,如果角色想要用角度当作ID的话,那这玩意也不能用。所以,我们就需要一种不用面向的方法。
回忆一下我们刚刚讲的三角函数,你可能会发现一件很奇妙的事情:
面向θ走c步长这样↑

看出点什么了没?
这其实就是将y增加θ的邻边(b),并且将x增加θ的对边(a)!
那怎么求a和b呢?很简单,只需要按公式来就好了:

已知数是c和θ,那么将sin和cos的值*c就可以得到a和b了!
将它变成scratch代码是这样的:
代码效果一样,区别就是上面那个在1帧之内可以云心而下面的需要两帧。
懂了吗?好的下一个

2:

这个我们还是用这张图:
看一下,我们这里是已知a和b,求θ,这个时候就会用到逆运算了。

但愿你知道a和b怎么求 再讲一遍asin,acos和atan: asin(a/c)=acos(b/c)=atan(a/b)=θ

那很明显呢我们知道a/b所以就要用到atan来求θ:

那么程序整合起来就是这样的:

等等,应该是这样的:


好的那么教程就到这里,希望大家可以听懂(吧)

---THE END OF TUTORIAL---

评论区

登录之后才能评论Scratch作品哦
北柠Tracy4 个月前

可以再介绍得深入一点吗qwq

亿只小花4 个月前
@北柠Tracy

彳亍,等考完试寒假我再做吧(悲)

亿只小花4 个月前
@北柠Tracy

我找不到更多Scratch应用了,有建议吗

圆周率3144 个月前

这绘图绘的……

圆周率3144 个月前
亿只小花4 个月前
@圆周率314

画图软件鼠标绘制P

cwa5 个月前

求theta的时候还要判断一下y值因为四个象限里面比值为正/负的情况都有2个

亿只小花5 个月前
@cwa

哦对我忘了,没事都为正就没区别:P

dsfsfsfsf5 个月前

https://bcdou.cn/works/content/1/657420c588047c185c5850b4求求看一看吧

cwa5 个月前
@dsfsfsfsf

乐于分享の片哥

亿只小花5 个月前
@cwa

欸被删了