GeoGebra必学必用经验

GeoGebra(官网 https://geogebra.org/ , 音译: 几何不难)是一款开源跨平台的非商用免费软件, 一定要注意商用无价, 当心被坑. GeoGebra有三个版本, 分别是版本5, 版本6和网页版, 点我查看三者的区别.

离线多页模板下载地址 https://kz16.top/ggbppt.7z

相关链接

强烈推荐好用的网页版多页模板ggbppt: https://kz16.top/geogebra/ggbppt.html

数学绘图是一种可以复制的艺术
数学功底决定绘图造诣

1. 必用操作

1.1. 导入ggb文件

1.2. 保存ggb文件

1.3. 下载官网ggb课件

1.4. 导入图片

1.5. 导出透明svg矢量图

1.6. 提取ggb中被插入的图片

2. 必学技巧

2.1. 常用小技巧

2.2. 循环与求和

更多循环相关信息, 请点这里

2.2.1. 序列循环zip

2.2.2. 迭代Iteration

2.2.3. 序列求和Sum

要注意:

zip括号中的1..6是用两点隔开的
Sum括号中的1,6是用逗号隔开的

2.3. 判断

例如绘制分段函数
f(x)=if(x<0,-1,x<1,x,1)

此外可能偶尔用到keepif以及countif

如果想绘制椭圆的一部分图像, 推荐用参数方程作为判断, 而不是对隐函数做判断, 因为GeoGebra的隐函数功能很弱, 例如绘制椭圆的第一象限:
curve((2cos(t), sin(t)),t,0,pi/2)

2.4. 列表

列表从某种意义上可以被认为是集合或多维向量, 列表中可以有数也可以有其它对象, 例如点, 线, 多边形等, 同数学中的集合一样, 用{}把元素括起来. 常用的指令及相关技巧有:

其它一些操作, 列表可以当成某个特殊的, 例如

2.5. 向量与点

向量和点在某种意义下可以认为是同一个类对象, 都可做向量的基本加减和数乘运算, 稍微有点区别的是, 向量会有个箭头, 并且一般默认用小写字母表示向量, 大写字母表示点

2.6. 复数

复数的基本表示方法和数学没什么区别, 例如
Z=1+3i
它的一个很大的作用是, 把某个对象乘以复数, 等于是做旋转和伸缩变换, 例如, 若A=(1,2), 则i*AA*i结果为-2+i

这样使得代码变得简洁, 当然可能不利于新手阅读代码

2.7. 插入特殊的标记对象

例如插入一个花括号, 把两个自由的点括起来

如果使用频率高, 可以把上面的步奏做成工具

2.8. 参数方程

总得来说分成三类: 圆弧, 折线和一般曲线

2.8.1. 圆弧的参数方程

求圆弧ABC, 的参数方程

A=(0,0)
B=(1,0)
C=(0,1)
Q=center(circle(A,B,C))
r=abs(Q-A)
t1=angle(A-Q)
d=cross(A-C,B-C)
t3=if(d>0,angle(A,Q,C),angle(C,Q,A))
c=curve(Q+(r;t1+t3*t*sgn(d)),t,0,1)

这里需要设置角度的范围为0-360, 因此推荐用本文提供的模板, 无需自行设置, 并且做成了工具, 工具名为arct
https://kz16.top/geogebra/ggbppt.html
输入的是圆弧上的三个点, 例如arct(A,B,C)

2.8.2. 折线参数方程

Lp = {(0,1),(2,1),(1,3)}
n = length(Lp)-1
f(x)=Function(join({0,n},x(Lp)))
h(x)=Function(join({0,n},y(Lp)))
a = curve(f(t*n),h(t*n),t,0,1)

对于一般线段AB的参数方程可以为
curve(A(1-t)+B*t,t,0,1)

在模板 https://kz16.top/geogebra/ggbppt.html
工具polyt可以得到归一化参数方程, 也就是参数范围为[0,1], 工具polys得到弧长参数. 两个工具的输入参数都是点列, 例如 polyt({(0,1),(2,1),(1,3)})

折线参数方程数学理论可参考:
https://kz16.top/geogebra/polyarc.html

2.8.3. 一般曲线参数方程

Lp = {(0,1),(2,1),(1,3)}
spline(Lp)

一般的参数方程, 推荐用样条插值, 多项式拟合可以选择FitPoly, 或者直接自行选择基函数再用fit函数拟合

2.9. 区域涂色

本质上是一个确定区域的数学题, 因此主要可以有这么几种方法

这里主要讲万能的参数方程法处理对于一般的带有曲边和直边的区域涂色

给定一个区域, 和区域边界上任意的几个点A,B,C,D,E,F,G, 满足
ABC是曲线段
CD是线段
DEF是曲线段
FGA是线段
则该区域的涂色可以用如下GeoGebra代码绘制:

a = spline({A,B,C})
b = curve(C(1-t)+D*t,t,0,1)
c = spline({D,E,F})
d = curve(F(1-t)+G*t,t,0,1)
f = curve(if(t<1,a(t),t<2,b(t-1),t<3,c(t-2),d(t-3)),t,0,4)
SetDynamicColor(f,0,0,1,0.3)

上面的方法用到了样条插值, 逼近效果是很不错的, 通常情况下可以处理几乎所有的区域涂色, 对于圆弧段曲线, 可以自行写出相应的参数方程. 相关参数方程的求法可回顾之前介绍的参数方程

参数方程着色稍微麻烦的地方就是合并参数方程

例如: 合并2个归一化的参数方程a与b可以表示为
Curve(if(t<0.5,a(2*t),b(2*t-1)),t,0,1)

2.10. 模糊的png数学图转svg矢量图

实现这一步需要用到前面的经验和技巧

3. 动态交互

有了前面的知识, 应该可以绘制绝大部分的静态图

对于动态交互图,

用得最多的是滑条Slider 其次是复选框和按钮(其实多数情况下复选框比按钮实用, 甚至可完全按钮). 因此只需知道滑条和复选框的使用方法

3.1. 滑动条

创建滑动条

k=Slider(0,1,0.01)

没必要手动点, 直接输入代码就好, 这里有3个参数, 前两个是范围, 最后一个是增量, 不必担心记不住Slider这个单词, 输入前面两个单词就会有提示的, 而且多输入几次就记住了. 不推荐中文名字, 因为切换输入法太慢了

有了滑条可以绘制含参函数, 例如
f(x) = k*x^2

也可以做动点, 例如, 用滑条控制点做圆周运动

k=Slider(0,2pi,0.01)
A=(1;k)

也可以控制三角形做旋转或平移运动

k=Slider(0,2pi,0.01)
t1 = {polygon((0,0),(1,0),(0,1))}
rotate(t1, k)
translate(t1, (k,0))

上面的代码, 把polygon((0,0),(1,0),(0,1)){}括起来是为了把它变成列表, 这样就不会出现额外的边对象

3.2. 复选框

如何通过按钮实现停止和启动滑动条? 可用复选框轻松搞定

3.3. 一次性导入多行的代码

代码太多, 一行行输入着实麻烦, 一次性导入多行代码其实也很简单

其实第一步也可以创建一个点或按钮, 不一定非要复选框

3.4. 导出动态图以及PPT展示

可以选择用gif或mp4录屏软件, 其实它的作用主要用于网络交流

对于非正式演示, 可以直接拿出ggb展示, 如果是多个ggb文件, 直接用网页版多页模板 https://kz16.top/geogebra/ggbppt.html 即可

如果是正式场合, 推荐导出多张svg矢量图帧, 实现动态变化, 那么这里涉及两个问题:

对于上面提到的第一个问题, 用网页版多页模板 https://kz16.top/geogebra/ggbppt.html 就比较简单了, 只需每变动一步, 点击页面最上方的克隆按钮, 然后就可以鼠标左键点边框外的空白处, 按上下方向键翻页, 预览效果, 最后通过指令, ExportImage("filename","image.svg","type","svg")可以逐个页面快速导出svg矢量图

这种做PPT动态图的方法, 确实有点麻烦, 但是效果是真的好, 为了效果, 正式场合耗费时间也是值得的

4. 交流分享

做好了动态ggb图, 希望可以保存在云端, 然后通过链接分享给别人, 或者只是自己私密保存, 这个其实非常简单, 以本文的网页版多页模板为例

当然也可以直接在页面 https://kz16.top/geogebra/ggbppt.html 上, 点击导出在线, 会得到一个html文件, 然后可以把这个html文件分享给他人, 对方可以直接用浏览器打开


主页地址 https://kz16.top/geogebra

欢迎非商业转载,转载请指明来源,
本文来源 https://kz16.top/geogebra/ggbpptReadMe.html