Release Notes GeoGebra 4.0

This page gives an overview of the new features in GeoGebra 4.0 since version 3.2. Please see our fully revised GeoGebra Help document for more detailed descriptions of each new tool and command.

You can install GeoGebra 4 by using our Webstart or Download option.

GeoGebra 4 will not run on Java 1.4.2, so you need to install at least Java 5 from java.com

Compatibility with GeoGebra 3.2

Details about compatibility with GeoGebra 3.2 can be found here: http://wiki.geogebra.org/en/Manual:Compatibility

GeoGebraPrim

Our version of GeoGebra for younger students is available here: http://www.geogebra.org/webstart/4.0/GeoGebraPrim.jnlp

```* Restricted set of Tools available
* All available Tools visible at once
* Larger Font size
* Larger / Thicker Objects
* Just the Graphics View showing
* Easier to select objects
* Labeling of objects disabled (by default)
* Angles always between 0° and 180° (by default)
* Rounding to nearest whole number (by default)
```

Tools

New Tools

``` Allows a Point to be created in the interior of a Polygon, Circle or Ellipse, or on the perimeter if you click there
```
``` Hold down <Alt> to attach a Point to the interior of a shape (rather than the edge)
```
```Draw a rectangle with the Move Tool first to draw onto a selected region of the Graphics View, or select an existing image first to draw into it. Right-hand mouse button acts as an eraser.
```

Changed Tools

As well as clicking on an object, then clicking on/to make a vector, you can now just drag an object to translate it (like a "Clone" Tool)

This has been completely rewritten so that dynamic texts are now very easy to make.

Just select the object you want to insert from the "Objects" drop-down menu and it will appear in a rectangle to indicate that it is a dynamic object, not plain text.

If you right-click on the rectangle, you can select "Definition" or "Value" for each dynamic object. There is also now a preview, a Symbol drop-down menu and a row of recently used symbols.

Also, Texts can now be moved by dragging while the Text Tool is selected.

Sliders can now be only moved by dragging while the Slider Tool is selected, or dragging with the right mouse button pressed when the Move Tool is selected.

Checkboxes can now be moved by dragging while the Checkbox Tool is selected.

You can now create a locus from a slider and a dependent point.

New Features

New Object Types

• Multivariate functions, e.g. f(x, y) = x^2 + y^2
You can also use them to define single variable functions, e.g. g(x) = f(x, 2) and functions of several variables eg f(a,b,c)=a+b+c
• PolyLine
``` Like a Polygon, but not closed and not filled. See the PolyLine Tool.
```
``` eg 10 = x < 20
You can use the commands MidPoint, Max, Min on these.
```

General Features

• added function log(b, x) for base b
• Worksheet export: Option to embed the ggb file into the HTML (encoded as Base64, uses the 'ggbBase64' parameter)
• Export as 'Animated GIF' (animation is controlled using a slider as the "clock")
• Compass Tool allows selecting a circle first then a center point
• 'Integer' and 'Random' option for sliders
• File -> Open Webpage allows loading of ggb files from webpages by pasting a URL from a browser (ending .html or .ggb). Also allows loading of files encoded as a Base 64 or GeoGebra XML string.
• "Show trimmed intersecting lines" option for intersection points
• Tooltip options (Object Properties -> Advanced) On, Off, Caption, Next Cell, Automatic (old behaviour: only when Algebra View is open)
• Proper display of formulas and matrices in the spreadsheet
• When an expression like ab + 1 is entered, if the variable ab is undefined then it is automatically created as ab = a * b if a and b are Numbers, or ab = Distance[a,b] if a and b are Points.
• FormulaText]][ <Matrix> ], FormulaText]][ <Vector> ] now display nicely
• support for csc(x), sec(x), cot(x), csch(x), sech(x), coth(x) and derivatives
• Algebra View: you can now shift-click to select multiple objects
• sqrt(3 + i), cbrt(3 + i), conjugate(3 + i), arg(3 + i)
• Windows-style keycodes now work in Text Fields (eg Alt-0176 for °) [not Mac OSX]
• Support for entering Unicode digits as part of expressions eg Eastern Arabic, Thai

All the number systems detailed here (except Osmanya) are supported: Hindu-Arabic Numeral System

