Board logo

标题: ggb学习--迭代二分树 [打印本页]

作者: myzam    时间: 2011-10-16 23:22     标题: ggb学习--迭代二分树

这段时间准备抽时间学习一下ggb。准备把3d-7b平台搬到ggb来。就是想看看这个java编的软件运行3d平台和gsp做个比较。想看看其运行效率如何。我有点好奇。

2011-10-17 这是一个用geogbra绘制的椭圆,放到了网上,右键和鼠标拖放都可以。其实几何画板同样可以做到这点。但是几何画板的那些精简版做不到,因为有一个文件被精简掉了。几何画板放到网页上要麻烦点,要上传一堆文件。ggb发布到网上很简单。测试查看
另单文件版,解决了在教室里面使用这个软件的问题。因为教室里面的电脑都没装java,上课时不会去安装java虚拟机的。所以这里的单文件版本不可或缺。
    GeoGbra 4.0的确出来了,但是是测试版,不能离线offline安装,而且是台湾语。不习惯。
由这个软件可以看出台湾的IT远超大陆。ggb 4.0只有台湾语,而没有大陆语,就明显的看出两地的IT业的差距。
     这个软件能代替几何画板吗?不能。几何画板的魅力是什么都没有,当你需要时你就从底层开始建立,在创建的过程就训练了数学。而ggb是做好了的东西,用起来很方便。如配极论就做成了结论。用起来是很爽,但是如果不去自己做一下的,收获并不大,人是很懒的有了现成的工具,是不太想去自己创建工具的。几何画板是没有这类工具,你要用对不起,靠你自己去创建,这恰好可以让你去感受这个过程。几何画板不可能被ggb代替的。
----------------------------------------------
分享我的学习经验,如何学习命令:
准备一不电子英语词典,最好是有道词典。为什么?
  ggb里面有大量的命令,比如我们作出椭圆长轴,但是记不住命令,怎么办?这时打开有道词典,输入椭圆的长轴,你将看到major axis,接着你在ggb的命令框中输入ma,ggb会自动补全命令,框中自动出现majoraxis[],最后,按下F1,看看该命令的使用方法即可。
  当然对我来讲只是偶尔这么做。ggb中的命令很少有缩写,基本上就是字典上的英文单词原文。我只看到两个缩写了的命令**(greater common divisor)和lcm(lower common multiple)
   还有一个学习经验就是把list作为一个数据类型来理解,该类型可以进行四则运算。也就是说思维上要突破传统观念,抛弃狭义的数据类型观,不要总是认为只有2,0.2,根号2这些才是数据。比如vb中就有一种数据类型叫变体。
---------------------------------------------
我猜的:
cas我的理解是:c---calculus(微积分),a---algebra(代数),s--statistics(统计),不知道对否?我还没来得及细看这个版本,估计作者在,c,a,s三方面做了强化,所以就叫cas 版本了。

HHHZH告诉我是:CAS是计算机代数系统 Computer algebra system 的缩写

=====================
ggb的各种版本下载,这是最快的下载地此。下面是离线安装包下载地,在线安装累死你。
目前的最新版本 是4.08.
其余为测试版本。
http://code.google.com/p/geogebra/downloads/list
作者: myzam    时间: 2011-10-18 20:28     标题: 2011-10-18

首先在百度输入java,进入java官网,下载免费的java平台。或直接点击这里下载java平台
:http://www.java.com/zh_CN/
然后点击下面的链接,变可以在网页上看到几何画板或ggb了。
几何画板动态网页测试
几何代数ggb动态网页测试
加载java几何画板明显的比ggb快。这是当然。选择的语言不一样。

   ggb要用到latex语言,那么在那里学习这个语言?其实我们在使用mathtype编辑数学公式时就可以学习latex语言,我们在该软件的偏好设置里面勾选上可以复制latex语言这一项,这时你只要输入数学公式,然后复制公式,并粘贴到记事本,这些公式的latex语言就显示出来了。就这么简单。多复制几次,多看几次,自然就学会了latex语言。由于这个语言全是英文,如vector的前三个字母为vec,这就是向量,又如bold就是黑体,it便是意大义(italic)体即斜体的标识符。cdot--c为center中心,dot---点之意,又如矩阵要用到标识符:matrix,数组要用标识符号--array。上标就是a^2,下标就是a_2,分数便是由fractal这个单词生成为"\frac 3 2",,比如乘的英文单词是times,那么输入:2\times 3 回车就出现2x3,等等。因此从输入数学符号来讲,ggb可以输入一切数学符号,几何画板这一点上是无法和ggb相比的,但是也恰好是这一点也让大部分人连输入一个上标都费力了。所以学习这个语言需要一部电子英文字典。反正这个软件的入门比几何画板的门槛高。
作者: fczx    时间: 2011-10-19 08:49

1楼的好像对几何画板与GGB这两个软件还不熟悉,说的言论,有贻笑大方之嫌!!!!
作者: myzam    时间: 2011-10-19 09:58

3# fczx
这个标题叫ggb学习。是我自己在学习的感受,对与错不重要。就算是错,学到后面就知道了。我只学了几天,我是写我的学习过程中的感受,并非什么教程。何来一笑大方之嫌。你觉得学习中有不对的地方,你给我指出啊,这样我不就进步了吗?你说对吗?
   其实嘛,你给我指出来那点不对是最好的,你这种发言含糊其词,对我们这种新手没什么帮助的。你得告诉我们新手的正确观点嘛。
作者: myzam    时间: 2011-10-19 12:45     标题: 2011-10-19 命令不分大小写

我发现ggb的命令不区分大小写。这还真方便。
如:max[2,3],MAX[2,3],MaX[2,3]效果一样。
今天看到了ggb的迭代:是用命令iteration完成的。
iteration[x^2,2,3]=256.,意思就是初值是2,按规律x^2,迭代3次,不知道还有没有其它方法迭代。继续学习。
ggb的命令还是挺智能的。只要模糊的记住英文单词,输入前2个字母,系统就会提示输入。比如输入迭代就得知道前面的几个字母大概是iter,当输入ite时系统就会自动补全。由于ggb有大量的命令,如果比如说仿射比affineratio,交比crossratio。如果对相应的英文单词不去记的话,要从命令中一个一个的找还是很麻烦的。如果这个软件不常去用它,这些命令单词还是要忘记的,有没有好的办法呢?继续学习才知道答案。
  还有就是ggb的按钮实际上就是网页的对勾。ggb的滑块还挺容易生出,只要在代数去点一点那个淡绿色的小球,就可以生成滑块。文字的表现也很有意思,可以按照指数的形式生成任意多重。当然要用latex语言。
分段函数要用到条件运算符if。
如:f(x)=if[x>2&&x<4,3,-3].这相当于的f=3(2<x<4),-3(其它),这样的分段函数,if运算符可以嵌套。
  此外其仿射比AFFINERATIO[A,B,C]这个比不是3点的单比,而是以A为原点,B为单位点,度量出的点C的仿射坐标。又交比CROSSRATIO[A,B,C,D]=AC/BC:AD/BD(A,B--基点偶,C,D--分点偶),交比的定义和我们在大学里面学的完全一样。而仿射比和交比的关系为:
(AB;CD)=BCD的仿射比/ACD的仿射比。这里的仿射比不是单比。
------------------
关于命令对大小写不敏感的补充:
看下列命令:perpendicularline[A,xAxis],这将产生垂直于x轴的一直线。
再看:perpendicularline[A,xaxis],系统报错,这是否说明系统对大小写还是敏感的呢?回答是,否!理由:x轴是一个对象,该对象的名叫:xAxis,对象的名字是不可以乱动的。
作者: pnyzljy    时间: 2011-10-19 14:41

我支持myzam,能说出自已 的学习体验,也是对我们的再教育,对于新手,则是一份极佳的教材。至少对我来讲,我学到了很多,少走了很多弯路,
我支持,大家把自已的学习心得写出来,假如错了, 也请高手指正,让更多的后来者不犯同样的错误。
作者: 周传高    时间: 2011-10-19 16:01

这个贴子支持了。这也可以算是新手的教程啊。
作者: myzam    时间: 2011-10-19 19:18

