This activity is also part of one or more other Books. Modifications will be visible in all these Books. Do you want to modify the original activity or create your own copy for this Book instead?
This activity was created by '{$1}'. Do you want to modify the original activity or create your own copy instead?
This activity was created by '{$1}' and you lack the permission to edit it. Do you want to create your own copy instead and add it to the book?
This is in essence an advanced GeoGebra manual, focusing on building high quality GG applets, suitable for bigger projects like textbook production etc. The aim is to show a large sampling of useful, tips, tricks and techniques that you can learn in order to level up your GeoGebra skills. It is produced by the Swedish GeoGebra Institute and we welcome contributions.
If you wish to contribute to this book, then please send me an email at jonas.hall@norrtalje.se and I will make you a member of the editorial group.
Table of Contents
Introduction & Contact info
Using this book
Welcome to the GeoGebra Builders Handbook
Contact Information for GeoGebra Builders' Handbook
Initial Help Resources
Adding material to this GeoGebra Book
Using the templates to add new materials
Template page for GeoGebra Builders Handbook
Template page without comments: Moving one point with another
Template GGB-file for constructions
To Do!
Teleportation through Multiple Windows
Why not to use multiple windows in your applets
Arming up with Action Tools
Action Tools Overview
Slytherine Sliders
Logarithmic Sliders
Creating a slider based on values from a list
Controlling sliders with sliders
Having two sliders coarse/fine control the same value
Truth, Boolean Variables and Check boxes
Copy of Cascading checkboxes
Radio buttons
feedback by text
dynamic colors
Tell Me Your Secrets - Input Boxes
Scripting - Your Magic Sidekicks
Copy of Buttons
recalculating random numbers with a (one-line) script
changing the appearance of a point
Making a button to toggle visibility
Radio buttons
formula solver
Text and random tools for random exercises
Demo: Fix/unfix pan/zoom with scripting
Button demo with %0
Time Travel
Casting the Spell
Introduction to dynamic texts
making text look nice
TableText[] Cheatsheet from Michael Borcherds
Luna Lovegood's Lascivious LaTeX
LaTeX color calculator for the \textcolor command
TableText test with LaTeX
LaTeX tests (ggb44)
LaTeX examples from AOPS
LaTeX examples from GeoGebra wiki
LaTeX tips on GeoGebra
latex tests
Farbnamen\Colornames
Nice new html LaTeX test
LaTex Schriftgrößen
LaTeX iBook / iPages test
LaTeX Tables with merged cells & columns
TableText[] Cheatsheet
Spreadsheet Wizardry
Creating Your Own Tools Of The Trade
Playing Card Tool (SVG)
Pythagoras Tree
RandomBetween macros
Semi-defined output of tools (TRAC 4061)
Using a list of sliders...
Displaying function with substituted input value
Protractor Template (for Insertion)
If only...
Do it! {Lists, Sequences, Lists Commands}
Creating multiple objects from sequences
Mikko's presentation book on sequence and zip commands
MatheMagical Musings
The Magic Tome of JavaScript
Demo: use CAS View in background (with JavaScript)
Getting State of Objects using Javascript
Passing Values between GeoGebra Applets
Issuing uniforms - Creating Templates and Default Settings
Seige Lore - Locking Things Down
Magic Tomes - GeoGebra Books and Managing Multiple Authors
Good call, my young padawan - Managing and Testing students
making calculations
the top of a parabola
inputfield for the equation of a function
drawing exercise: point (1)
drawing exercise: point (2)
drawing exercise: line
drawing exercise: polygons
multiple choice: select the slope
multiple choice: select the sign
multiple choice with drop-down lists
combine graphs and equations
combine by dragging (1)
combine by dragging (2)
Dissecting the beast - XML hacks
Magic command words - Command line arguments
Magic Items - Examples
Guess my random function
How to fill an arbitrary shape
Gradient Fill Demo
Demo: Reflected Image
Study Bubble Animation : Speed of Movement & Rate of Generation
3D Point Snapping using Dynamic Coordinates
3D Point Snapping using scripting
Demo: Pan but no zoom (by rami)
Complex Locus Plotter
Demo: click image to rotate
Dynamic Coordinates Demo (drag polygon)
Demo: open webpage using JavaScript
Demo: how to shade regions (by Mathmagic)
Demo: move 3 sliders from the keyboard
Demo: draggable angle greater than 360° (prototype clock)
Zoom Demo
How to create a 3rd Graphics View in GeoGebra
Demo: Cancel dragging an object
Demo: force segments to have integer lengths
Demo: DataFunction() for piecewise linear function
Demo: Animated GIF / multi-page PDF export with ExportImage()
Demo: defining a numerical integral using Locus(), Sort() and DataFunction()
Welcome to the GeoGebra Builder's Handbook. In this chapter you can find contact information to those involved in this project as well as a short introduction to the book.
1. Using this book
2. Welcome to the GeoGebra Builders Handbook
3. Contact Information for GeoGebra Builders' Handbook
You are important! You have ideas of your own and we would all like to see them. So how can you include them in this book? Copy the template page and explain your idea in roughly the same way as in the template. Then add your page at the appropriate location and add "themadmathematician" as en editor. You may also consider mailing me so I can make a copy of your page and include it. Together we can make this into a "GeoGebra Manual 2.0".
1. Using the templates to add new materials
2. Template page for GeoGebra Builders Handbook
3. Template page without comments: Moving one point with another
In this chapter we will describe the possibilities - and problems - that arise when using multiple windows. Although this allows for instance a geometrical 3D-model to be viewed simultaneously with several cross sections of it, slider controls, an analysis window with graphs, a spreadsheet with numeric values, a CAS-window with analytical solutions etc, this may not be the best practice when building apps of 700 px width.
1. Why not to use multiple windows in your applets
What are the Action Tools? Sliders, Command buttons, Check boxes and Input fields. This chapter will give a really quick introduction to these (and possibly other) [i]Really Useful Tools[/i] for those not already acquainted with them. Each of these tools will then be presented more thoroughly in a chapter of its own.
So sliders control numbers, but numbers can control everything else so it is really possible to create sliders that control [i]everything[/i]. If you are a skilled user you will know how to use the Shift, Ctrl and Alt buttons together with the arrow keys to adjust the sensitivity of sliders, but how do you do the same in an app aimed for the occasional user? How do you construct a logarithmic slider? A slider that just takes certain values? And how can one single slider really control several different parts of a construction? In this chapter you will learn how sliders one day will rule the world.
1. Logarithmic Sliders
2. Creating a slider based on values from a list
3. Controlling sliders with sliders
4. Having two sliders coarse/fine control the same value
To be or not to be checked. That is the question! In a quite Shakespearean manner check boxes and the Boolean variables they represent summarize the very essence of choice. What to show and what not to show. Decisions, decisions... But did you know that check boxes can be turned into radio buttons with a bit of simple scripting? Or that one checkbox may control other check boxes? Or that there is an operator for "belongs to"? One check box to find them all and in the darkness bind them, if you wish. Preciousss check boxes indeed!
Scripting, which you may think of as programming without calling in libraries, classes, pointers etc, is a powerful way of extending GeoGebra's built-in commands and abilities indefinitely. In its simplest form, it is a button that changes the value of a slider by one when you click the button. In its simplest form, it is a single command and a button as a short cut to it. But then you can embark on a journey of magic: Perhaps you want a reset button that resets some values and parameters but not all? Write a script! Perhaps you want to initialize or recalculate some random numbers? Write a script! Make a point change color when you click it? Move both point A and B when you drag A, but only move B when you drag B? Enhance the user interface in you app? Write a script!
1. Copy of Buttons
2. recalculating random numbers with a (one-line) script
Tic, Toc. Tic, Toc.
How to make your your work a clock?
How to change the speed of time?
How can space with time make rhymes?
The answer, of course, lies in the animation controls. A number can be animated since a number and a slider really are the same thing. Animating a number so that it oscillates between 0 and 1 makes for a simple clock you you may also create "count down clocks" and timers that can be really useful in game-like constructions.
GeoGebra is all about dynamic and interactive images, right? But every now and then a textual explanation, or comment can clarify and focus the user's experience. But how do we create magic texts and captions that change with the constructions? And how do we avoid texts saying y = +3x + -2? How do we alight texts accurately and color part of a text, such as a key word?
LaTeX is "programming" text into what you want it to be. Integral signs, fractions, colors. Adding LaTeX to your texts makes them become that extra little bit Magic.
Most of these pages were constructed by Michael Borcherds before the birth of the Builder's Handbook and inserted "as is".
1. LaTeX color calculator for the \textcolor command
Showing the numeric side of things, recording data for analysis or creating many similar objects at once, the possibilities of the GeoGebra spreadsheet are nearly limitless. With the spreadsheet data safely hidden you may create tables to display in your apps where cells may be colored individually. You may also export the construction protocol to a spreadsheet.
Creating new tools (and commands) by simply repeating what you have already done is really powerful for these small but unnecessarily repetitive and boring tasks. Say you want to the user to investigate the Pythagorean theorem. You could create a triangle, then laboriously create the three squares. But then you can create a new tool that creates not only the triangle but also the squares simply by selecting or creating three points. This tool could be made available to the user who then as the opportunity to enter in the investigation with a focus on the math, rather than the construction. These tools can be stored in separate files and read when necessary.
1. Playing Card Tool (SVG)
2. Pythagoras Tree
3. RandomBetween macros
4. Semi-defined output of tools (TRAC 4061)
5. Using a list of sliders...
6. Displaying function with substituted input value
If only... What if...? What if not? Closely related to Boolean variables and check boxes, the If[...] command allows you the possibility of choice. But position is important. If[...] in the input field gives you piece-wise defined functions. If[...] in the conditional visibility property or the dynamic color property of an object makes for complex control of the appearance of an object. IF[...] in the position field of a text label can place it more accurately depending on other results. If[...] in the Min and Max fields of a slider or in an incrementing script of a button can create limiting behaviour to keep the user from going out of bounds.
Handling many objects as one clearly increases your work potential. The Sequence command can automatically create lists of objects and lists can help you keep track of data, organize and save useful functions for the user to try, keep small databases of positive exclamations such as "Wow", "Really good", "You nailed it" etc.
With lists, and the many objects that they handle, come also the tools of the lists: appending a value at the end of a list, joining two lists, using two lists to create one list from a rule, creating a list of numbers, removing invalid objects in a list etc. And of course, lists may contain other lists.
1. Creating multiple objects from sequences
2. Mikko's presentation book on sequence and zip commands
OK, but where is the Math in all these constructions. Don't worry, this is the chapter for you. Here you will find instructions on how to... all those things you didn't think was possible to do in GeoGebra.
OK - I get it. GeoGebra doesn't really count as a programming language since it doesn't really support conditional statements and loops. Agreed, there is the If[...] command, but it returns a single result rather than execute a sequence of commands. Also, the Sequence command may be used for tasks that simple loops could be used for but again, it doesn't scale up properly.
Enter JavaScript. With a full fledged programming language at your command and a sequence of commands to interact with the GeoGebra objects you can now easily do just about anything you can think up. Typically you may want to read the state of some GeoGebra object in to your program, then do the magic you wan't to do, using loops and conditionals as much as you like, and then update the GeoGebra objects as a result of this calculation. The ggbApplet.evalCommand(“…”), ggbApplet.setValue("...") and similar Javascript commands will take care of the communication between your program and the GeoGebra objects.
But it doesn't stop there. Remember that every single object in GeoGebra may be programmed so that many different scripts can be active in the same construction. You may even construct special listener functions that will report when the user has constructed what you want them to construct, enabling you to congratulate them on the effort.
1. Demo: use CAS View in background (with JavaScript)
Issuing uniforms - Creating Templates and Default Settings
So you've decided to create a batch of materials for a single purpose, e.g. companion material for a specific (part of a) curriculum. You want all the materials to have the same "look and feel". How do you do it? Obviously you start by creating a template, but what should go into that template? Some suggestions are size, font size, number of decimals, specific colors to be used, sizes of points, default appearance of points, lines functions etc... It can take a while to create this template but it is really worth it if you do it so well you don't have to re-do it later.
So you made this wonderful app only to find that your students aren't doing what they're supposed to do. Instead, the're busy trying to wreck your app, trying to make your construction look weird, or entering values so high it bogs down or crashes. Slowly you realize your app is infested with [i]users[/i].
This chapter will show you how to set limits to input fields and value-changing buttons. How to make object impossible to select and how in general to lock things down so that users only can interact in the way you want them to.
Magic Tomes - GeoGebra Books and Managing Multiple Authors
Your constructions - if not intended for a publishers or governments website - will probably be presented best in a GeoGebra book. There they can have additional text, images, videos to support them. There is indeed nothing that stops you from creating your very own math textbook, complete with GeoGebra constructions and screencasts. But if you are several authors you may need to work out the best way of setting editing rights to this book and the materials within for maximum ease of use.
Good call, my young padawan - Managing and Testing students
This chapter is a primer on the use of groups for classroom use and how to create worksheets with automatically corrected questions and also useful tips on how to actually set, mark and give feedback to student's work.
A ggb-file is really a zip shell around the xml-code that describes the construction and defines the objects and any snippets of code and images that are included in the file. In principle therefore, you may go into this xml-code and change it... If nothing else, you may be able to retrieve part of your construction if you find that it crashes, but other, more interesting, things may also be done.
Moving outside the GeoGebra environment, back in time to the creation of the instance of the program, typically you click an icon to start your creative process. But this is not the only way to start GeoGebra. From a command prompt, you may start it using a range of command line arguments that may just be interesting for you if you mean to implement GeoGebra on a network or set some very general behavior, like you own preferred starting view.
Here you will find ready-made apps which use several different techniques (and therefore does not easily fit into another chapter). All key elements are explained to help you recreate similar materials.
1. Guess my random function
2. How to fill an arbitrary shape
3. Gradient Fill Demo
4. Demo: Reflected Image
5. Study Bubble Animation : Speed of Movement & Rate of Generation
6. 3D Point Snapping using Dynamic Coordinates
7. 3D Point Snapping using scripting
8. Demo: Pan but no zoom (by rami)
9. Complex Locus Plotter
10. Demo: click image to rotate
11. Dynamic Coordinates Demo (drag polygon)
12. Demo: open webpage using JavaScript
13. Demo: how to shade regions (by Mathmagic)
14. Demo: move 3 sliders from the keyboard
15. Demo: draggable angle greater than 360° (prototype clock)
16. Zoom Demo
17. How to create a 3rd Graphics View in GeoGebra
18. Demo: Cancel dragging an object
19. Demo: force segments to have integer lengths
20. Demo: DataFunction() for piecewise linear function
21. Demo: Animated GIF / multi-page PDF export with ExportImage()
22. Demo: defining a numerical integral using Locus(), Sort() and DataFunction()
Flee you fools! Getting further help and assistance
Well, if you made it to this GeoGebra book, then in all likelihood, you don't really need any more help, being an expert yourself. Still, here you will find some pointers to other interesting work and resources that may be useful to you.