• Syntax a = a + 1 or A = A + (1, 2) now allowed for free objects (useful in buttons)
• Percentages now allowed eg a = 3.4%
• Support for numbers to be displayed using localised digits (currently in Arabic, Tamil, Thai and Malayalam locales)
• Support for superscript powers with more then one digit, eg y = x²², x⁻¹
• Alt-minus now gives a superscript minus (not minus-or-plus)
• In Greek and Arabic, Points are labelled in the local alphabet
• Snap to grid works when dragging Texts, Images, Polygons, Segments, Vectors etc (uses first point)
• Polygons can be created from a list of points with Polygon[list].
• You can now drag the edge of a Polygon
• Much better looking LaTeX equations and an almost complete implementation of LaTeX now supported (using JLaTeXMath)
• allow LaTeX captions (surround by \$ \$ ) (all objects except Checkbox, TextField and Button)
• Dynamic "snap to object/grid" when drawing a new object.
• Colored bracket-matching in the input bar etc
• Preview for the Angle, Perpendicular Line, Parallel Line, Angle Bisector, Perpendicular Bisector and Conic Through 5 Points Tools
• Support for eg sin²(x), sin³(x), sin⁻¹(x) for entering functions
• Support for eg f(x) = sin²(x) as display eg FormulaText[ sin(x)^2 ]
• Parametric Curves can now be transformed, eg Reflect[Curve[t^2, t^3, t, -1, 1], yAxis]
• Hit testing in the Graphics View for Integral, Slope, Boxplot, BarChart, Histogram
• Option for zero line thickness for Integral, Slope, BarChart, Histogram, Angle
• Applets now automatically get the keyboard focus
• Simpler dynamic texts: a"text"b is equivalent to a+"text"+b
• Help -> About -> Copy to Clipboard copies debugging information to the clipboard.
This can allow you to recreate your work eg if there is a problem saving
• Ctrl-Shift-M copies just the <applet> tag to the clipboard ready to paste into MediaWiki, Moodle etc etc
• Caption options:
•  %v for value
•  %n for name
•  %x for x-coordinate (or x coefficient for the line a x + b y + c = 0)
•  %y for y-coordinate (or y coefficient for the line a x + b y + c = 0)
•  %z for the 'c' term for the line a x + b y + c = 0 (also: z-coordinate, ready for a 3D View)
• Custom Tools can now have angles, integrals, lower/upper sums, histograms, boxplots and barcharts as an output.
• Custom Tools with Numeric and Angle inputs as first input can be now used by just clicking in the Graphics View to activate the dialog.
• Tracing for Polygons, Lists and Loci (useful for eg SolveODE[x + y, y² - 1, x(A), y(A), 5, 0.05] )
• Right-click with multiple objects selected now opens a menu, not Object Properties
• Popup chooser when multiple objects are clicked removed.
• Texts created in the Input Bar are now put in the middle of the Graphics View (not at the origin)
• Texts and Loci now visible in the Algebra View (Auxiliary by default)
• Option in the Style Bar for the Algebra View to list objects by type
• Dynamic slider range and increment
• New Graphic Export options: Transparent PNGs and EMF+
• New Worksheet Export options: Allow Rescaling, Remove Line Breaks, Use Browser for JavaScript scripts
• Options to export multiple worksheets to HTML: Single File (Tabs) and Linked Files
• Dynamic Opacity in Object Properties -> Advanced
• Dynamic Color options for RGB, HSL, HSV in Object Properties -> Advanced
• Lines can now behave like functions, eg
``` a:y=2x
a(3)
```
• Hold down Alt when drawing a Polygon or PolyLine to get angles that are a multiple of 15°
• Construction Protocol export to HTML improved (eg included Tool icons)
• atan2(x,y)
• "Increasing (Once)" option for animating
• Lists are now draggable, eg {a, b, Segment[D, F], (-0.22, 1.82)}
• Function labels drawn nicely for 'Value' and 'Name & Value' (using LaTeX)
• Interpolation for Images can be turned off (Object Properties > Style)
• Vector product syntax: u ⊗ v
``` (<Alt>* for ⊗ symbol)
```
• When multiple sliders are selected, they can be changed in unison with arrow keys
• When exactly two sliders are selected, Up/Down changes one slider, Left/Right changes the other
• Special symbol for sqrt(-1) <Alt>i
• Construction Protocol HTML is saved with some extra information so it can be reloaded into GeoGebra with File -> Open
• Gaussian Error Function erf(x)
• Slider dialog now accepts eg "a=2" in the Name field
• "Use Java Fonts for LaTeX texts" option added
• "Reverse Mouse Wheel" option added
• "Return angle from inverse trig functions" option added
• Degree symbol automatically inserted in the Rotate Tool's dialog box
• Select objects with the selection rectangle before selecting the "Copy Visual Style" Tool
• LaTeX rendering for functions in the Algebra View (option, can be turned off in the style bar)
• Click-and-hold on a Tool button to show the other Tools available
• Tools > Manage tools > Open
• Export to Asymptote
• Intervals: "3 < x && x < 5" converted to "3 < x < 5"
• Intersect[line,polygon]
• booleans in functions, eg f(x) = x (x == round(x))
• Intersections and unions of polygons
• Probability calculator
• positive-direction-only axes, adjustable axis crossing, polar grid, "On Edge" option
• Background color for Texts & hatching (at the moment the only way to set this is in the spreadsheet or stylebar)
• Two Graphics Views
• Hatching & Image fill for Polygons, Conics, Slope, UpperSum etc
• `<param = "useBrowserForJS" value = "true"/>`
• HTML5 export (Ctrl-Shift-B)
• Compound paths, eg Point[{Segment[B, A], Segment[B, C], Segment[B, D], (1,1), Circle[A,B], x y = 1}]
``` eg Point[{Segment[D, C], Semicircle[B, C], Segment[B, A], Semicircle[D, A]}]
```
• Animation of Points on Paths (eg circles, lines, compound paths)
• Distance]][ <Point>, <Object> ]
• ClosestPoint]][ <Point>, <Object> ]
``` These two commands work for Circles, Curves, Lines, Segments, Parabolas, Hyperbolas, Ellipses, Implicit Curves & Loci. For functions they work on vertical distance. Also Distance]][ <Point>, <Segment> ] now works properly.
```
• Preview for LaTeX texts in the Text Dialog
• New editor for texts & scripts with syntax coloring and bracket matching
• Added the Gaussian Error Function erf(x)
• Loci can now be filled / hatched
• <Ctrl><Shift>B to export to HTML5 from GeoGebra 4.0.25.0