2011-10-19  如何在文本框中输入矩阵
可以用latex命令。latex命令有多个版本。咱们不管那些。用文本框输入矩阵可以按如下语句输入:
\begin{array}{c}1&2\\3&4\end{array}
说明:begin---开始,end---结束,c---center可以改为left的l,right的r。\\表示换行
如果要加括号,
可以用转义符\。如下:
\left(\begin{array}{c}1&2\\3&4\end{array}\.
上面只有左括号。
或者是:\left(\begin{array}{c}1&2\\3&4\end{array}\right)
这句有左右括号。


或者是\begin{matrix}1&2\\3&4\end{matrix}
说明:用这句不需用设置位置{c},因为这句矩阵元素总居中放置的。ggb系统自带的只可以输入2x2,3x3矩阵,要输入nxn矩阵就得用到latex语言。
但是并不是一切latex语言ggb都支持,如这句:
\color{red}{hello},本应显示红色的hello,但是在ggb中确显示的是red。
"{,}"是latex的定界符。ggb中输错了latex语言我发现不报错,如果报错的话反而影响运行程序,这个设计挺好。还有如下的几句ggb也不支持:
\bold{hello},黑体
\it{hello},斜体
\text{hello},直体
这样看来设置字体格式的latex语言ggb都不支持。也就是说ggb只是部分支持latex。
在看下面三句,输入不同的phi:
\Phi
\phi
\varphi
var---varant变体varphi指phi的变体字。不涉及到字体的格式就可以用。
点:
\cdot
\cdots
\vdots
\ddots
\ldots
极限箭头\to,如输入x^2(当x趋近于3时),在ggb中可以这样输入:\lim_{x\to 3}{x^2}
\cup,\hat
补集符号\complement,这个符号我们老师大部分都用c来的代替。
看了这些你就会想这么多英文能记住吗?是啊能记住吗?能记住多少?
其实我也只能记住一部分,我的绝招就是在在mathtype里面把符号复制到记事本看代码。这个经验奉献个大家分享。
我试了试看能不能从mathtype里面复制符号到ggb来发现不行。要是行的话还真的方便,有点遗憾。
不知怎么回事,ggb的命令部分让人感到和mathematica和maple是一样的风格,仿佛让人感到是一微型的mathematica或maple。所以这软件可以叫做微型maple,这好像比较ggb更形象。
作者: inRm    时间: 2011-10-19 19:24

“几何画板的魅力是什么都没有”,只有对gsp感受至深者才会有如此评价。
学什么就精什么,会什么就共享什么。慷慨、坦率,楼主的自信心无与伦比,钦佩!
作者: myzam    时间: 2011-10-19 20:09

10# inRm
谢谢版主。
作者: myzam    时间: 2011-10-20 08:55

2011-10-20
  ggb中的命令框,可以接受变量和常量,特别是字符串常量。字符串常量要用双引号引起来。
如:命令框中可以输入:t=“hello world”,回车就出现文本框,并显示hello world.
  关于工具栏里面的极线与径线工具:
1.什么叫二次曲线的直径?
   无穷远点的极线叫直径,如果两个无穷远点共轭,则它们的极线叫共轭直径。那么点的共轭又是怎么回事呢?设P,Q是两个点,A是二次曲线的矩阵,如果内积(AP,Q)=0(用齐次坐标表示),则说点P,Q共轭。如果P为一定点,与P共轭的点集合便是其极线,而P点便叫极点。当P点在一直线上运动时,其极线绕一定点转动。同样当极线绕一定点转动时,其极点便沿一定直线运动。这些结论统称为配极论。从配极论的角度看,二次曲线就是自共轭点的集合。配极论是二次曲面或二次曲线里面最美的理论。完美而漂亮。直径是特殊的极线,特殊在其极点是无穷远点(在扩大的仿射空间中来看,在仿射空间中看直径当然无极点。扩大之意就是添加了无穷远点的仿射空间)。

ggb的经线只的就是直径。ggb中的经线工具要选一直线,在点选二次曲线,选直线就是选直线的无穷远点,这个无穷远点和二次曲线一起确定了一条直径。无穷远点在仿射几何中确定的是一个方向,换句话说,ggb的经线工具作出的那条直径的共轭直径是和点选的直线平行的。

  几何画板同样可以打造极线工具。而且可以用代数法或几何法打造。
作者: myzam    时间: 2011-10-20 11:30     标题: 如何在ggb的文本框里实现换行?

1.如果未使用latex,这个问题就不是问题。
2.如使用了latex语言,
则可以借助于矩阵语法和数组语法完成部局,如下:
法一:\begin{matrix}hello\\world\\我爱你\\ggb\end{matrix}
上面的字是居中排列的。
法二:左对齐:
\begin{array}{l}hello\\world\\我爱你\\ggb\end{array}
字居中排列:
\begin{array}{c}hello\\world\\我爱你\\ggb\end{array}
右对齐:
\begin{array}{r}hello\\world\\我爱你\\ggb\end{array}
======================================
ggb中的if运算符号相当于是编程里面的条件语句,
ggb的跌代命令,iteration,和iterationlist相当于编程里面的循环语句。
和几何画板比较各有优点。我觉得ggb的迭代命令要比几何画板的迭代自由,ggb是命令式的迭代,gsp是要点选图形,参数,各有特色。这个还得好好的研究一下。我找了半天的极坐标没找到,ggb只给出了点的极坐标形式,但是极坐标系我发现没有。
ggb的数列命令很好sequence。maple是用seq大体一样的用法。
我个人认为可以把ggb的数据划分为:
常量,如1,2,"hello"
变量:a,b,c
列表(list):{1,1,2,3},可以把列表单独算一个数据类型。
和几何画板对比,几何画板没有必要划分数据类型,但是学习ggb很有必要划分一下数据类型。
==================================
Boolean台湾叫布林,大陆叫布尔。还是台湾的翻译准。中国大陆ggb总部把它翻译成布朗,就有点糊涂了。也许是翻译失误了吧。
======================
属性对话框中的名称和标签文字的差别
   名称是程序运行时进行值传递的依据,是变量盒子。而标签文字是为了对对象叫起来方便而起的一个名字。程序在后台进行值传递时是以名称为依据进行的。
作者: lixin0407    时间: 2011-10-20 13:19

那个列表我也没太弄明白,它到底是做什么用的呢?楼主能帮忙举个例子吗?谢谢
作者: myzam    时间: 2011-10-20 17:36

list类型不是集合。因为里面有重复的元素。
如:a={1,1,2,3},b={2,3,4,5,5}
命令:union[a,b]={2,3},这样求的是并集。
作者: myzam    时间: 2011-10-20 22:32

求点的坐标
1. 在ggb中描一点A,在命令框中输入x(A),y(A),回车变求得了点A的横,纵坐标。
2.轨迹:关于轨迹的思路和几何画板一样,需要一个主动点(必须是一受约束点)和一个被动点。选取轨迹工具点击这两个点,先后次序没关系,便可以构造出轨迹。
如:在x轴上任意的描一点A,用命令a=x(A)求出x坐标。输入b=a^2+1.接着定义点B=(a,b)。这时用轨迹工具就可以创建轨迹。ggb的轨迹操作过程和gsp不同,然,就其思路来讲是一样的。
3.动态文字
  动态文字的本质就是在文本框中输入常量和变量的问题。
常量用英文的双引号引起来,变量用变量名表达。常量和变量用加号连接。
如:一个点A(*,*)(动点),作如下输入:
"hello world"+A
这时文本框中会显示hello world(*,*),后面的坐标部分就会动态的变化。
4.连乘的输入
如何输入1,2,3,4连乘,如下:
\prod_{i=1}^4{i}
5.ggb共用一个属性框。
如:在ggb里面任意的画上点A和线g,我想看线g的属性,我可以不去点线而去点点A,从点A的属性框进入到线g的属性框。挺方便的。
作者: myzam    时间: 2011-10-21 00:18     标题: if语句:语法if ... then ... else(如果...那么...否则....)

1.创建数值变量t=1,并生成滑块
2.if[t<0.5,(1,2),(2,3)]ggb中会生成点。拖动滑块生成的点会轮换的出现。
3.if[t<0.5,t x,-2 x]轮换出现直线y=tx和y=-2x
4.if[t<0.5,"hello","world"],轮换出现hello,world
5.if[t<0.5,"hello",2 x]只会生产 hello,类型不匹配 。
6.if[t<0.5,2 x,"hello"]只会生产y=2x类型不匹配 。
7.if[t<0.5,2 x+y=1]失败
8.if[a<0,(1,2),if[a==0,(-1,2),if[a>0,(4,5)]]] ,嵌套
9.if[a>0,line[(1,0),(2,3)]],a>0时创建直线
10.if[a>0,circle[(0,0),2],circle[(2,3),2] ] 创建不同的圆
11.if[a>0,circle[(0,0),2],line[(2,3),(2,5)] ]失败,类型不匹配 。
我感觉到if运算符要求类型匹配才可以正常使用。其中的一个功能就是可以用来创建(create object)对象(台湾叫物件)。

==================
现在的编程都是面向对象的,ggb也不例外,控制对象的最重要的是就控制其属性,这一点和可以通过右键菜单完成,还有就是创建对象,这一点可以通过工具栏和命令完成。

附件: Reimann和.ggb (2011-10-21 20:44, 4.29 KB) / 下载次数 2728
http://develop.forums.netpad.net.cn/attachment.php?aid=14780&k=c058b1edda215afad1a7c569e7c12de3&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-10-21 23:15     标题: is运算符

isdefined[]---是定义的吗?
1.输入K=if[a>0,circle[(0,0),2]]
这时在代数数区将看到这个园的名字K
2.输入c=isdefine[k]
3.拉动滑竿,会看到c在两值之间变化true  or  false
isinteger---是整数吗?
输入isinteger[   2.3]
=====
感觉学ggb难度比gsp大的多。记忆量大的多。所以这个软件要想像几何画板那样流行难。除非在大学时代就开始接触。教了5年以**的老师外语都忘记的差不多了,而命令是永远不会汉化的。据说有一种语言叫易语言,它就是用汉语编程,是中国人搞出来的,网上还挺火的,又听说发展还不完备,不知道将来会不会迎来一个汉语为主体的编程时代,如过真的能来到的话,咱国人学软件就没那么累了。那么多命令记忆起来有难度。掌握这个软件并非像网上说的那样轻松。当然如果只要求画个线,画个园,那网上说和几何画板差不多容易学,这到也没错。但是网上都没有把学这个软件的难度真实的告诉大家。
ggb关键要去学习命令。如果故用命令的话迭代就完成不了。数列也生成不了。
感觉控制动画不如几何画板方便,也许是习惯问题吧。但是控制色彩比几何画板方便的多。
作者: chengshu1258    时间: 2011-10-21 23:15

5# myzam


仿射比的,可以建立自己的坐标系,很好!
作者: myzam    时间: 2011-10-21 23:35

19# chengshu1258
我把帮助文档看完了,也动手把文档中的例子做了一下,就软件本身来讲的确比几何画板强,而且包含几何画板的功能。但是有的地方还是不如几何画板,如按钮。界面风格类似于网页风格。自建坐标系没问题。几何画板的方法可以搬过来的。控制动画没几何画板方便。
作者: myzam    时间: 2011-10-22 19:04

函数命令
1.在command box中,直接输入f(x)=x^2+2,按下enter则创建函数对象。
2.在command box中输入function[x^2,2,4],按下enter则创建区间[2,4]上的函数对象。
创建区间上的函数比gsp方便。自变量系统约定为x,这点和gsp相同。
3.command box不接受latex语言。要是接受就更方便了。
4.ggb的文本框:
  在文本框中用latex输入a间隔b,回车会发现ab并没分开。因为输入语法错误,正确的做法是:
\mbox{a                b},这时a和b才会间隔开。
mbox就是model box---模式盒子。
另:在文本框中按如下方法输入:
-{3\atop 2}
3与2就会重叠显示。也就是说,出现的是无分数线的分数。
作者: myzam    时间: 2011-10-22 23:16

真恼火:
命令--lineareccentricity,直译为线性离心率,台湾版的help说成是离心率,可以理解。中国ggb总部也跟着叫离心率,恼火。这明明就是半焦距c。离心率e=c/a.还不如直译,就叫线性离心率。
只能说恼火。
做一个椭圆c=1,a=2,用命令就是的结果是1.
再坐一椭圆c=3,a=4,用命令求出的结果是3.难道我们大陆也把这东西叫离心率吗?
1.randombinomial[number n of trails,probability p]---翻译为:
“随机二项分布[n的踪迹,概率p]”,我的理解是如下含义,
首先,该值随n,p的变化而变化。
其次,产生的是0,1,2,...,n这n+1个integer。结果是随机整数。从这句话:number n of trails可以看得出来。
2.polygon[]
用工具栏的多边形工具不可以直接画直角三角形,要画直角三角形可以用该命令完成,如下:
polygon[(1,1),(1,4),(3,1)],按下enter,ok。当然用垂线工具结合多边形工具也可以完成rt三角形的作图,但是麻烦,没有使用命令简单。
作者: myzam    时间: 2011-10-23 00:23

别把对象名称和标签名搞混了
举个例子:命令corner[]的使用:
1.假设在ggb中有一个文本框。我们首先要找个这个文本框对象(object)的名(name),方法如下,选中文本框,右键,弹出菜单的第一行就是该对象的名,一般为text1,text2,。。。
2.在命令框中输入corner[text1,2],回车,则会在文本框的右下角产生一个点,并同时在代数区上显示出该点的坐标。
也就是说,我们是通过对象的名而不是标签名去调用对象的属性的,对象和其名是一一对应的关系。
作者: myzam    时间: 2011-10-23 00:48     标题: 极值

1.极值问题:
ggb只可以直接计算多项式函数的极值,当我们要求三角函数的极值时,就要用到taylor展式(一般采用零点展式),我们可以先把三角函数展为taylor多项式,然后用命令extremum求其极值点。
2.if and intersect
  这两个命令配合,可以让交点依次出现

附件: Taylor展式求三角函数的极值点.ggb (2011-10-23 00:48, 3.57 KB) / 下载次数 3067
http://develop.forums.netpad.net.cn/attachment.php?aid=14798&k=f19194eddf9ffa7caddad8e2c5fc1536&t=1749788112&sid=dQn9G4

附件: if与intersect.ggb (2011-10-23 01:13, 4.08 KB) / 下载次数 2841
http://develop.forums.netpad.net.cn/attachment.php?aid=14799&k=fdc3478ccecdacec141a9465415b8fb0&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-10-23 08:42     标题: 看来ggb还不够完善:

ggb中的命令directrix,求准线的命令,ggb的注解为directrix[<conic>],这个意思就是输入圆锥曲面的名称,就可以获得其准线,然事实并非如此,事实上只有输入抛物线的名称才对。也就是说ggb对这个命令的注解应该是directrix[<parabola>],这才是正确的。
  也许ggb在4.0测试版中会改正。
1.关于命令polar和tangent
  由于从配极论的观点看圆锥曲线,圆锥曲线就是自共轭点的集合。也就说如果我们在圆锥曲线上点一个点A,求点A的极线和求点A的切线是一回事。因此对圆锥曲线而言命令tangent是多余的。
polar[A,c],
tangent[A,c]效果相同。
2.命令function和命令curve
  这两个命令都可以做出部分正弦线。如下:
a)function[sin(x),-4,4],这里的自变量x是系统约定,不可以改动。
b)curve[k,sin(k),k,-4,4],不需用预先定义parameter k,且parameter k可以改为其它字母。这里系统接受的是参数方程。
3.软件风格
  ggb的风格和gsp的风格完全不同。可以这么说ggb是明显的参考了顶级数学软件maple或mathematica的风格。到今天我可以肯定的说ggb的风格和那两个顶级数学软件的风格完全一样。不过那两个顶级数学软件里面还可以用和basic语言差不多的语句进行编程。ggb没有。作者在设计者个软件时应该是参考了maple和mathematica的。ggb的数据类型羞羞答答。代数功能比几何画板强,几何功能不如几何画板。或者说几何功能上没有明显的超过几何画板。控制动画,ggb是右键菜单完成,用惯了几何画板,我还是喜欢几何画板的按钮控制动画。还有几何画板的ctrl+h,则可以影藏对象,ggb中没这个快捷方式。当然可以点击algebra view完成。但我还是喜欢几何画板的ctrl+H.这个软件有很强的功能,整体功能比几何画板强,这是必须要认可的。代数,几何,微分,统计这个软件都可以解决。解决的范围较广。
