@一生二,二生三,三生万物——八荒启
@TOC
一. 🚀 引言
1. 背景
如果说GeoGebra你不知道从哪儿学起,那就开始玩儿工具吧,从“点”开始。点在GeoGebra是一个灵魂,就像我们小学的时候学习步骤一样,先学点、然后是线、最后是面,进而是体。那么理所应当,我们先从点开始(采用GeoGebra6制作,对新手友好)。
| 文章路径 | 公众号:八荒启-交互动画 / 创作中心 / 系列教程 / Geogebra从入门到编程全集 / 基础篇 |
|---|---|
| 作者 | 酷酷的脸脸 |
| 所属平台 | 八荒启教育 |
| 更新日期 | 2025.8.28 |
| 资源下载 | 文章配套文件包,公众号内回复“GGB004”(注意不要换行) |
2. 场景
八荒启专精于制作交互动画,比如GGB、Canvas、H5、Unity,本套GGB系列文章主要是以交互动画为大背景,逐步展开具体知识点的讲解。
二、🛠️GeoGebra工具系列_点(Point)
关于点的官方文档:geogebra.github.io/docs/manual…
1. 点的基本操作
打开工具栏后,看到的Point就是点工具,点击之后,屏幕这里会提示已经激活:
鼠标在右边随便点就可以了,取消激活就按一下Esc,然后可以移动画布,或者进行其他操作。
(1)自由点(Free Point)
在Geogebra的视图里讲过了对象,有自由对象,还有依赖对象,当时就是用点举例子。下边的动图中,A是自由点,B是依附点。拖动A,B可以跟着移动。
通过工具在画布上点击创建的点,就是自由点。 自由点的特点:独立、不依附于其他对象 从底层来讲:自由点的父类就是自由对象,因此就继承了父类自由对象的全部属性。
(2)依附点(Dependent Point)
在不同的版本中,Dependent Point的中文翻译并不相同,有时候叫附着点,有时候叫依赖点,但无论怎么叫,核心都是一个:“这种点位置并不是完全自由的,而是“依附”在某个对象上,比如一条直线、一个线段、一个圆或一个多边形的边”。
这里我举一个点依附于线段的例子:
A=$point(-10.63,4.48)
B=$point(-1.29,4.34)
f=Segment(A,B)
C=Point(f)
依附点的作用非常大,可以说是承担了GeoGebra交互动画的半壁江山。后续会讲到 Point 指令的参数,这里先简单了解一下,看不懂没关系,后续中阶内容会讲到:
Point(f,滑动条)
这样就可以用滑动条控制点在这个线段上的位置,十分方便。当然依附点不仅限于直线,对于曲线、几何图形等都是可以的。(注意,依附点无法绑定在无限延长的直线上,最好选择封闭曲线或线段)
理解依附点的实现方式,可以很轻松的完成一些简单几何动画,这对初学者来说非常鼓舞士气!
(4)输入方式
打开代数区,我们直接按照数学中点的标记方式输入就可以:
但是注意这里有些细节:
【1】GeoGebra对大小写严格,务必注意
如果我们要写点的变量名,一定用大写,因为小写a是矩阵(向量):
【2】直接写(2,2)系统会默认补充一个变量名
输入(2,2)后按下回车系统会默认配上标签为B
【3】从已有的点上进行创建(后续对于复杂的公式,这招非常好用)
点击代数区指令后边的三个点,可以出现复制输入,点击后会把当前的代数式复制一份,然后就可以在里边重新输入了。
(5)点的选择
前面在【基础篇】别着急开工!了解GeoGebra 界面就是了解你的地图里讲到了如何进行对象的选择,我们这里就再具体一些,如果对点进行选择。
【1】选择工具法
可以使用移动工具,刚才点了“点”工具,现在再点一下“移动”工具就可以了去选择点了,也就是这个:
这种方式非常麻烦,一方面需要一个个点击刚才绘制的点,另一方面,当你正在绘制其他图形需要选择其他对象(比如点)时,必须停止绘制,回来选择这个移动工具后才能选择对象。
【2】框选工具法
框选很高级,一网打尽,直接点击这个工具,然后框选就可以了。
【3】利用代数式选择
切换到代数区里边,就可以选择需要的点,我比较喜欢这种方式。注意:可以按下Shift进行加选(不要点中那个小圆圈,那个是隐藏/显示开关)
【4】右键框选发
如果正在绘图,可以使用右键框选的方式进行选择,很便捷,这种方式不仅对点的选择有用,对后续学的其他对象都起作用。这种方式非常常用,可以在其他工具激活的情况下,继续框选,真正实现了选择操作两不误
直接右键鼠标按住不要松然后框选,就可以了
2. 点的其他相关操作
(1)点的更新
可以在代数式上重新输入就可以了,或者双击点,可以出现这个弹窗,在这里更新。
或者在右侧属性栏更新(Ctrl + E可以快速打开,随着版本更新,快捷键可能会失效):
删除的话只要选中点,按下键盘Delete就可以了,选中代数区里的对象也可以这么操作。
(2)点的删除
只要可以选中就可以删除,无论是在操作界面选中还是在代数式中选中都是一样的效果,直接按下Delete就可以。
(3)点的隐藏与显示(所有对象都通用)
在代数式前面有一个小点,如下图,如果你已经误触了或许已经发现了效果,那就是将对象隐藏/显示(有颜色的是显示)。
(4)画布的移动(所有界面都通用)
按下鼠标中间不要松,左右推动,画布就跟着移动了。在工具没有激活的情况下,也可以鼠标左键按住拖动。
(5)点的属性栏
所有对象都有属性栏,右键点击设置可以看到。
(6)保留多少位小数和中英文切换的问题
经常发现自己点的小数位后……不知道多少位去了,在这里设置:
(7)一些常用的属性
这些属性和它的名字一样简单,可以点一点试一试,scripting是后续写脚本的位置,留意一下这个地方。
(8)一些常用的操作
如果Ctrl + E快捷键冲突了还有没有办法打开属性栏?这里有三个点,点击setting就可以
或者操作界面选择图形,点击setting就可以
3. 点的进阶玩法
(1)滑动点(动态点)
滑动点是依附点的一种应用形式,当我们将点绑定在某个对象(直线、线段、圆、函数曲线)上,就可以让这个点在对象范围内自由滑动。
1.常规的方式直接在图形的轮廓上点一个点就可以了,然后在代数区看到这条指令后边的播放按钮; 2.但是对于多边形,比如三角形,只能用一个集合来实现围绕运动,可以将附属文件下载下来看一下(属于中阶知识,先了解)。
(2)坐标与代数方程的联动
如果我们将滑动点和代数方程联合起来,那就是一个漂亮的动态函数展示,当然,这是简化版的(创意不限,自由发挥):
(3)随机点(高阶知识,可先了解)
研究随机分布时,我们就会使用随机点,比如我们在[-5,5]的矩形区域之间生成60个点,就可以用这种方式:
l1=Sequence($point(RandomBetween(-5,5),RandomBetween(-5,5)),i,1,60)
这条指令里包含了多个语法,分别是列表、点、随机数,可以先将这句指令复制给AI让其教学一下,可以先关注,后续逐渐深入这些高阶知识。
4. 点在动画中的作用
正如开文说的一样,点是GeoGebra的基础,这里我全面汇总一下点的作用,供参考。
| 作用 | 说明 | 举例 | ||
|---|---|---|---|---|
| 作为计算基础 | 点的坐标直接参与几何/代数计算,是多数量化结果的输入 | 距离 Distance(A,B)、斜率 Slope(Line(A,B))、三角形面积由 A,B,C 坐标计算 | ||
| 作为控制点 | 通过拖动点改变模型参数或形状,相当于“几何化滑块” | 拖动抛物线顶点控制开口与位置;拖动初速度端点改变抛射轨迹 | ||
| 作为交互入口 | 点击/拖动点触发状态切换、脚本或分支逻辑 | OnClick 为布尔量 p 取反:SetValue(p, !p) 实现开关 | ||
| 作为显示定位 | 作为文本/标注的锚点,使信息跟随位置变化 | 在 A 附近显示 Text("f(A.x)="+f(A.x), A) | ||
| 依附点/约束点 | 点被约束在对象(直线、圆、函数、区域)上 | A = Point(c) 使 A 在圆 c 上;A = PointIn(poly) 使 A 被限制在多边形内 | ||
| 参数化/驱动变量载体 | 用点的坐标表达参数,推动函数/曲线随参变化 | A=(t, sin(t)),t 为滑块;或 A=Curve(a(t), b(t), t, t1, t2) | ||
| 轨迹(Locus)起点 | 以点带动另一点生成轨迹,研究依赖关系 | Locus(B, A):A 在圆上滑动,观察 B 的轨迹 | ||
| 动画驱动 | 让点沿路径自动运动,展示连续变化 | 选中点 A→播放动画;或设置 StartAnimation(A, true) | ||
| 随机/采样点 | 用随机坐标生成样本,做概率与统计实验 | Sequence((RandomUniform(-5,5), RandomUniform(-5,5)), i, 1, 60) | ||
| 测量与标注锚点 | 给长度、角度、切线等动态对象提供标注位置 | 在切点 P 处显示切线方程、曲率数值 | ||
| 变换中心/枢轴 | 作为旋转、伸缩、镜像等几何变换的中心 | Rotate(poly, α, O);Dilate(c, k, O);Reflect(A, B) | ||
| 局部坐标系基准 | 自定义原点/基向量的定位,构建局部坐标系 | 以 O 为原点、U,V 为基的坐标变换与投影演示 | ||
| 投影/垂足/最近点 | 通过点定义到对象的投影或最短距离点 | Foot(A, l) 得到 A 到直线 l 的垂足 | ||
| 顶点/几何骨架 | 作为多边形、折线、圆锥曲线等的关键顶点 | Polygon(A,B,C,…);Polyline(P1..Pn) | ||
| Bézier/样条控制 | 控制点决定曲线形状与平滑度 | Bezier(A,B,C,D);Spline(P1..Pn) | ||
| 向量端点 | 确定向量的起点与终点,便于力学/位移表示 | Vector(A,B);合力、分解与平行四边形法则演示 | ||
| 函数取样/数值节点 | 用点序列采样函数,做离散化与拟合 | Sequence((x, f(x)), x, a, b, h);FitPoly(points, n) | ||
| 布尔与模式选择器 | 点位置对应不同状态/模式 | 将 A 限制在若干离散点 {P1,P2,…},用 IndexOf 映射为模式编号 | ||
| 数据可视化数据点 | 作为数据集的元素用于拟合/统计图 | 拖动散点影响 FitLine、FitPoly 结果 | ||
| 复数/极坐标表示 | 点与复数/极坐标一一对应,便于运算与几何理解 | 以 A 表示复数 z,展示 ` | ||
| 极径/角度控制 | 用点控制半径与角度,驱动极坐标模型 | A=(r cos θ, r sin θ);Angle(O,A) 动态测角 | ||
| 圆/弧的定义点 | 圆心与圆上一点决定半径;三点定圆 | Circle(O, A);Circumcircle(A,B,C) | ||
| 角的定义点 | 三点确定角,拖动任一点改变角度 | Angle(A,B,C);可作角平分线、等角轨迹 | ||
| 约束到格点/整数点 | 将点限制为整数坐标/网格节点 | A=(Round(x(A)), Round(y(A))) 或开启吸附到网格 | ||
| 选择/拾取目标 | 作为“抓手”定位与选取对象 | 用 A 选取最近元素:Element(Objects, k)(配合距离排序) | ||
| 动态文本/图像锚点 | 文本、图片、标签随点移动与缩放 | 将说明、提示图钉在 A,界面整洁不遮挡主体 | ||
| 自定义工具 I/O | 作为工具的输入/输出参数,复用构造 | 以 A,B 为输入构造垂线工具;输出交点 P | ||
| 优化/求解变量 | 点坐标作为变量参与目标函数,寻找极值 | 调整 A 使 d(A) 最小;用 Extremum/NSolve 配合可视化 | ||
| 物理/几何模拟实体 | 把点当作质点/节点,联动弹簧、杆件等 | 质点-弹簧模型,拖动初始位置观察振动 | ||
| 轨迹描迹/涂绘 | 开启“描迹”记录运动轨迹形成图形 | 对 A 开启“描迹”,配合动画形成轨迹图 | ||
| 分段/状态边界点 | 点越过边界触发分段函数或状态切换 | 若 x(A)>c 则显示方案2,否则显示方案1 | ||
| 时间轴/进度代理 | 用点在数轴上表示时间/进度驱动场景 | t = x(A);随 t 切换镜头与注释 | ||
| 误差/不确定性可视化 | 用点云表达测量散布与误差范围 | 采样点围绕理论值形成散点带;显示置信区间 | ||
| 教学探究支点 | 作为“可拖、可试错”的探究入口 | 学生拖动 A 观察命题是否保持,进行“拖动不变性”验证 | ||
| 隐藏/辅助点 | 仅为中间计算与构造服务,避免画面杂乱 | 计算垂足、圆心、交点后将辅助点隐藏 | ||
| 记录与表格联动 | 点坐标写入表格,便于统计与导出 | “记录到电子表格”,或用 SetValue(Cell, x(A)) 等同步 |
5. 常见问题与技巧
(1)命名问题
GeoGebra 默认点名为 A、B、C…,点多了以后很容易混淆。尤其是后续需要使用程序操控,这样命名方式简直是无从下手。从实战的角度考虑,建议命名方式如下:
Click1=(0,1)
Click2=(0,2)
Click3=(0,3)
这个命名有两部分组成:“click”+数字,前者一眼看出来是什么内容,后者可以区分每个变量。
后续使用程序操作的时候,只需要一个for循环,快速对目标点进行操作,非常便捷。
当然还有复杂的命名方式,比如添加行号、列号,快速定位点的位置,这个就看大家的发挥自由创作,比如这个作品,就需要用到这种复杂的方式:
养成一个好习惯,从命名开始,非常重要。
(2)交互动画常见的一些命名方式
| 类别 | 命名技巧 | 示例 | 说明 / 编程价值 |
|---|---|---|---|
| 几何点 | 大写+编号或功能前缀 | A1, B2, P_start | 易于在脚本中引用和循环操作,便于序列生成(Sequence) |
| 控制点 / 参数点 | 前缀 Ctrl 或 C + 功能 | Ctrl_r, C_theta | 用于动画驱动或参数化函数控制,脚本可直接读取 |
| 辅助/中间点 | 前缀 Aux 或 M | Aux1, M_intersect | 不显示或灰色,用于中间计算,脚本处理时清晰 |
| 函数/曲线依赖点 | 后缀关联曲线或公式 | P_f, Q_g | 明确点与函数、曲线对应关系,便于更新或批量操作 |
| 序列/批量点 | 下划线+编号 | P_1, P_2, ..., P_n | 与 Sequence / List 配合,方便循环生成和操作 |
| 角/比例/特殊量点 | 使用希腊字母或描述性缩写 | θ0, λ1, α_ctrl | 控制角度、比例或物理量,脚本可直接调用 |
| 触发/交互点 | 前缀 Btn 或 Switch | Btn_show, Switch_mode | 用于点击/拖动触发事件,便于在脚本中绑定 OnClick / OnUpdate |
| 随机/采样点 | 前缀 Rnd + 序号 | Rnd_1, Rnd_2, Rnd_60 | 与随机函数结合,用于概率、蒙特卡洛模拟,便于批量操作 |
| 图形/模块归属 | 前缀模块名 + 功能 | Tri_A, Tri_B, Tri_O | 大型图形或课堂演示模型中,将点归类到模块,方便隐藏/显示和调试 |
| 表格/数据输出点 | 后缀 _data 或 _val | P1_data, P2_val | 对应表格或数据集合,便于统计/导出/拟合函数 |
| 动画轨迹点 | 前缀 T 或后缀 _tr | A_tr, B_tr | 用于描迹或路径动画,便于控制显示与刷新 |
| 固定/参考点 | 前缀 Ref 或后缀 _fix | Ref_O, P_fix | 固定坐标,防止自由点“乱跑”,保证模型稳定性 |
八荒启对作品的命名方式并不强求,这个看个人喜好,但是售后是肯定需要你出马的,所以怎么命名,还希望慎重(自己都看不懂就尴尬了)。
(3)点太多时如何管理
在复杂动画中,如何进行对象管理是一个很头疼的问题。比如对于点来说,主图形点100个,辅助点100个,控制点30个,随机点2000个,一共是2500个点,如果还是靠再代数区用鼠标滚轮滚啊滚,真是够让人崩溃的。
【1】方法一:使用图层; 将不同功能点集放在不同图层,可单独隐藏或者显示某一个图层,还算方便。
但是图层的使用不够灵活,当我们选择某一个对象为图层5后,后续所有的对象都是放在图形5上,一旦忘记切换,真实难受到爆炸。这种方式常用在游戏的操作上,将底层放到图层0,操作的放到图层9,其他地方很少用。
【2】方法二:使用“可以被选择”选项;
细心的你肯定发现了这个,取消勾选之后,对应的点在画布上还在,但是无法选择,这样可以避免误触。
【3】方法三:锁定起来;
每个对象都有锁定按钮,右键可以看到,然后可以选择,但是无法移动。
【4】方法四:隐藏起来;
这个是常见的一种做法,直接隐藏,但是出现一个新的问题:如果我们需要重新修改或者调整,找对应的点需要在代数区扒拉大半天。
在实战项目中,常常对这种方式进行升级(属于debug部分知识,后续文章会讲到),我们只需要建立一个复选框,把名字改为debug:
然后选中需要隐藏的点,和这个复选框关联,就OK了。
当我们取消勾选复选框的时候,对应的点就消失。
这种方式在实际项目中非常常见。
6. 总结与思考
点的使用非常基础,激活点工具后点击画布即可生成点;如果想进阶一些,就在代数区自己输入一个点;如果想更多学习一些,那就是点的选择、点和图形的应用、点和代数式的应用;当然还有更高阶的,比如使用指令随机生成点;最后呢讲了一些点的管理,比如使用复选框。
本篇整体内容不算复杂,毕竟是基础篇内容,更多是讲解一些实战总结和技巧,给大家开阔视野,方便下一步学习。
三. ✨结尾
本文的配套文件已整理,可以上手试一下,获取方式见文章首部表格。
最后,用点绘制一棵小树,祝你笑口常开,生活愉快。
本文收录于微信公众号:八荒启-交互动画,可点击扫码关注,获取更多技术咨询与服务。