Inequalities

• Inverse Filling option
• Conics supported, eg x² + y² < 25
• Functions supported, eg y < sin(x)
• Inverse functions supported, eg x<sin(y)+y

• Data Analysis dialog
• Create table
• Import data file

Scripting

All GeoGebra objects can now have a script associated with them. This can be a list of GeoGebra commands and/or some JavaScript. So for example an image or a circle can now act as a button.

The new Button and TextField objects have been specifically designed to support scripts. When you type some text into a textfield and press <Enter>, the text is passed to a script as %0, so you can have commands such as:
text = "%0"
Text[%0,(3,4)]

The text is also passed to JavaScript as a variable 'arg' allowing commands such as:
ggbApplet.evalCommand('input="' + arg + '"');

GeoGebra now has a built-in JavaScript interpreter. When exporting to a dynamic worksheet, the JavaScript for each button is exported to a separate function in the HTML file and the browser is used to run the JavaScript.

The Global JavaScript is available to all functions, and is also exported to the HTML file.

Extra supported commands:

```* alert("hello");
```

List Operations

<Object> ∈ <List> is an element of

<List> ⊆ <List> is subset of

<List> ⊂ <List> is subset of (strict)

<List> \ <List> set difference

Virtual Keyboard

View the new on-screen keyboard by going to View -> Show Keyboard

It will be transparent if you are running Java 1.6.0_10 or higher on a supported Operating System / Graphics Card (Go to Help -> About to check)

• Keyboards for Math, Greek, Hebrew, Arabic, Korean, Hindi, French, German, Swedish, Norwegian, Malayalam, Czech, Croatian, Hungarian, Persian, Spanish and English (US and UK) including all accents etc
• Supports entering Windows-style alt keycodes, eg <Alt>0176
• Supports different keyboard layouts according to locale
• Works in all applications, not just GeoGebra
• Window can be resized
• AltGr shows accents on the bottom row in all languages. Supported accents: acute, grave, circumflex, cedilla, umlaut, caron, tilde, breve, dot above, ogonek, ring above, double acute, solidus, dialytika tonos

Commands

Improved Commands

``` FormulaText[If[x < 3, x, x + 1]
```
• Locus <Point Creating Locus Line>, <Slider>]]]
``` Makes a locus from a slider and a dependent point
```
• Extremum[ <Function>, <Start x-Value>, <End x-Value>]]
``` Calculates the extremums of the function between left-x and right-x.
Function should be continuous in the interval, otherwise false
extremums near discontinuity might be calculated.
(previously worked only for polynomials)
```
• Intersect[ <Function> , <Function>, <Start x-Value>, <End x-Value> ]]
``` eg CountIf[ x == (1,2), {A, B, C} ]
eg CountIf[ x == "hello", list ]
```
• TableText[] or () in the String, horizontal lines by specifying _ and vertical lines by specifying |
``` eg TableText[{{1,2},{3,4}},"c()"]
eg TableText[{{1,2},{3,4}},"c|_"]
eg TableText[{{1,2},{3,4}},"c||"]
eg TableText[{{1,2},{3,4}},"c||||"]
```
``` Simplify will now cancel factors from a fraction better, eg Simplify[(x-1)/(x^2-2x+1)]
```
``` Factor has been much improved and gives better answers for simple factoring and also now
copes with much harder problems eg Factor[ x^33 - 1 ]
```
```Returns vertices of polygon
```
• Integral[ <Function>, <Start x-Value>, <End x-Value>, <Boolean Evaluate> ]]
• IntegralBetween[ <Function>, <Function>, <Start x-Value>, <End x-Value> ]]
• IntegralBetween[ <Function>, <Function>, <Start x-Value>, <End x-Value>, <Boolean Evaluate> ]]
```  Integrals can be shaded but not computed when Evaluate = false
```
• Product[ <List>,<Max Index>]] (similar to Sum[<List>, <Max Index>]])
• Histogram[ <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]]
• Histogram[ <Boolean Cumulative>, <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]]
``` New options for cumulative histograms and density scaling.
If Use Density = true histogram bar heights follow the rule:
height = (scaling factor * frequency) / class width
If a scaling factor is not specified the default is one.
When Use Density = false  no density scaling is performed
and histogram bar heights equal frequency values.
```