4.在命令体系中参数曲线(curve)等同于函数(function)处理。而把方程作为另一个类别处理。
如poin命令,curvature,curvaturevector,length命令etc.我学习时我就注意区分类型,在学习中逐步建立类型匹配的概念。

附件: 曲率验证.ggb (2011-10-23 09:22, 4.13 KB) / 下载次数 2833
http://develop.forums.netpad.net.cn/attachment.php?aid=14802&k=c509e22f126bbe6112d5d9521d2a1dc8&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-10-23 11:45     标题: 命令name与object

name---获取对象的名
object---获取对象。
1.假设ggb中有一个点叫A,运行命令T=NAME[A],则在ggb中的变量T被赋值为一个字符串"A",并在ggb中以文本框显示这个字符串。
2.object[name of object as text]---as text 即作为文本之意。以就是说如果以字符串形式输入对象的名,则可以获取这个对象的值。
如:代数区(algebra view)有一个列表为:list1={1,2,3},
这是输入命令:
object["list1"],ENTER则可以得到一个新的列表为list2={1,2,3}.
因此object是用来创建对象的,更准确的讲是复制对象。
总之name是获取对象名,并以字符中形式显示,object是copy对象,特别注意objec对文本框作用时,我们在ggb中看不到变化,这时你进入属性对话框就可以看到复制的新对象了。它与就的对象完整的重合在一起了,你只要采用隐藏与显示的方法就可以验证是否真的创建了这个对象。
3.ggb中,对象的名,对象的属性,对象的行为是学习的核心内容。
几何画板的学习要简单的多。
4.如何让你的电脑死机
在ggb的命令框中输入sequence[2 i,i,0,无穷大],这个软件不报错,直接让你的电脑死机。
5.表格
  tabletext[{1,2,3},{1,3}]
tabletext[{1,2,3},{1,3},"h"]---h(horizontal 水平的,系统默认同上)
tabletext[{1,2,3},{1,3},"v"]---v(vertical 垂直)
作者: myzam    时间: 2011-10-23 13:08

命令:iteration,iterationlist,sequence
1.iteration只产生最后的结果,即只出现终点像。
iteration[x+1,1,3]只出现4,变数只能用x。
2.iterationlist将产生系列值(像),结果为列表对象,只能用字母x,如:
iterationlist[x+1,1,3]将出现一个列表对象{1,2,3,4},含初值。
3.sequence(数列)也是迭代,如:
sequence[n+1,n,1,3]结果为列表对象:{2,3,4}
数列命令的参数可以改为任意的字母。
数列属于特殊的列表对象。list对象的元素可以是非数字的东西。list对象包含了如下一些常见对象:
数列,集合。只要把一些东西放在一起就可以构成列表对象。list对象里面的元素是可以重复的,且类型也不要求一致。list对象可以像数一样的进行相关运算。还可以把新的对象加入到list中。
帮助文档中把list翻译为数列是不恰当的。两个数列可以做除法吗?但列表可以。
4.if和delete
if[list1==true,delete(list1)]
作者: myzam    时间: 2011-10-23 14:39

统计条形图命令barchart
bar---吧,chart---图表,放在一起为条形图的意思。条形图由3个要素组成,宽,高,组距。该命令就是通过对这三个要素的控制去绘图的。祖距的默认值是1.
1.barchart[list of data,list of frequences]
list of data---每个小矩形的中心点数据,list of frequence---每个小矩形的高。数据类型为list。
2.barchart[list of data,list of frequences,width of bars]
width of bars---组距
3.barchart[list of raw data,width of bars]
list of raw data--原始数据,width of bars---组距(每一个小组就叫bar),没有小矩形的高,取默认值1.
4.barchart[startvalue,endvalue,list of height]
startvalue条形图的左面开始点,endvalue条形图的右面结束点,list of height各个小矩形的高度列表。
5.barchart[startvalue,endvalue,expression,variable,from number,to number]
如:startvalue和endvalue确定统计图的宽,
expression,variable ,from number,to number确定统计图的高。
如:i+2,i,2,8相当于输入列表{4,5,6,7,8}
6.barchart[startvalue,endvalue,expression,variable,from number,to number,step width]
如:startvalue和endvalue确定统计图的宽,
expression,variable ,from number,to number,step width(步长)确定统计图的高。
如:i+2,i,2,8,2就相当于是输入列表{4,6,8}

7.在代数区总是显示对应的统计图的面积。
作者: myzam    时间: 2011-10-23 14:54

曲线拟合fit
ggb有多个关于曲线拟合的命令。如
fitline,fitexp,fitpoly,分别代表用直线,指数曲线,多项式拟合曲线。这些命令的用法都很简单,把点放到列表中,对列表执行命令即可。
作者: myzam    时间: 2011-10-23 16:33     标题: 5.0版本 在测试中

希纳字母的输入:
小写:alt+a等
大写:alt+shift+a等
今天去逛了一下论坛,发现5.0版本在测试中,5.0是3D版本。4.0,4.2这些版本都在测试中。也就是说ggb的用户没必要在去建立3d平台了。现在正在测试5.0的3d版本。
作者: inRm    时间: 2011-10-23 20:51

衷心感谢楼主 myzam。
作者: myzam    时间: 2011-10-23 21:04     标题: 我只代表一言谈,不一定对。

30# inRm
  看完了帮助文档,又去官网看了看,同时也倒论坛forum看了看,感觉ggb推出东西太快了点。可以说3.2版本都还有bug,就在匆忙的推出4.0,4.2,感觉不如计划画板严谨。甚至在推出法语版的5.0 的3D版本了。这方面让用户不能准确的知道ggb的发展现状。这方面ggb 不如几何画板严谨。从发展的完善度来讲还是几何画板完善。在几何画板的帮助文档里面你不会发现错误,但ggb有。还有就是官网不如几何画板的素材丰富,用户群也不如几何画板广泛。毕竟这个软件的学习难度远大于几何画板。几何画板的帮助文档带有实例,而ggb的帮助文档基本上可以叫裸奔。
我个人认为:外语完全还给老师的网友不要去摸ggb,那叫浪费时间。一点编程基础都没有的网友不要去摸ggb,那叫浪费时间。这类网友直接选择学习gsp是最好的,不要在ggb 上浪费时间。ggb是好,但却不是每个人都适合。大众软件首推gsp。
  我发这个言也许会得罪人,到我说的是真话。见谅。