New Commands

• Zip[ <Expression>,,<list 1>, ...] -- e.g. Zip[Midpoint[A,B],A,list1,B,list2] is shortcut for Sequence[Midpoint[list1(k),list2(k)],k,1,Min[Length[list1],Length[list2 Command|Zip]]]][ <Expression>,,<list 1>, ...] -- e.g. Zip[Midpoint[A,B],A,list1,B,list2] is shortcut for Sequence[Midpoint[list1(k),list2(k)],k,1,Min[Length[list1],Length[list2]]
• StemPlot]][ <List> ]
• StemPlot]][ <List>, <Adjustment -1|0|1> ]
• PlaySound[ <Note>, <Duration>, <Length>]
• PlaySound[ <Note Sequence>, <Instrument> ]
• PlaySound[ <File> ]
• Shear[ <Object< ,<Line>, <Ratio> ]
• Stretch[ <Object, <Line> ,<Ratio> ]
• SolveODE[ <f(x,y)>, <Start x>, <Start y>, <End x>, <Step> ]
• SolveODE[ <f(x,y)>, <g(x,y)>, <Start x>, <Start y>, <End t>, <Step> ]
• SolveODE[ <b(x)>, <c(x)>, <f(x)>, <Start x>, <Start y>, <Start y'>, <End x>, <Step> ]
``` also see FillCells[ ], First]][ <Locus>, <Number> ] and Length]][ <Locus> ] commands
```
``` Number of points in the list must be 9, 14, 20, 26, 33, etc
```

Implicit curves created this way can be transformed with: Translate, Rotate, Dilate (Enlarge), Reflect (in point or line)

``` Creates an Identity matrix of the specified order
```
• FormulaText[ <Object>, <Boolean for Substitution of Variables>, <Boolean Show Name> ]
• [[Command|GetTime[]
``` Returns a list such as {647, 59, 39, 23, 28, 2, 2011, "February", "Monday", 2}
ie the current date and time in this order:
milliseconds, seconds, minutes, hours (0 - 23), date, month (1-12), year, month (as text), day (as text), day (1 = Sunday, 2 = Monday etc)
```
• Min[ <Function>, <Start x-Value>, <End x-Value> ]
``` Calculates the minimum point for function in the given interval.
Function should only have one minimum point in the interval.
```
• [[Command|Max <Function>, <Start x-Value>, <End x-Value> ]

Calculates the maximum point for function in the given interval. Function should only have on maximum point in the interval.

• Maximize[ <Number dependent>, <Number independent> ]

Calculates the independent number which gives the maximal value of the dependent number. The independent number must be a slider and the slider interval will be used as the search interval. If the construction is complicated, this command might fail or quit to avoid using too much processor time.

• Minimize[ <Number dependent>, <Number independent> ]

Calculates the independent number which gives the minimal value of the dependent number. The independent number must be a slider and the slider interval will be used as the search interval. If the construction is complicated, this command might fail or quit to avoid using too much processor time.

• LeftSum[ <Function>, <Start x-Value>, <End x-Value>, <Number of Rectangles> ]
``` Calculates the left sum of the function on the interval [a, b] using n rectangles.
Note: This command draws the rectangles of the left sum as well.
```
• RectangleSum[ <Function>, <Start x-Value>, <End x-Value>, <Number of Rectangles>, <Position for rectangle start> ]
``` Calculates the sum of rectangles with left height starting at a
fraction d of each interval using n rectangles. (0<=d<=1).
When d=0 this is equivalent to the LowerSum[] command and when d=1 the UpperSum[] command.
Note: This command draws the rectangles of the sum as well.
```
``` turns a number into an ordinal (as a text)
eg Ordinal[5] gives "5th" in English
```
``` eg turns a Point on Circle into a slider
```
• Point[ <Object>, <Parameter> ]
``` eg Point[c, a] (for a circle c and slider a)
```
``` Returns a list of prime factors (works for numbers up to 9 007 199 254 740 992)
eg PrimeFactors[1] returns {}
eg PrimeFactors[23] returns {23}
eg PrimeFactors[24] returns {2, 2, 2, 3}
```
```Returns list of points (prime,exponent). E.g. Factors[3072] returns {(2,10),(3,1)}
```
• IndexOf[ <Object>, <List> ]
• IndexOf[ <Object>, <List>, <Start Index> ]
• IndexOf[ <Text>, <Text> ]
• IndexOf[ <Text>, <Text>, <Start Index> ]
• StemPlot[ <List> ] (UK: StemAndLeaf[ <List> ]
• StemPlot[ <List> , <Adjustment -1|0|1> ] (UK: StemAndLeaf[ <List> , <Adjustment -1|0|1> ] )
• ResidualPlot[ <List of Points>, <Function>]
• DotPlot[ <List of Numbers>]
• FrequencyPolygon[ <List of Class Boundaries>, <List of Heights> ]
• FrequencyPolygon[ <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]
• FrequencyPolygon[ <Boolean Cumulative>, <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]
• Hull[ <List of Points> ,<Percentage> ]
``` Produces a "Characteristic Hull" as described here: http://www.geosensor.net/papers/duckham08.PR.pdf
When the percentage is 1, the Convex Hull is produced. As the percentage is decreased, the area of the hull decreases.
```
``` Draws a Voronoi Diagram
```
``` Useful for ShortestDistance[ ]
```
``` These two commands return the index / element of a Visible List (ie Combobox) that has been selected by the user.
Note that these are currently available only in the Spreadsheet (when the "Use Buttons and Checkboxes" option is enabled).
```

Copies the icon for the selected Tool into the Graphics View. The numbers for each Tool are detailed here: http://www.geogebra.org/trac/browser/trunk/geogebra/geogebra/euclidian/EuclidianConstants.java

• Sample[ <List>, <Size> ]
• Sample[ <List>, <Size>, <With Replacement> ]
``` Makes a rigid polygon. Dragging the polygon translates it, dragging the second point rotates it.
```
``` Attempts to tidy up text expressions by removing repeated negatives etc eg Simplify["f(x) = "+a+"x²+"+b+"x+"+c]
Note that FormulaText[f] normally produces better results and is simpler
```
``` Sets the state of a boolean / CheckBox
1 = true, 0 = false
```
``` Sets the selected element of a Visible List (Combobox)
```
``` Useful in Scripting eg SetValue[a, b]
```
``` Useful in Scripting eg SetValue[list1, RandomBetween[1,3], RandomBetween[1,10]]
```
``` Useful in Scripting. Updates all random numbers (like Ctrl-R)
```

Executes list of commands, e.g. Execute[Join[{"f_{1}=1","f_{2}=1"},Sequence["f_{"+(i+2)+"}=f_{"+(i+1)+"}+f_{"+i+"}",i,1,10]]].

• Execute[ <List of strings>,<Parameter %0>,....,<Parameter %9>]

Replaces %x for parameter %x. Executes list of resulting commands, e.g. Execute[{"Midpoint[%0,%1]"},A,B}].

``` Calculates the Sample Standard Devation
```
• SampleSDX[ <List of Points> ], SampleSDY Command|SampleSDX]][ <List of Points> ], SampleSDY]][ <List of Points> ]
``` Calculate the Sample Standard Devation of one coordinate
```
• SDX[ <List of Points> ], SDY Command|SDX]][ <List of Points> ], SDY]][ <List of Points> ]
``` Calculate the Standard Devation of one coordinate
```
``` Calculates the Sample Variance
```
```Calculates Spearman's Correlation Coefficient
```
``` eg Point[ {1, 2} ]
eg Point[ { {1, 2}, {3, 4} } ]
```
``` eg PointList[ { {1, 2}, {3 ,4}} ]
```
``` eg RootList[ {1, 2, 3} ]
```
``` eg ParseToNumber[a,"%0"] in a GeoGebra Script
```
``` eg ParseToFunction[f,"%0"] in a GeoGebra Script
```
```Fits a function of the form a*b^x to the points in the list.
(Just like FitExp[], but to avoid the number e, as e is unknown to some pupils
even if they know the exponential growth function.)
```
• Fit[ <List of Points>,<List of Functions>]
```Fits a linear combination of functions to the points in the list.
For example, with Points A, B, C, ...
L={A, B, C, ...}, f(x)=1, g(x)=x, h(x)=e^x, F={f,g,h}
the command
Fit{L,F}
gives a minimum squared errors curve fitting fit(x) = a + b x + c e^x
```
``` Calculates the sum of squared errors, SSE, between the y-values
of the points in the list and the function values of the
x-values in the list.
If we have some points in a list: L={A,B,C,D,E}
and have done for example:
f(x)=RegPoly[L,1] and g(x)=RegPoly[L,2]
then we can decide the best fit, in the sense of the least sum of squared errors
(Gauss), by comparing:
sse_f=SumSquaredErrors[L,f] and sse_g=SumSquaredErrors[L,g].
```
• RSquare[ <List of Points>, <Function> ]