作者: myzam    时间: 2011-10-24 12:12     标题: GGB动态

以下是从ggb官网复制的话,直译如下:
■50 languages
有50种语言
Find out about all the details in the GeoGebra 4.0 Release Notes.
找到所有ggb4.0的相关注释
All new features are described in our fully revised manual GeoGebra Manual.
所有的新特性被放在了修订后的手册中。
If you have any questions,
如果你还有问题
suggestions,
建议
or bug reports,
或bug报告
please let us know in the GeoGebra User Forum.  
请到论坛告知我们。
Future
将来
Take a look ahead and try out the currently developed version of GeoGebra.
试试目前研发的ggb的版本
■GeoGebra 4.2 Beta Release (with CAS) - experimental version
ggb 4.2 最新beta ---实验版本
注:4.0版本我用过,是繁体字,只能在线安装,我实验过,和3.2差别不大。beta为测试之意。QQ软件都是这么标记的。4.2我看了其它网友贴的不是繁体字了。
■GeoGebra 5.0 Beta Release (with 3D) - experimental version
ggb 5.0 最新beta 3D 实验版本。

上文来源:
http://www.geogebra.org/cms/en/roadmap

点击官网的路标按钮:roadmap(路标)
ggb目前的正式版本就是3.2版本。
作者: myzam    时间: 2011-10-24 14:23

化简命令simplify[]
如:simplify[x-3x+(x^2-1)/(x+1)+sqrt(x^6)+cbrt(x^6)]这个化简不了。
作者: hhhzh    时间: 2011-10-24 15:13

2011-10-24_151119.png 33# myzam

图片附件: 2011-10-24_151119.png (2011-10-24 15:13, 11.97 KB) / 下载次数 1690
http://develop.forums.netpad.net.cn/attachment.php?aid=14827&k=cc4297b6d7bdc4dc208f16192bfc41b0&t=1749788112&sid=dQn9G4


作者: myzam    时间: 2011-10-24 16:42

34# hhhzh
你是cas版本。我说的是3.2.cas版本进步了。cas版本不错。喜欢。命令也归类整理了,不知道什么时候发布正式板。cas不错。谢谢。
对了,上面那个绝对值还是又问题,还不是最简,不过到这一步已经相当不错了,了不起。。还好,现在是测试版本,也许还会有改进的余地。。
cas我的理解是:c---calculus(微积分),a---algebra(代数),s--statistics(统计),不知道对否?我还没来得及细看这个版本,估计作者在,c,a,s三方面做了强化,所以就叫cas 版本了。
作者: hhhzh    时间: 2011-10-24 22:12

CAS是计算机代数系统 Computer algebra system 的缩写
作者: myzam    时间: 2011-10-24 22:13

36# hhhzh
谢谢。我的猜测是错的。
3d测试版本下载
ggb files that you create may not work in future versions  

You can run the GeoGebra 5.0 beta version directly here:
http://www.geogebra.org/webstart/5.0/geogebra-50.jnlp
作者: hhhzh    时间: 2011-10-24 22:16

http://baike.baidu.com/view/1319406.htm
作者: myzam    时间: 2011-10-24 22:34     标题: 前面的都是以3.2的帮助文档的学习心得

ggb的5.0  3D版本好卡。画了个球,立体感好差。3D版本,不舒服。不知道发布正式版本时会怎么样。
  4.2cas测试版本,在人性化方面有了明显的进步。我下了个5.0版本来玩。3D离想象中的距离太远了。
  我发现5.0的文本框可以接受更多的latex语言了:如\bold{abc}黑体,\text{abc}直体。在3.2是不接受这种设置文本格式的语句的。
有如花体字:\mathscr{ABC},3.2不接受,现在测试版5.0接受。老德文\mathfrac{abcABC},测试版也接受。但是色彩语句不接受\color{red}{"hello"}
5.0的流畅度不太好。正式版时应该会改进。
作者: myzam    时间: 2011-10-24 23:31     标题: 笔工具

ggb官方论坛地此:
http://www.geogebra.org/forum/viewforum.php?f=24
-----------------------
我用ggb5.0的笔工具,发现怎么也没发擦除。于是到官方论坛去看了看,发现有解说,翻译如下:
Are there Eraser for the pen tool?
笔工具有擦除吗?
Eraser -> Use Pentool with Right-Mouse-Button.
老外说:橡皮擦是用笔工具的鼠标右键按钮。
The input for the chat is not very handy: Would be nice to use Return to send a message. And changing the size of the input-box let the button move under the input-box.

Birgit
作者: myzam    时间: 2011-10-25 14:43

ggb 5.0的这个3D版本实用阶段还差的远。我又用3d版本画了个球,怎么看都没球的感觉。调整了参数还是没球的感觉。接着又画了个平面和直线相交,怎么看都没那种相交的感觉。看来这个3d版本的发布还早。毕竟要同时推出4.0,4.2,5.0还是快了点。5.0版本明显的不流畅。这久恼火了。ggb5.0的3d效果目前和gsp比有着质的差别。ggb4.2的平面部分做的挺不错。

作者: myzam    时间: 2011-10-25 21:19     标题: 加入按钮,一大进步

cas版本可以完成自定义按钮动画了。
有了按钮和输入框有了点编程的意思在里面了。在脚本中,用使用多个语句时,语句间要用分号断开。且要语句要换行。我试了半天,发现只把值通过按钮点击传递给了输入框,但是通过按钮抓取输入框的值没试成功。

附件: 自定义按钮动画cas.ggb (2011-10-25 21:19, 5.31 KB) / 下载次数 2558
http://develop.forums.netpad.net.cn/attachment.php?aid=14842&k=ca5b326942ed6a5859666fb82d687357&t=1749788112&sid=dQn9G4

附件: sequence命令.ggb (2011-10-25 21:33, 4.16 KB) / 下载次数 2545
http://develop.forums.netpad.net.cn/attachment.php?aid=14843&k=04d4de0a9bbd6073aa79f1f44492eb40&t=1749788112&sid=dQn9G4

附件: [cas版本] 用按钮同时创建输入框和函数图象.ggb (2011-10-25 22:24, 4.13 KB) / 下载次数 2734
http://develop.forums.netpad.net.cn/attachment.php?aid=14845&k=686787b18edf6fca49b7eb4f90acd50c&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-10-26 12:27

突发奇想:
  ggb这软件,如果是用过mathematica或maple的网友,一定会感到风格是模仿前两个软件。要掌握这个软件要学习好多命令。而且ggb很不成熟。要花很多时间才可以掌握这个不成熟的软件。花费同样的学时,差不多可以学会maple了,所以这个软件,弄着玩玩就算了。花这么的时间学这个ggb我还不如花同样的学时去学习maple。ggb没有gsp成熟。

这个图还可以吧,输入x^2,右键菜单画图,就ok了。这是maple做的。

以下是ggb 5.0测试版画的球(离实用阶段还差很远的距离,ggb的3d版本差不多只是一个概验阶段):

一下是maple和ggb的数列命令比对。

目前来看,对这个软件很失望。与介绍的相差太远。但愿正式版发布时有明显的进步。
作者: myzam    时间: 2011-10-31 15:01

maple 15制作的球和平面相切



作者: willer_chen    时间: 2011-10-31 20:37

可以看出楼主的数学功底很强,向你致敬
另请教下,求补集有命令吗?
作者: myzam    时间: 2011-10-31 21:42

45# willer_chen
我只是玩,其它的说不上。
补集命令没有。因为有差集命令:minus所以没必要再要补集合命令。补集是特殊的差集。
并集union,交集intersect,子集subset。这些命令不用记,拿英文字典差就可以了,就是英文单词。输入汉字,英文字典一翻译就知道这个命令了,再用用格式:?minus,回车就获得帮助,帮助详细的说明了怎么用。
   maple的帮助做的就是好。ggb的帮助是一路裸奔。毕竟是免费的东西。做成这样已经相当不错了。再提要求就过份了。
作者: myzam    时间: 2011-10-31 21:52

GGB迭代好难办:
   想用GGb迭代画一个二分树,想了半天也没想出怎么个迭代法,迭代好疼苦哦。
作者: myzam    时间: 2011-10-31 23:10

ggb语言如dos般松散:
1)在命令框输入sequence[2 x,x,1,5],却绘制了函数2x的图像,这不是作者的本意。x是系统默认的内建自变量。
2)在命令框输入a:=1,和输入a=1效果一样,这不是作者的本意
3)ellipse[],和hyperbola[],两命令一回事,这不是作者的本意。
作者: myzam    时间: 2011-11-1 22:27     标题: 编程

js脚本---来自于官网
JavaScript
JavaScript is a programming language used by many Internet technologies. Unlike GeoGebra Script, in Javascript the commands don't have to be executed as a simple sequence, but a control flow (if, while, for) can be used. For generic JavaScript you can find a nice tutorial on developer.mozilla.org. In GeoGebra, you can use special JavaScript methods which allow you to change the construction. These methods belong to ggbApplet object, which means that you call them as ggbApplet.method_name(parameter,..,parameter). For complete list of these methods see Reference:JavaScript.

js脚本(以下简称脚本)是一中程序语言,是许多互联网在使用的技术。不像GGB脚本,在js命令中不必执行一系列的命令序列,但是却可以进行流程控制(如if语句,whil语句,for语句,即条件语句,循环语句),对于常见的js脚本你可以找到很好的教程,在网站developer.mozilla.org,在ggb中,你能够使用特殊的js脚本,方法,它容许你改变结构(注:对象的实例的意思),这些方法是属于ggb对象的方法,它意为你可以调用他们,以如下的方式调用它们:ggbApplet.method_name(参数,参数,...,参数)。这些方法的完整列表,可以参考:JavaScript。
  我亲自用滑竿变量试过,的确可以使用js脚本编程,这里有一个例子:
1.创建一个滑竿变量a
2.打开滑竿a的属性菜单,把脚本设置为js脚本,不是ggb脚本。
3.输入如下语句:
var i(声明变量)
for(i=0,i<20,i++)(js的循环语句)
ggbApplet.evalCommand("A"+i+"=(a,-3*a)")(调用ggb的Applet对象的方法)
运行该程序后会生成一系列点。
  也就是说ggb可以进行编程。注意js脚本大小写敏感。