returns a list with the coefficients of: x², y², 1, xy, x, y

``` See SolveODE[ ]
```
• Take[ <Text>, <Start>, <End> ]
• First[ <Text>, <Number>]
• First[ <Locus>, <Number>]
``` See SolveODE[ ]
```
• First[ <Text>]
• Last[ <Text>, <Number>]
• Last[ <Text>]
• Text[ <Object>, <Point>, <Boolean for Substitution of Variables>, <Boolean for LaTeX formula> ]
• Reflect[ <Circle>, <Object> ]
``` Inverts object in circle
```
``` A=Point[xAxis]
B=Point[xAxis]
DynamicCoordinates[B, Min[x(B),x(A)],0]
SetVisibleInView[B, 1, false]
SetLayer[C, 1]
Now, C cannot be moved to the right of A
```
``` A=(1,2)
SetVisibleInView[A, 1, false]
B=DynamicCoordinates[A, If[x(A) > 3, 3, If[x(A) < -(3), -3, If[x(A) < 0, round(x(A)), x(A)]]], If[x(A) < 0, 0.5, If[y(A) > 2, 2, If[y(A) < 0, 0, y(A)]]]]
```
``` A=(1,2)
B=(2,3)
Hide B
C=DynamicCoordinates[B, If[Distance[A, B] < 1, x(A), x(B)], If[Distance[A, B] < 1, y(A), y(B)]]
makes A a sticky point when C is dragged near it
```
• TDistribution[ <Degrees of Freedom>, <Variable Value> ]
• InverseTDistribution[ <Degrees of Freedom>, <Probability> ]
• FDistribution[ <Numerator Degrees of Freedom>, <Denominator Degrees of Freedom>, <Variable Value> ]
• InverseFDistribution[ <Numerator Degrees of Freedom>, <Denominator Degrees of Freedom>, <Probability> ]
• Gamma[ <Alpha>, <Beta>, <Variable Value> ]
• Erlang[ <Shape>, <Rate>, <Variable Value> ]
• InverseGamma[ <Alpha>, <Beta>, <Probability> ]
• Cauchy[ <Median>, <Scale>, <Variable Value> ]
• InverseCauchy[ <Median>, <Scale>, <Probability> ]
• ChiSquared[ <Degrees of Freedom>, <Variable Value> ]
• InverseChiSquared[ <Degrees of Freedom>, <Probability> ]
• Exponential[ <Mean>, <Variable Value>]
• InverseExponential[ <Mean>, <Probability> ]
• Weibull[ <Shape>, <Scale>, <Variable Value> ]
• InverseWeibull[ <Shape>, <Scale>, <Probability> ]
• BinomialDist[ <Number of Successes>, <Probability of Success>, <Variable Value>, <Boolean Cumulative> ]
• InverseBinomial[ <Number of Successes>, <Probability of Success>, <Probability> ]
• Pascal[ <Number of Successes>, <Probability of Success>, <Variable Value> , <Boolean Cumulative> ]
• InversePascal[ <Number of Successes>, <Probability of Success>, <Probability> ]
• Poisson[ <Number of Successes>, <Probability of Success>, <Variable Value> , <Boolean Cumulative> ]
• InversePoisson[ <Number of Successes>, <Probability of Success>, <Probability> ]
• HyperGeometric[ <Population Size>, <Number of Successes>, <Sample Size>, <Variable Value> , <Boolean Cumulative> ]
• InverseHyperGeometric[ <Population Size>, <Number of Successes>, <Sample Size>, <Probability> ]
• Zipf[ <Number of Elements>, <Exponent>, <Variable Value> , <Boolean Cumulative> ]
• InverseZipf[ <Number of Elements>, <Exponent>, <Probability> ]