作者: myzam    时间: 2011-11-1 22:43

GeoGebra contains its own JavaScript engine. When exported as Dynamic Worksheet one can choose whether to use this engine or the one contained in browser applets. If you edit JavaScript in a HTML page, the ggbApplet variable will not be initialized, you have to initialize it e.g. using ggbApplet=document.applets[0]; first.

GGB包含了自己的js引擎。当我们输出动态工作表时,一种方式就是能够选择是使用这个引擎,还是使用浏览器的applet对象。如果你在编辑你的html文件中的js脚本,此时ggbApplet对象的变量将不被被初始化,首先,你不得不初始化它们。如,使用语句:ggbApplet=doucument.applets[0]。

Global JavaScript
In the Global JavaScript part of Scripting tab in Properties Dialog you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ggbOnInit(), which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.
全局js脚本
  在脚本标签的属性对话框中的全局js脚本部分,你可以定义一些函数,或做一些赋值,在你加载对象前,你也可以定义函数ggbInit(),它能够被自动的调研,在你加载对象前。函数ggbInit能够被注册的侦听器使用,如下面的例子:

Example:
function onAdd(name){
    alert("Object "+name+" was added.");
}

function ggbOnInit(){
    ggbApplet.registerAddListener("onAdd");
}
First we defined function onAdd that given a string shows a message depending on that string. After that, using the ggbOnInit function, we told GeoGebra to call this function whenever a new object is added. Once we reload our construction, function ggbOnInit will be called and since then, when user adds a point named e.g. A, message "Object A was added" will appear.
首先,我们定义函数onAdd,它提供一个依赖于字符串显示一段信息的字符串,
之后,当使用函数ggbInit时,我们告诉ggb无论是什么样的新对象,都调用这个函数。一旦我们再次加载我们的对象,函数ggbOnInit将被调用,从那时开始,当用户添加一个被命名的点,如A,信息“对象A被添加”将出现。

心得:1.今天知道了ggb可以编程。ggb内置的一个js对象为ggbApplet
2.ggb的Applet对象的方法调用格式为:
ggbApplet.method_name
方法evalCommand()挺管用的。
3.ggb的js脚本的全局函数为:ggbOnInit()这个函数是创建侦听器用的。

在后面我乱整了几个例子。

----------------------
http://wiki.geogebra.org/en/Scripting
作者: myzam    时间: 2011-11-1 23:37

js脚本创建动点

附件: 用js脚本创建动点.ggb (2011-11-1 23:37, 3.84 KB) / 下载次数 2837
http://develop.forums.netpad.net.cn/attachment.php?aid=14951&k=6d420ac466f9ffbe650c493e8a912f7e&t=1749788112&sid=dQn9G4

附件: 创建js函数获得动点.ggb (2011-11-1 23:41, 3.98 KB) / 下载次数 2732
http://develop.forums.netpad.net.cn/attachment.php?aid=14952&k=bde3e8212e0db6fd14d5f1177fba7c73&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-2 01:22

js侦听器
本实例是利用ggb的js对象ggbApplet的赋值命令方法:evalCommand创建对象,并改变对象的颜色。
关于脚本的学习地方,在当今网上你输入w3cschool,这个地方是最好的,html,js,vb这些脚本的学习棒。说这个地方好:1.可以网上练习,不抽象,2.讲的东西标准。没错误,含打印错误。但是有一点要注意,w3cshool是以网页为例来讲解的,事实上vb和js脚本可以独立运行。你只要把js脚本去掉网页代码,并保存为a.js就可以独立运行了。

附件: js侦听器.ggb (2011-11-2 01:22, 4.1 KB) / 下载次数 2878
http://develop.forums.netpad.net.cn/attachment.php?aid=14953&k=bff47895e8155515e61fdb2d64c822c9&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-2 19:09     标题: 记录器logger

复制自由对象的js脚本:
=============================
设t为一滑竿变量
v=2
ggbApplet.evalCommand("copyfreeobject[t],"+v+")")
===============================
注意v是数值变量,要与字符串相加,所以要加几个引号隔开它们,js是一种自己会进行数据类型转变的语言。数值+字符串会自动转变为字符串类型。挺智能的。
输入上面的脚本,拖动滑竿将会创建一串点,话不选滑竿,直接点击方向键也会产生点
作者: myzam    时间: 2011-11-2 23:22

循环语句
  今天去看了看,ggb的javascript说明:发现有不少方法,弄了个来学习。有循环语句就可以完成这样的迭代:a=a+1.我在想ggb的迭代要从脚本入手才行。
  另官方文件的原文说:工具可以当命令调用。我做了个中点工具来测试,的确如此。
js脚本比ggb脚本的功能多。我都有点糊涂了,这个软件是做几何的,还是做代数的,还是做编程的,糊涂,真的糊涂了。说是做几何的吧,用起来不是很方便,说是做代数的吧,到还有点像,说是做编程的吧,在对象名不知道的前提下要获取对象名都没办法。糊涂了。
  这个软件设计怪怪的,如:ggbApplet对象的方法:获取点A的坐标为:ggbApplet.getXcoord("A"),ggbApplet.getYcoord("A"),但是没有同时获取点的坐标的方法,这样就不行:ggbApplet.getCoords("A")。但是在设置点的坐标上只有方法:ggbApplet.setCoord("A",X1,Y1)却没有单独设置x,y坐标的方法,为什么这么怪怪的呢?没想明白。
另外看到了2个清除痕迹的的办法:
第一个是命令:zoomin[1]或zoomout[1]
第二个是js方法:ggbApplet.refreshViews()
另还看到了一个重新加载命令的方法:ggbApplet.reset()
zoomin,zoomout是第屏幕缩放,几何画板的滚屏就是对屏幕操作。,而dilate是对几何元素缩放。

  我摆弄了这么久,还是对ggb做迭代有了一点点个思路。就是想从循环语句入手,结合工具去完成。不着急,俺慢慢的来。反正是玩。快也是玩,慢也是玩。

附件: 循环语句.ggb (2011-11-2 23:22, 4.16 KB) / 下载次数 2809
http://develop.forums.netpad.net.cn/attachment.php?aid=14956&k=b854069caf054ada3080e2e39e179918&t=1749788112&sid=dQn9G4

附件: 随机10线.ggb (2011-11-2 23:25, 10.52 KB) / 下载次数 2958
http://develop.forums.netpad.net.cn/attachment.php?aid=14957&k=dffc4b48f1a243344e3dd6bf9c118c8a&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-3 00:02

用循环语句可以完成跌迭代,但是好累,这和编程没什么差别。没几何画板方便。几何画板的迭代很傻瓜。
对了只用命令框是跌代不了的,因为命令框中无法完成如此的迭代:a=a+1,但循环语句可以:
1.循环语句1
var a=0
for (i=0;i<10;i=i+1){
  a=a+1
}
2.循环语句2
a=0
do{
a=a+1
}
3.循环语句3
a=0
do{
a=a+1
}
while(a<10)
4.上面的循环语句结合自定义工具,官方说,自定义工具可以像命令那样调用。比如说有个工具叫ha
这样即要用到语句:
ggbApplet.evalCommand(“ha[]”)
把这个语句和循环语句结合就可以完成几何画板中的迭代。我只是有了这个思路,但是我还没验证过。但是我觉得这样做可以。
到现在ggb我基本看了过大概:工具栏,命令,脚本,电子表格。ggb主要就是看这4部分。  在   ggb的js脚本中,对象ggbApplet的方法主要是两类:一类是set方法,一类是get方法。其消息框只有2个alert(),prompt(),,而普通js脚本的confirm(),这些信息框都失效。俺第js脚本也是今天才看的。未知的东西太多。
计算sin(1),如对点A编程即可,双击A就可以弹出值来。
d=Math.sin(1)
alert(String(d))
但是怪了:
var d=new Math()
t=d.sin(1)
alert(String(t))
这也是标准的js编程,怪了报错。
这句又对了:
t=Math.sin(1)
prompt(String(t))
作者: myzam    时间: 2011-11-3 00:52

弹出提示框:prompt
1.创建一个点A
2.编程:
t=Math.sin(1)

if(prompt(String(t))=="hello")   {
alert("true")
}
else {
alert("false")
}
3.点击A点,弹出提示框,在框中输入hello,与输入其他的字弹出的内容不同。,点击确定和取消将再次弹出不同的对话框。
注:Math对象是内建数学对象。引用数学函数就需要这个对象。Data是内建的日期对象。
作者: myzam    时间: 2011-11-3 08:52     标题: 正解ggb迭代

分享我的ggb的迭代思想 ,我算是想明白了
方法如下:
1.对点A,B创建一个以A为中心的旋转,如旋转30度
2.定制工具,取名交hello。这个工具可以如命令一样的调用,方法如下,你再命令框中(官方叫input box输入框)输入命令:hello[D,C],这时C就绕D旋转了30度。
3.编程:
利用循环语句编程,比如循环次数为n(这就是迭代次数),在循环语句中调用工具hello[],便可以完成迭代。
总结:定制工具+循环语句=迭代
ggb的迭代功能是极其强大的。
作者: myzam    时间: 2011-11-3 12:31     标题: 分享我的编程迭代思路

ggb中的一个旋转迭代的例子:
   刚开始摸ggb时,我相信大多数人也和我一样,翻完了ggb也没找到类似于几何画板的迭代功能,于是说,ggb迭代不行。但是随着对这个软件的了解,发现,它的迭代思路和几何画板不同,它是采用编程的思路或电子表格的思路去进行递推的,具体的说就是如下:

命令+循环语句=迭代
这里的命令包含两类命令,一类是自定义命令,利用工具打造。一类是系统自动命令。我这里所给的例子就是用自定义命令hello[A,B]完成的。
终于明白了ggb中如何迭代,迭代功能很强,只是要编程,操作上没有几何画板方便。
要用js脚本编程。迭代没什么问题。如果把语句用熟悉的话,迭代非常非常的强大
开始我以为迭代功能比几何画板差,现在我要说恰好相反,迭代功能比几何画板强n多,比如可以利用消息框(官网上看到一个位alert(),我测试发现还可以用提示框prompt())随时让迭代在想要停的地方停下在,给你选择的余地,只是操作上太专业了。不懂js脚本,有点傻眼,当然电子表格可以作为替代品。还有就是编程时,调试程序不方便。如果在弹出框中加上一个调试按钮就好了。还有就是输入代码不够智能。另外电子表格也也有递推的功能。也就是说可以用电子表格代替循环语句编程。让迭代傻瓜一点。在用电子表格迭代时,电子表格的地位相当于是循环语句的地位。
  我翻遍了官网的手册,发现要跌推就只有这两种办法了。电子表格的操作和微软的excel的操作基本是一模一样。功能,记号都类似。只是功能比excel少的多,也没必要做那么多功能。
  最希望将来ggb能提供一份好的手册。

附件: ggb中的迭代.ggb (2011-11-3 12:31, 2.97 KB) / 下载次数 2985
http://develop.forums.netpad.net.cn/attachment.php?aid=14960&k=6b4fafc5fb8aee650e33b2a5d0d36ab4&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-3 16:56

替代产品:框选表格电子表格操作(spreadsheet)---鼠标拖的技巧
1.在表格的B1中输入1,B2中输入2
2.在表格的B3中输入表达式 :B1*B3
3.选中表格的B1,B2,B3,接着向下拖放,就可以完成自动计算。和excel的操作是一样的。
4.如果是框选两列,进行拖操作,则可以点开增加点的列表,这时会有图像产生。
5.也就是说这种框选法就替代了编程里面的循环语句。
作者: myzam    时间: 2011-11-3 22:44

用表格迭代:
表格迭代的方法:
1.在平面内描一个点叫A
2.进入命令框,输入命令:
fillCells[A1,{A}],回车,在表格中的A1单元格中就创建了一个数据对象,
形如(x,y).
3.在单元格A2中输入:A1+(0.5,0.2),并回车,这时在A2单元格中就创建了新的数据对象。
4.框选单元格A1,A2
5.右键菜单,选中增加点集,这时在平面内就出现了2个点:A1点和A2点。
6.接着单次点选A1
7.按下ctrl键,再点选A2.
8向下拖动鼠标。这时就进行了数据迭代,同时平面内的点也跟着进行了跌带。
注意:表格的拖选实际上是在运行循环语句。
对表格的操作有两种:
1.鼠标单选,可以配合ctrl键。迭代时要用的是鼠标单选。
2.鼠标框选

3.表格里面可以放方程的,这就为表格迭代提供了广阔的天地。还有就是命令fillCells[cells,{object}]
object就是对象的意思,对象就多了。你想如果把表格迭代和编程结合,迭代的功能有多强大!?--------------------------------------------------------------
到此ggb的迭代方法已经完全建立起来了。
剩下的事情就是去做出精美的图形。
表格法迭代,做的文件比编程的大的多。看上楼的文件和这里的文件就知道了。

附件: 表格迭代实例.ggb (2011-11-3 22:44, 8.81 KB) / 下载次数 3020
http://develop.forums.netpad.net.cn/attachment.php?aid=14967&k=57d3678019cd2106afa16791269dfdd3&t=1749788112&sid=dQn9G4

附件: 表格迭代直线.ggb (2011-11-3 23:18, 5.55 KB) / 下载次数 2974
http://develop.forums.netpad.net.cn/attachment.php?aid=14968&k=3372f4b726ebd4e4044073a56372967e&t=1749788112&sid=dQn9G4

附件: 表格迭代圆.ggb (2011-11-3 23:23, 10.56 KB) / 下载次数 2933
http://develop.forums.netpad.net.cn/attachment.php?aid=14969&k=b3be3db949c7fca28ba065f09d2b2352&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-4 00:55     标题: 表格中如何用命令进行迭代?

表格迭代分两种:
一是:用表格本身的四则运算迭代,这种迭代不用复制命令,直接拖选可以完成迭代
二是:用命令进行递推,这种情况必须把命令和数据一起进行迭代,也就说说要在数据的旁边复制出命令,然后让数据和命令(即递推关系)一起迭代。


在表格中,通过复制命令完成迭代
简单的讲就是迭代时命令和迭代一起伴行。如果不这样做,几何变换就在表格中实现不了迭代。
即横向迭代一次,完成表格命令的复制
接着选中两者,进行纵向迭代。这样命令和数据一起迭代,最终实现几何旋转迭代。
实例如下:

附件: [迭代与命令同行] 表格迭代旋转30度.ggb (2011-11-4 00:55, 3.1 KB) / 下载次数 2423
http://develop.forums.netpad.net.cn/attachment.php?aid=14970&k=a175bf498ad1cc024ccd5a2ba9e056a1&t=1749788112&sid=dQn9G4
作者: room901    时间: 2011-11-4 11:39

太高深了,看不懂啊。
作者: myzam    时间: 2011-11-4 17:16

62# room901


这软件就是没几何画板浅显。我第一天看这个软件时就说过:ggb不可能像几何画板那一普及的。今天我还是这么说。因为如果只是用它的画图功能,ggb超不过几何画板。如果要用ggb的代数功能能,命令又太多。如果要用它的编程功能,那就更陌生。所以ggb就目前的模式,要普及难。ggb的脚本又不带循环语句,只有js脚本有。所以ggb的脚本语言就要去学校js语言。因此我不知道ggb的定位是什么。网上说ggb获得了大奖,以此来说明ggb很行,这让我想起了教师行的一个经典笑话:
   “奉天承运,皇帝诏曰,封-----你为骨干教师”,从此就自以为是,以为自己真很骨干了。
作者: myzam    时间: 2011-11-4 23:27

如何在电子表格中记录命令:
下面以在表格中记录rotate[]命令为例:
1.表格的A1,什么都不要输入,让其为空
2.在A2中输入rotate[A1,30度]
这时表格的A2中显示的就是命令,而不是数字。这种记录下来的命令具有递推功能。通过拖放可以把命令的规律传递给其它的数据。
3.表格的四则运算不用记录,可以自动执行。
4.命令trasnlate[](平移),本质上是数在做加法运算,所以不用在表格中记录,它可以自动复制到其它数据上去。
作者: myzam    时间: 2011-11-5 17:56

表格法迭代画线段实例:
1.横向拖动,复制点变换的命令
2。横向拖动复制线段变换的命令
3.纵向拖动,进行线段迭代。
看下面的实例就清楚了。

附件: 跌代画线段.ggb (2011-11-5 17:56, 8.04 KB) / 下载次数 2565
http://develop.forums.netpad.net.cn/attachment.php?aid=15002&k=8bec0542b69198c0dca7a10e2e55531e&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-5 18:20     标题: 如何在单元格中输入命令

表格中输入迭代指令,以迭代线段。这可以算是我的表格迭代法的学习总结吧。
1.编程迭代,对绝大部分人来说是一种不可接受的方法。
2.转而寻找迭代的替代产品----这就是表格迭代,表格迭代可以替代编程迭代。
3.表格迭代关键是要注意:跌迭代时一定要把命令一起迭代。
4.如果命令是有四则运算构成的命令,则可以直接迭代。
5.如何手工输入命令:
如要在表格中输入rotate[A.30度],我们不希望在表格中产生数值,而希望表格记录这个命令,办法如下:
首先需要一个空单元格,如为A10,这个单元格是空的。
其次,在选定一个单元格如A100,在A100中输入:"rotate[A10,30度]"(加个英文引号,有时不加也可以。我学习ggb的js脚本发现,ggb的对象的方法,中输入参数都要用单,或双引号),这样就在A100中记录下了命令。这个命令就是你的递推规律。跌代就靠的是这个命令。
另右键菜单的记录到表格是用来追踪点的痕迹的命令,与这里提到的迭代无关。
此外,也可以用横向拖动一格,复制命令的的方法替代手工输入。
还有就是表格可以接受命令,但不接受语句,如输输入:do... while语句表格无法识别。
6.表格迭代的足限:
第一,做成的ggb文件比编程出来的文件大
第二,如,我要跌代1000次,难道我要去拖地表格到1000行的位置吗?
这个问题我还没找到解决的办法。
ggb的资料太少了,官方论坛,官方手册也是空空的。下面的动画只控制了旋转角,跌代次数用表格控制还在研究中。编程控制迭代次数显然没丝毫的问题。
学习ggb比学习gsp困难n倍,没资料,就连官方手册都基本是裸奔。这一点真的远不如gsp做的好。所以学习这个ggb,别去指望找资料,自己反复的研读官方手册吧。包括去官网反复看。
经测试,感觉迭代和几何画板一样,只能直接对点作用。也就是说是通过对点的控制去完成迭代的。
不是所有命令都可以表格迭代的,如polygon[],多边形命令就不能用了迭代。
-----------------------------
我也是在摸索中,各位网友你有好的经验望跟帖,别保守。如有错误,望指出。我只是在学习。不是什么什么教程哈。贴出来就是交流之意。不代表我说的是正确的。



附件: 表格中手工输入迭代指令跌代线段.ggb (2011-11-5 18:20, 7.37 KB) / 下载次数 2616
http://develop.forums.netpad.net.cn/attachment.php?aid=15003&k=af87467dc4a609002794e3bf643415b4&t=1749788112&sid=dQn9G4

附件: 迭代三角形.ggb (2011-11-5 21:41, 11.11 KB) / 下载次数 2401
http://develop.forums.netpad.net.cn/attachment.php?aid=15005&k=e969fae61ff0ff410083ba0bb2c3c2aa&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-6 03:36

function ggbOnInit() {ggbApplet.rigisterAddLisener("triangle()")}
function triangle(){
n0=ggbApplet.getValue("n")
t0=ggbApplet.getValue("t")
if (ggbApplet.exists("A")&&ggbApplet.exists("B")&&ggbApplet.exists("C")){
  cmd1="polygon[A,B,C]"
  ggbApplet.evalCommand(cmd1)
  for(i=0;i<n0;i++){
     cmd2="rotate["+cmd1+","+t0+"]"
     ggbApplet.evalCommand(cmd2)
     cmd1=cmd2
  }
}
else alert("请先画出A,B,C三点")
}
---------------------------------------
上面是迭代三角形的代码。
下面是源文件

附件: 迭代三角形.ggb (2011-11-6 03:36, 11.11 KB) / 下载次数 2401
http://develop.forums.netpad.net.cn/attachment.php?aid=15006&k=9620704733c0835bbdd1a6ff86075814&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-6 20:41