clears selection

``` eg FillCells[A1:B20, loc1] to get the coordinates of a locus into the spreadsheet
eg FillCells[A1:B20, 3] to copy '3' into multiple cells
eg FillCells[A1:B2, {{1,2},{3,4}}] to copy a matrix into the spreadsheet
```
``` Sets the Active View (3 reserved for 3D View in future)
```
• ZoomIn[ <Scale Factor> ]
• ZoomOut[ <Scale Factor> ]
• ZoomIn[ <Scale Factor>, <Center Point> ]
• ZoomOut[ <Scale Factor>, <Center Point> ]
• Pan[ <x>, <y> ]
• Cell[ <Column>, <Row> ]
• SetCaption[ <Object>, <Text> ]
• SetLabelMode[ <Object>, <Number> ]
• Slider[ <Min>, <Max>, <Increment>, <Speed>, <Width>, <Is Angle>, <Horizontal>, <Animating>, <Random>]
``` Only first two arguments are compulsory.
```
• Checkbox[ , <List of objects to hide>] (both, either or none parameters can be used)
• [[Textfield[], Textfield Command|Textfield[], Textfield]][ <Linked object>]
• [[Button[], Button Command|Button[], Button]][ <Caption>]
• Unique[ <List>]
``` Removes duplicates from a list.
```
• Classes[ <List of Data>, <Start>, <Width of Classes> ]
• Classes[ <List of Data>, <Number of Classes> ]
``` Gives a list of class boundaries.
```
• Frequency[ <List of Raw Data> ]
• Frequency[ <Cumulative>, <List of Raw Data>]
• Frequency[ <List of Class Boundaries>, <List of Raw Data>, ]
• Frequency[ <Cumulative>,<List of Class Boundaries>,<List of Raw Data>]
• Frequency[ <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]
• Frequency[ <Boolean Cumulative>, <List of Class Boundaries>, <List of Raw Data>, <Use Density> , <Density Scale Factor> (optional) ]
``` Gives a list of frequencies.
```
• Fit[ <List of Points>, <Function> ]
• ZoomIn[ <Min x>, <Min y>, <Max x>, <Max y> ]
• Corner[ <Graphics View>, <Corner Number> ]
• Roots[ <Function>, <left-x>, <right-x> ]
``` Calculates the roots for function in the given interval.
```
``` The following commands draw a function for the respective distributions' pdf / cdf (default: pdf)
```
• TDistribution[ <Degrees of Freedom>, x ]
• TDistribution[ <Degrees of Freedom>, x, <Boolean Cumulative>]
• FDistribution[ <Numerator Degrees of Freedom>, <Denominator Degrees of Freedom>, x ]
• FDistribution[ <Numerator Degrees of Freedom>, <Denominator Degrees of Freedom>, x, <Boolean Cumulative> ]
• Gamma[ <Alpha>, <Beta>, x ]
• Gamma[ <Alpha>, <Beta>, x, <Boolean Cumulative> ]
• Erlang[ <Shape>, <Rate>, x ]
• Erlang[ <Shape>, <Rate>, x, <Boolean Cumulative> ]
• Cauchy[ <Median>, <Scale>, x ]
• Cauchy[ <Median>, <Scale>, x, <Boolean Cumulative> ]
• ChiSquared[ <Degrees of Freedom>, x ]
• ChiSquared[ <Degrees of Freedom>, x, <Boolean Cumulative> ]
• Exponential[ <Lambda>, x ]
• Exponential[ <Lambda>, x, <Boolean Cumulative> ]
• Weibull[ <Shape>, <Scale>, x ]
• Weibull[ <Shape>, <Scale>, x, <Boolean Cumulative> ]
• Normal[ <Mean>, <Standard Deviation>, x ]
• Normal[ <Mean>, <Standard Deviation>, x, <Boolean Cumulative>]
• LogNormal[ <Mean>, <Standard Deviation>, x ]
• LogNormal[ <Mean>, <Standard Deviation>, x, <Boolean Cumulative>]
• LogNormal[ <Mean>, <Standard Deviation>, <Variable Value> ]
• Uniform[ <Lower Bound>, <Upper Bound>, x ]
• Uniform[ <Lower Bound>, <Upper Bound>, x, <Boolean Cumulative> ]
• Uniform[ <Lower Bound>, <Upper Bound>, <Variable Value> ]
• Logistic[ <Mean>, <Scale>, x ]
• Logistic[ <Mean>, <Scale>, x, <Boolean Cumulative> ]
• Logistic[ <Mean>, <Scale>, <Variable Value> ]
• Triangular[ <Lower Bound>, <Upper Bound>, <Mode>, x ]
• Triangular[ <Lower Bound>, <Upper Bound>, <Mode>, x, <Boolean Cumulative> ]
• Triangular[ <Lower Bound>, <Upper Bound>, <Mode>, <Variable Value> ]
``` The following commands draw a Bar Chart for the respective distributions' pdf / cdf (default: pdf)
```
• Bernoulli[ <Probability>, <Boolean Cumulative> ]
• Pascal[ <Number of Successes>, <Probability of Success> ]
• Pascal[ <Number of Successes>, <Probability of Success>, <Boolean Cumulative> ]
• Poisson[ <Mean> ]
• Poisson[ <Mean>, <Boolean Cumulative> ]
• BinomialDist [ <Number of Successes>, <Probability of Success> ]
• BinomialDist [ <Number of Successes>, <Probability of Success>, <Boolean Cumulative> ]
• HyperGeometric[ <Population Size>, <Number of Successes>, <Sample Size> ]
• HyperGeometric[ <Population Size>, <Number of Successes>, <Sample Size>, <Boolean Cumulative> ]
• Zipf[ <Number of Elements>, <Exponent> ]
• Zipf[ <Number of Elements>, <Exponent>, <Boolean Cumulative> ]