循环语句练习:
等分圆周
其实就是等差数列的应用
学习到今天,对ggb算是找到一点 点感觉了。这东西不夹点循环语句还真不好办事。

突然想起一个问题:
上面我也提到过,如果用表格迭代,假如我要跌代5000次,不至于夸张的要把表格拖动到5000行吧。
有没有什么办法解决呢?
1.表格迭代比编程迭代直观。并且表格中填入的命令是字符串。
2.因此我想,是不是可以这样来构造迭代:在表格里面填写基本的迭代数剧,用编程的方式去填表。编写填表的程序要简单的多。因为数据是一个一个的从上往下填,这种程序还是比较容易实现的,ggb提供了基本的填表,取表命令。我想这样做应该是可以的。
3.抛开表格,只用编程去完成迭代,我总是觉得效率很低下。因此是不是可以考虑双向结合去解决迭代问题呢?同样抛开编程,只用表格迭代,是不是工作显得有点毛躁。过于复杂的迭代可能还不顺手。

附件: 闪烁的等分圆周(编程练习).ggb (2011-11-6 20:47, 11.03 KB) / 下载次数 2458
http://develop.forums.netpad.net.cn/attachment.php?aid=15018&k=14267de0f4e25942a869df1bf22689a2&t=1749788112&sid=dQn9G4

附件: 表格迭代 等分圆周.ggb (2011-11-6 21:25, 7.22 KB) / 下载次数 2353
http://develop.forums.netpad.net.cn/attachment.php?aid=15020&k=3ed62521e28c540ce2accbc88422a529&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-6 22:20

void setLayer(String objName)        3.2        Sets the layer of the object
-----------------------------------------------------------
官方的javascript手册也有错误,上面那句就是错的。应为
void setLayer(String objName,integer)        3.2        Sets the layer of the object
意思是设置某对象位于第几层
以下是官网地此
(错误源)http://wiki.geogebra.org/en/Reference:JavaScript
作者: myzam    时间: 2011-11-7 12:16

如何向电子表格填值,取值?用ggb自带的命令,麻烦,多余。
你只要在命令框中输入:
A1=123,
A2="HELLOW"
就完成了填值。
要取值如下:
T=A1
U=A2
这就完成了填值,和取值。并且在js脚本中这种用法也是对的。
命令成为了多余的东西。
作者: myzam    时间: 2011-11-7 14:26

对表格编程的实验:
用循环语句对表格编程,结果是可以进行,但是效果不好,就一个字"KA".
我才迭代10次就跑不动了。可以这样来总结:思路是美好的,结果是失望的。
这个软件本身就是有很好的思路,但是问题也太多。
由此可以看到:做迭代还是要分开做,表格跌代归表格迭代,编程迭代归编程迭代,一结合就是ka。
看来用表格迭代当你要迭代5000次时,只有辛苦你拖动到5000行的位置了。要不就编程。
下面是实验作品:
代码如下:
懂编程的人,一看就知道这是一段很简单的迭代,这样的迭代都跑不动,就不能不说这个ggb软件本身有问题了:
n0=ggbApplet.getValue("n")
ggbApplet.evalCommand("A1=A")
t0=2*Math.PI/n0
for(i=1;i<100;i++){
  ggbApplet.deleteObject("A"+(i+1))
}
for(i=1;i<n0;i++){
  str2=("A"+(i+1)+"=rotate[A"+i+","+t0+"]")
  ggbApplet.evalCommand(str2)
}
这个软件浪费了我一中午的时间,扯谈。
n为滑竿参数,我设置的最大值是10。真他M扫兴。
最后测试了脚本,脚本不可以做出工具的。

附件: 对表格编程.ggb (2011-11-7 14:29, 6.38 KB) / 下载次数 2099
http://develop.forums.netpad.net.cn/attachment.php?aid=15032&k=cf3c7b835241d32282187bf965a40761&t=1749788112&sid=dQn9G4
作者: xfzch    时间: 2011-11-7 20:38

佩服myzam兄的专研和分享精神!不过,看了帖子后,我对ggb产生了一点点恐惧
作者: myzam    时间: 2011-11-7 22:24

72# xfzch
其实我也也不熟悉这个软件。我只是抱着玩的心态看看这个软件。呵呵。
这个软件的确不如几何画板好掌握。在几何的使用上不如几何画板方便。
几何画板的深度迭代真的很好用,ggb的深度迭代,就没几何画板方便哦。
作者: myzam    时间: 2011-11-8 00:30

编程填表---实现迭代
    今天弄了一中午,希望编程对表格填表,但是失败了,心里总在想思路不会有问题啊,怎么会失败呢,于是晚上有探索,终就成功,于是乎,贴出分享。
    我认为是最恰当的思路,因为有形,这样编程的难度就大幅度的降低,从而提高了编程的效率,编程填表,我们只需要掌握如何把数据输入到表格,这一点请不要用ggb提共那几个古怪的填表命令,事实上这么做就可以了:A1=3,数据就被填到了单元格A1中,而命令a=A1,单元格是数据就送个了变量a,而且有图像的画,还会自动产生图像。系统提共的填表,取表命令,怪怪的。对表格编程就是发现表格数据有图像的时候会自动生成图像。此外命令填入表格的方法是:用双引号,以就是说命令是以字符串的方式存放在表格里面的,本来js中单双引号是一回事,但是官网明确告诉ggb只是部分支持js,测试的结果是ggb只只把双引号引起来的角字符串。单引号的无法识别。
经过我反复的探索,终于成功的采用编程的方式,把数据填入到了表格,
最后实现了编程表格迭代

下面以正n边形的编程为例,依次来说明如何迭代。首先贴出代码,并注解在后面:
n0=ggbApplet.getValue("n")
/*抓取滑竿参数值为n0*/
for(i=1;i<100;i++){
  ggbApplet.deleteObject("A"+i)
}
/*采用循环语句去掉名称为A1,A2,...A100的点,使画面得以及时更新*/
ggbApplet.evalCommand("A1=A")
/*A1=A的意思是平面内,我先画了一个点A,把这个点的坐标送到表格的单元格A1中去,不能用右键记录到表格这种方式完成,
但是这句命令必须使用方法evalCommad才可以得以执行*/
t0=2*Math.PI/n0  /*内部只能用弧度官方文件明确告诉内部是以弧度制运算的,测试的结果也不能写成360度/n0,报错,
这是引用javascript的Math类的方法,获得圆周率,
因为ggb本身在编程时输入不了pi。
*/
for(i=1;i<=n0;i++){

  cmd="A"+(i+1)+"=rotate["+"A"+i+","+t0+"]"/*意思是A2=rotate[A1,t0],A3=rotate[A2,t0],表示递推字符串
以就是把记录到表格中的点A1旋转t0,并把值送到表格的A2单元格中,等等。
*/
   ggbApplet.evalCommand(cmd)/*执行上面的递推字符串表达的命令*/
  cmd2="B"+i+"=segment[A"+i+","+"A"+(i+1)+"]"
//我想执行的命令,类型字符串,意思是如:B2=segment[A1,A2],连接单元格A1,A2组成线段,并把这个值送到单元格B2中存放。注意电子表格的
A列,放的都是点,而B列我用来放线段,这是命令要通过下面的ggb的ggbApplet对象的方法才可以实现我的希望。*/
ggbApplet.evalCommand(cmd2)
/*实现字符串命令cmd2*/
   ggbApplet.setLabelVisible("A"+(i+1),false)
/*设置几何视区内的点A1,A2,... 的标签不可见,这是为了画面的整洁*/
}
ggbApplet.setLabelVisible("A"+1,false)
/*A1这个点在上面的循环语句中隐藏不了标签,所以最后补上了这句。*/
成功的填表法编程思路。我认为是很好的思路。.ggb (9.76 KB)
填表法编程成功后,那么如果要跌代5000次,就不比夸张的把表格拖动到第5000行的位置了。这样理论上就解决了控制迭代次数操作的问题。
另有个地方要注意:如果有一滑竿叫a
1.如果是在表格中要旋转A1,a度,这这么输入:"A2=rotate[A1,a]", 直接使用滑竿名字
2.如果是编程,这个程序是送值到表格,则滑竿值直接引滑竿名就是可以了
3.如你是想用滑竿值进行其它的非表格计算,那就得用方法ggbApplet.getValue(),把这个滑竿a的值抓出来,因为a在普通的js中代表对象,值是它的属性。
4.以就是说表格是利用对象进行操作的,而普通的js中要用值属性才可以计算。
也许有的朋友会奇怪,为什么我老研究旋转命令,这有两个原因,其一,我对ggb 并不熟悉,其二,要探索其用法,就探索旋转命令就够了,其余的以此类推。从简单的入手才最容易搞明白怎么玩着个ggb。
其三:官方也搞的是裸奔。毕竟是免费的,你难道还希望免费为你像几何画板那样做个详细的说明文档给你吗?让你免费这么弄你干吗?


附件: [正n边形] 成功的填表法编程思路。我认为是很好的思路。.ggb (2011-11-8 00:31, 9.76 KB) / 下载次数 3146
http://develop.forums.netpad.net.cn/attachment.php?aid=15043&k=f076fe9c638247efdc2f3ee7084c13c1&t=1749788112&sid=dQn9G4
作者: room901    时间: 2011-11-8 09:54

会用的就很好用。
作者: myzam    时间: 2011-11-8 13:32


迭代探索
完整的二分树,应该是2个循环嵌套能够完成,第n级顶点为2^n个,第n+1级的顶点为上级顶点的2倍。找时间试试。看能否成功。还是几何画板操作方便,ggb可行,但不方便。也许我没找到好的方法把。表格迭代做点简单的可以,复杂的还是要编程。
做到这里,我不断的问自己ggb能普及吗?!
1.如果是画画图,几何画板就够了
2.如果要迭代几何画板的方便
3.而ggb要不断的输入命令,它的自带工具点的旋转工具用起来也不习惯,因为点旋转后长度边了,而命令rotate[], 旋转后保持长度不变,这合乎习惯。不明白为啥要这样设计了。
4.把ggb来当js脚本的学习器到是不错的,用来玩迭代,就把小事变成大事来整了。
我个人的观点,就目前状况来看ggb当做几何画板的补充到是不错的。代替几何画板不知从何处代替。
5.看了ggb的cas测试版,基本和ggb4.0差不多
6.看了ggb的3d测试版,你用了就伤心。
7.几何画板在大陆火,是因为它容易操作,而且让人感到离数学很近,玩几何画板,让人感到你不是在玩软件,而是在做数学题,玩ggb就没这种感觉。玩ggb到像是在教人学习编程。编程不是人人都喜欢的。对少数的编程高手来讲,玩着个软件到是不错的。

8.我把我玩ggb的感觉写出来,让大家知道这个软件是怎么回事,让网友自己去选择自己喜欢的软件玩。
9.ggb不明白的东西太多了,比如,在4.0版本上编辑脚本,脚本稍多一点,滚动条就不滚动,被挡住的脚本就只能猜着往里面输入。ggb是一个bug“泵”多的软件,4.0的bug都没处理好,就在推4.02,4.02还没整清楚,就在推5.0版本,看来作者也是一个很随意的教授,或者就是利用业余时间弄弄吧了,这个应该不是作者的主业。还有ggb的帮助文档,如果还可以精简的话,我估计作者还会给你精简。

附件: 迭代探索.ggb (2011-11-8 13:32, 6.7 KB) / 下载次数 2330
http://develop.forums.netpad.net.cn/attachment.php?aid=15053&k=61888d2cffabd46dba00e8335369d35f&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-11-9 21:30

创建列表list的脚本:
arr=new Array()
for(i=0;i<4;i++){

t=arr.push(i)
}

ggbApplet.evalCommand("{"+arr+","+t+"}")
我拿着命令,想用循环语句创建列表,没头绪,结果是弄了js的数组才把这个列表弄出来。
----------------------
访问上述列表
for(i in arr){
ggbApplet.evalCommand(arr[i])
}
-------或
for(i in arr){
ggbApplet.evalCommand("element[list100,"+i+"]")
}
----------------------输入矩阵的js代码
arr=[];arr1=[]
for(i=0;i<3;i++){
  for(j=0;j<4;j++){
    arr1[j]=i+""+j
  }
arr[i]="{"+arr1+"}"
}
ggbApplet.evalCommand("s={"+arr+"}")
----ggb的列表,整了半天,发现只有用js的数组才好输入。
作者: hongbc    时间: 2011-11-10 14:34

几何画板的魅力是什么都没有
同意楼主的见解,玩画板说是在创造,因而我感觉几何画板其实是数学学习的实验室,在玩中学,在学中玩。
作者: myzam    时间: 2011-11-12 17:17     标题: 迭代几何画板中的那种二分树






------------------------------------
由于ggb本身是一个到处是bug的软件。在输入脚本时,下面的脚本在脚本输入框中放不下,所以只能拿记事本编辑,编辑好在复制到ggb的脚本编辑框中去,由于ggb的脚本编辑器bug的很,所以脚本的语句就只有一个挨一个挤在一起了。不好看也不好读,如果换行写,那就更装不下,作者太不严谨了。
。无法理解ggb 的作者,连4.0,4.09的脚本编辑框都没弄好,去弄什么5.0嘛,不可理解。从理论上来讲ggb可以做一切迭代,但是要编程,我做不出来是因为我编不来有的程序,但不代表ggb不能。ggb有两种脚本GGB脚本和js脚本,ggb脚本干不了什么事,基本就是一个摆设,因为ggb脚本连循环语句都没有。要干事情就得用js脚本。迭代的流畅度明显不如几何画板。看来网上说的:java不适合做数学问题是真的。要做数学问题还是要用c语言。我相信网上的这一说。
还有ggb的脚步框中输入脚本时最好加分号断句,ggb不严谨,不加分号ggb的bug出来了,你都不知道错在哪里。我从没见过如此不严谨的软件,这是ggb是第一个。我怀疑ggb是不是那个大学生写的一篇毕业论文啊?二分树要用脚本编程才可以做出来,脚本如下:
n0=ggbApplet.getValue("n");
for(i=0;i<Math.pow(2,n0+1);i++){  
  for(j=0;j<Math.pow(2,n0+1);j++){ggbApplet.deleteObject("A_{"+i+j+"}")
  }
};
ggbApplet.evalCommand("A_{00}=(1,3)");
ggbApplet.evalCommand("A=(1,0)");
s0="rdkt[A,A_{00},k,t]" ;
ggbApplet.evalCommand(s0);
ggbApplet.renameObject("B","A_{10}");
ggbApplet.renameObject("C","A_{11}");
for(i=0;i<n0;i++){
  for(j=0;j<Math.pow(2,i);j++){
      s1="A_"+"{"+i+j+"}";    c0="A_"+"{"+(i+1)+2*j+"}";      c1="A_"+"{"+(i+1)+(2*j+1)+"}"  ;
      cmd1="rdkt["+s1+","+c0+",k,t]";
      ggbApplet.evalCommand(cmd1);  ggbApplet.renameObject("B","A_{"+(i+2)+4*j+"}");
      ggbApplet.renameObject("C","A_{"+(i+2)+(4*j+1)+"}");
      cmd2="rdkt["+s1+","+c1+",k,t]";
      ggbApplet.evalCommand(cmd2);ggbApplet.renameObject("B","A_{"+(i+2)+(4*j+2)+"}");
      ggbApplet.renameObject("C","A_{"+(i+2)+(4*j+3)+"}");
  }
}
for(i=0;i<Math.pow(2,n0+1);i++){  
   for(j=0;j<Math.pow(2,n0+1);j++){      
     ggbApplet.setLabelVisible("A_"+"{"+i+j+"}",false);
   }   
}

/*请别超过7次迭代,否则卡死你娃*/在ggb的脚本框就没这么好看了,那里将挤在一起。
体会:ggb中编程对点的命名不方便,要是有一个命名函数或方法就好了。上面的编程主要是对点的命名编程。rdkt[点,中心,比,角]---是自定义工具。
ggb文件如下:
咱们业余选手玩这个软件太费力了,这个软件是给那些编程高手设计的。要像几何画板那样火,难,难,难。估计好都网友看了上面的代码后,跟本就不会在去学这个ggb了。因为太难学会了。学这个软件的门槛太高了:
1.要认识点英文
2.要有学点js脚本。
编程这东西不是人人都喜欢的。不过这个软件把它作为学习js脚本的练习器到可以胜任。ggb 不妨改叫js练习器吧,这样叫更恰当的能反映这个软件的特点。
在网上查了一下,网上说java处理数学问题并不擅长,java主要是在互联网上交互。数学软件一般都是c语言编的,网上说c的效率是非常高的。俺们对java是外行,也只是在网上看的,对不对俺不清楚。
期望:
  ggb的架构是不错的,如果在操作的方便性上加以改进,不要在这么激进的去推新版本,工作做的踏实一点,老老实实的把4.0做好,把现在的bug清理掉,你想,我们这种非编程专业的人都可以明显的感受ggb的bug,那些专业人士就更能发现ggb的问题了,还是几何画板踏实,稳步前进。在操作的方便性上好好的改进一下,这个软件就有前途,否则就只能是少数人的玩物。
后记:
  如果把一个软件按时间划分,可以划分为幼年,青年,成年。那么ggb还是在幼年期,但是gsp已经步入了成年期。

附件: 二分树.ggb (2011-11-12 18:56, 5.3 KB) / 下载次数 2232
http://develop.forums.netpad.net.cn/attachment.php?aid=15145&k=822fa7a022d8d8f7e751ecc6f19b927c&t=1749788112&sid=dQn9G4
作者: myzam    时间: 2011-12-18 09:57

GeoGbra今天已经升级到了4.0.16.0版本。
遗憾的是bug:脚本输入框无法调整大小依然没有改进。
以就是说脚本输入框和原来一样一点改进都没有。这样通过脚本进行迭代依然和原来一样极不方便。
GeoGbra你什么时候才可以长大。再等等吧。
本来我想到官方的论坛注册,反映一下,但是没发注册。遗憾。等吧。等到GeoGbra成熟了再来玩这个软件吧。
作者: aslsf    时间: 2011-12-23 15:50

jingc 精彩 无私的工享 向你学习致敬
作者: shdxinxian    时间: 2012-1-8 14:16

各位大师,看了以上的讨论,想学ggb的我,有点想打退堂鼓了。
真的是这样的吗?
作者: myzam    时间: 2012-1-11 12:25

82# shdxinxian


我这么说,不知道对不对:
  学习ggb入门并不难(如,画个园,画画线),但是要想达到几何画板那样的水平,就必须要学习js脚本语言。如果你喜欢编程呢,学习ggb也会觉得有乐趣,有了乐趣你就不再觉得难了。兴趣是最好的老师。所以在学习ggb的同时,你应该同时去学习JavaScript或jscript脚本语言。这两种脚本语言差不多。另外你学习ggb必须要有心理准备,这个软件有许多不如意的地方,比竟是新出来的,而且是用java语言编写的。有点编程常识的人都知道,c语言的效率才高,许多有名的数学软件都是用c语言编的。用java编写的数学软件,你很难遇到。但ggb是。还有就是ggb的脚本输入框是很难用的,不完备。客观的讲ggb的不完备应该是暂时的,若干年后会完备的。如果ggb是收费软件完备的可能会快一点。总之ggb的学习是和编程的学习联系在一块的。学习ggb 就得学习编程。难与不难就看你有没有兴趣了。有兴趣就不会觉得难!
作者: myzam    时间: 2012-2-7 18:09

为了学习geogbra,这里提供
javascript脚本学习入门最好的地方:
http://www.w3cschool.cn/js_functions.html
这个地此的学习,是以IE为宿主讲解的。其实js脚本可以脱离开网页运行。
作者: yy0509    时间: 2012-3-29 23:51

从头到尾看了一遍,收获多多,谢谢了。
作者: un8905    时间: 2012-6-18 10:55

谢谢了...........
作者: ccand91cc    时间: 2013-4-6 20:16

说的很有道理!
作者: daishan    时间: 2016-8-9 07:25

受益匪浅,谢谢楼主的分享
作者: 大兵哥    时间: 2019-3-19 12:43

对于指令已经有老师做出一个html小工具查询,打开然后浏览器收藏就可以向网页一样打开http://www.dstang.com/books_dstang/geogebra_commands.html




欢迎光临 inRm3D: 画板论坛 (http://develop.forums.netpad.net.cn/) Powered by Discuz! 7.0.0