New Keyboard & Mouse Shortcuts

• <Ctrl>H Show / Hide Objects (not MacOS)
• <Ctrl><Shift>H Show / Hide Labels (not MacOS)
• <Ctrl>G Show / Hide Objects
• <Ctrl><Shift>G Show / Hide Labels
• <Ctrl>I Invert Selection
• <Tab> Select next object (alphabetic / spreadsheet order, not objects with "Allow Selection" unchecked)
• <Shift><Tab> Select previous object (alphabetic / spreadsheet order, not objects with "Allow Selection" unchecked)
• <Ctrl><Tab> toggles focus between Graphics View and the Spreadsheet
• <Page Up> increases layer of the selected objects
• <Page Down> decreases layer of the selected objects
• The Following work (together with Alt, Shift, Ctrl modifiers) to pan the Graphics View when no objects are selected:
• <Page Up> Go up one screen's worth
• <Page Down> Go down one screen's worth
• <Insert> Go left one screen's worth
• <Home> Go right one screen's worth
• Left arrow Go left 1% of the screen's width
• Right arrow Go right 1% of the screen's width
• Up arrow Go up 1% of the screen's height
• Down arrow Go down 1% of the screen's height
• <Ctrl>M Revert to standard view in the Graphics View
• <Ctrl><Shift>M Share
• Menu button (on keyboard) opens Graphics View menu / Object Properties dialog
• Spacebar Toggle checkbox (if selected)
• Spacebar run scripts (if selected) eg for a Button
• <Ctrl><Shift>N Select next window (or load next file in folder if just one file loaded)
• <Ctrl><Alt><Shift>N Select last window
• <Home> go to start of row (in spreadsheet)
• <Ctrl><Home> go to cell A1 (in spreadsheet)
• <Ctrl><Shift>K Show/Hide CAS View
• <Ctrl><Shift>L Show/Hide Construction Protocol
• <Ctrl><Shift>1 Show/Hide Graphics View
• <Ctrl><Shift>2 Show/Hide Graphics View 2
• <Ctrl><Shift>3 Reserved (for 3D View in future)
• <Ctrl><Shift>Z Redo
• <Ctrl>UpArrow (in Text Field) Open symbol table
• Click and drag middle button (scroll wheel) to pan view or rescale the axes
• <F1> Help / Help on current command
• <Alt>i gives the new symbol for sqrt(-1) ί
• <Alt>u 8 (was <Alt>i)
• <Alt>* gives ⊗ (Vector Product)
• <Alt>- now gives a superscript minus (not minus-or-plus)
• <Tab> cycles through matching commands (Input Bar)
• <Ctrl><Shift>B to export to GeoGebraWeb from GeoGebra 4.0.25.0

Description of all Keyboard Shortcuts

New Applet Parameters

• allowStyleBar, default false
• useBrowserForJS, default true

Description of all GeoGebra Applet Parameters

New Command Line Arguments

If you use command line arguments, make sure you allocate enough memory, eg:
` java -Xms32m -Xmx512m -jar geogebra.jar --settingsfile=geogebra.properties`

` --settingsfile=<File>`
` --versionCheckAllow=[on|off|true|false]` (since version 4.0.28.0)

Description of all GeoGebra Command Line Arguments

New JavaScript commands

• String getPNGBase64(double exportScale, boolean transparent, double DPI)
eg `var str = ggbApplet.getPNGBase64(1, true, 72);`
• boolean writePNGtoFile(String filename, double exportScale, boolean transparent, double DPI)
signed applets only
eg `var success = ggbApplet.writePNGtoFile("c:\\test.png", 1, false, 300);`
• boolean isIndependent(String objName) (checks if object is independent)
• boolean isMoveable(String objName) (checks if object is moveable)
• getBase64()
• setBase64(String)

Description of all GeoGebra JavaScript Methods

GeoGebra's XML File Format

GeoGebra's XML file format is documented at Reference:XML