# Release Notes GeoGebra 5.0

This page gives an overview of the new features in GeoGebra 5 since version 4.4. Please see our fully revised Guide for more detailed descriptions of each new tool and command.

You can find out about changes since GeoGebra 5 was released in the changelog

# New Tools

• Plane
• Right prism
• Sphere
• View in front of

# Improved Tools

• Freehand Shape Tool now recognises Ellipses

# General Features

• You can create special .ggb files which can be used to apply a style to other files. More details here:
• You can load a .ggb file into another. More details here:
• typing the decimal comma key on the numeric keypad types a .
• The Winding Rule for self-intersecting polygons has changed to be consistent with 3D
• global variables allowed in Global JavaScript (as well as global functions)
• Spreadsheet "File Browser" removed (will soon be replaced with support for CSV files through File -> Open and File -> Open from GeoGebra)
• Opacity for Lines and perimeters of shapes
• Options -> Point Capturing moved to the Style Bar (magnet icon)
• Support for references to undefined spreadsheet cells
• Insert Image Tool now supports SVG files (as from 5.0.4.0)

# New Features

## Extended types to 3D

• Points
```eg A=(5,-2,1)
```
• Vectors
```eg u=(5,-2,1)
eg Cross product: a = u ⊗ v
```
• Lines
• Segments
• Rays
• Polygons
• Circles

## New Object Types

### Surfaces

``` eg f(x,y) = sin(x * y)
eg Function[sin(a * b), a, -5, 5, b, -5, 5]
```

### Planes

``` eg x + y + z = 1
```

# 3D View

## Moving objects

• left-drag points in the 3D view. Click on the point to change the mode "along xOy plane" to "along z axis", and so on.

## Translation of the scene

• shift+left-drag the 3D view (without pointing on a moveable object)
• use move view tool

## Rotation of the scene

• "Rotate 3D graphic view" tool
• right-drag the 3D view (without pointing on a moveable object)
• continue rotation when mouse released
• view in front of an object (toolbar)

## Zoom

• use wheel mouse
• use zoom tool

## Gridlines

• show/hide axes, grid, xOy plane

# Commands

## Improved Commands

• DotPlot will work with a list of text eg DotPlot[ {"Red", "Red", "Red", "Blue", "Blue" } ]
• Coefficients can now be used with the output of Fit (if non-polynomial) to get the calculated coefficients for the fit

These three commands will now work with Conics as well as Curves

All commands below work with 2D/3D objects

``` (will set output line to undefined if point is on the line in 3D)
```
• Circle[ <Point> , <Point> , <Point> ]
• Distance[ <Point> , <Point> ]
• Angle[ <Point> , <Point> , <Point> ]
• Area[ <Polygon> ], Area[ <Conic> ]
• Vertex[ <Polygon> ], Vertex[ <Conic> ]
• Center[ <Conic> ]

## New Commands

• Spline[ <List of Points> ]
• Spline[ <List of Points>, <Order ≥ 3> ]
• Tangent[ <Point>, <Spline> ]
• RandomUniform[ <Min>, <Max>, <n> ]
• AreEqual[ <Object>, <Object> ]
• AreCollinear[ <Point>, <Point>, <Point> ]
• AreConcurrent[ <Line>, <Line>, <Line> ]
• AreConcyclic[ <Point>, <Point>, <Point>, <Point> ]
• AreParallel[ <Line>, <Line> ]
• ArePerpendicular[ <Line>, <Line> ]
• Prove[ <Boolean Expression> ]
• ProveDetails[ <Boolean Expression> ]
• UpdateConstruction[ <Number of times> ]
• Min[ <List of Data>, <List of Frequencies> ]
• Max[ <List of Data>, <List of Frequencies> ]
• IntersectPath[ <Line>, <Polygon> ]
• Envelope[ <Path Creating Envelope>, <Moving Point> ]
• SetPerspective[ <Options> ]
• Remove[ <List>, <List> ]
• FitImplicit[ <List of Points>, <Order> ]
• DotPlot[ <List of Raw Data>, <Stack Adjacent Dots (optional)>, <Scale Factor (optional)>]
• StartLogging[ "<Sensor>", <Variable>, "<Sensor>", <Variable>, ...] For data logging eg from a phone
• StopLogging[ ] For data logging eg from a phone
• BarChart[ <List of Raw Data>, <Width of Bars>, <Vertical Scale Factor> ]
• FrequencyTable[ <List of Raw Data>, <Scale Factor> ]
• Payment[ <Rate>, <Number of Periods>, <Present Value>, <Future Value (optional)>, <Type (optional)> ] Like the Excel Pmt function
• Rate[ <Number of Periods>, <Payment>, <Present Value>, <Future Value (optional)>, <Type (optional)>, <Guess (optional)> ] Like the Excel Rate function
• Periods[ <Rate>, <Payment>, <Present Value>, <Future Value (optional)>, <Type (optional)> ] Like the Excel NPer function
• PresentValue[ <Rate>, <Number of Periods>, <Payment>, <Future Value (optional)>, <Type (optional)> ] Like the Excel PV function
• FutureValue[ <Rate>, <Number of Periods>, <Payment>, <Present Value (optional)>, <Type (optional)> ] Like the Excel FV function
• StartRecord [ ] Resumes all records to spreadsheet if they are paused (and store a value for each)
• StartRecord [ <Boolean> ] Resumes/Pause all records to spreadsheet

## 3D Commands

### General

• SetViewDirection[ <Direction> ]
• Rotate[ <Object>, <Angle>, <Axis of Rotation> ]
• Rotate[ <Object>, <Angle>, <Point on Axis>, <Axis Direction> ]
• Rotate[ <Object>, <Angle>, <Point on Axis>, <Plane> ]
• Reflect[ <Object>, <Plane> ] reflects an object about a plane

### Points

• Intersect[ <Line>, <Object> ] creates the intersection point of a line and a plane, segment, polygon, etc
• Intersect[ <Plane>, <Object> ] creates the intersection point of a plane and segment, polygon, etc
• ClosestPoint[ <Region>, <Point> ]
• ClosestPoint[ <Line>, <Line> ]
• Corner[3, <Number>] creates a point at one of the 3D view's corners (the number is from 1 to 8)
• Center[ <Quadric> ] creates the center of a quadric (e.g. sphere, cone, etc.)

### Polygons

• Intersect[ <Plane>, <Polyhedron> ] creates the polygon(s) intersection of plane and polyhedron
• Polygon[ <Point>, <Point>, <Number of Vertices>, <Direction> ] creates a regular polygon with n vertices, and directed by the direction (e.g. a plane to which the polygon will be parallel, if possible)

### Circles

• Circle[ <Line>, <Point> ] creates the circle with line for axis and through the point
• Circle[<Point>,<Radius>,<Direction>] create circle with center, radius, and axis parallel to direction, which can line, vector or plane (in this case : normal vector of the plane)
• Circle[<Point>,<Point>,<Direction>] creates a circle with center, through a point, and axis parallel to direction (may be undefined)
• Intersect[ <Sphere>, <Sphere> ] creates the circle intersection of two spheres

### Conics

• Intersect[ <Plane>, <Quadric> ] or IntersectPath[ <Plane>, <Quadric> ] creates the conic intersection of the plane and the quadric (sphere, cone, cylinder, ...)

### Planes

• Plane[ <Polygon> ]
• Plane[ <Conic> ]
• Plane[ <Point> , <Point> , <Point> ] creates the plane through the points
• Plane[ <Point> , <Line> ] creates the plane through the point and the line
• Plane[ <Line> , <Line> ] creates the plane through the lines (if in the same plane)
• Plane[ <Point> , <Plane> ] creates the plane through the point and parallel to the plane
• PerpendicularPlane[ <Point> , <Line> ] creates the plane through the point and perpendicular to the line
• PerpendicularPlane[ <Point> , <Vector> ] creates the plane through the point and perpendicular to the vector
• PlaneBisector[ <Point> , <Point> ] create the plane orthogonal bisector between the two points
• PlaneBisector[ <Segment> ] create the plane orthogonal bisector of the segment

### Angles

• Angle[ <Line> , <Plane> ]
• Angle[ <Plane> , <Plane> ]

### Spheres

• Sphere[ <Point> , <Number>] creates a sphere with center and radius
• Sphere[ <Point> , <Point> ] creates a sphere with center as the first point through the second point.

### Cylinders and cones

• Cylinder[ <Point>, <Point>, <Radius Number> ] creates a cylinder of revolution between the two points, and with number for radius
• Cylinder[ <Circle>, <height> ] (right circular cylinder, "Extrude to Prism/Cylinder" tool : Drag circle, or select circle and enter altitude to create right cylinder)
• Cone[ <Point>, <Point>, <Radius Number> ] creates a cone of revolution between the two points, with disc around first point and of given radius, and with second point for apex
• Cone[ <Point>, <Vector>, <Angle ]
• Cone[ <Circle>, <Height> ] (right circular cone, "Extrude to Pyramid/Cone" tool : Drag circle, or select circle and enter altitude to create right circular cone)
• Bottom[ <Limited quadric> ] creates the bottom of the limited quadric (e.g. circle for a cylinder)
• Top[ <Limited quadric> ] creates the top of the limited quadric (e.g. circle for a cylinder)
• Ends[ <Limited quadric> ] creates bottom and top of the limited quadric (e.g. circles for a cylinder)
• Side[ <Limited quadric> ] creates the side of the limited quadric

• InfiniteCylinder[ <Point> , <Vector>, <Radius Number> ] creates a cylinder of revolution around (point,vector) direction, and with number for radius
• InfiniteCylinder[ <Point>, <Point>, <Radius Number> ] creates a cylinder of revolution around (point,point) direction, and with number for radius
• InfiniteCylinder[ <Line>, <Radius Number> ]creates a cylinder of revolution around line direction, and with number for radius
• InfiniteCone[ <Point> , <Vector>, <Angle Number> ] creates a cone of revolution around (point,vector) direction, with point for apex, and with number for angle (half-angle of the cone)
• InfiniteCone[ <Point>, <Point>, <Angle Number> ] creates a cone of revolution around (point,point) direction, with point for apex, and with number for angle (half-angle of the cone)
• InfiniteCone[ <Point>, <Line>, <Angle Number> ] creates a cone of revolution with point for apex, with axis parallel to line, and with number for angle (half-angle of the cone)
• Axes [ <Quadric> ] create the 3 axes of a quadric

### Polyhedrons

• Pyramid[ <Point> , <Point> , ... , <Point> ] : pyramid
``` eg Pyramid[A,B,C,D] creates the pyramid with basis ABC and apex D
```
• Pyramid[ <polygon>, <top point> ] ("Pyramid" tool : select basis + create/select top point)
• Pyramid[ <polygon>, <height> ] ("Extrude to Pyramid/Cone" tool : Drag polygon, or select polygon and enter altitude to create centered pyramid)
• Prism[ <Point> , <Point> , ... , <Point> , <Point> ] : prism
``` eg Prism[A,B,C,D] creates the prism with basis ABC and top DEF, vectors AD, BE, CF are equal
```
• Prism[ <polygon>, <top point> ] ("Prism" tool : select basis + create/select first top point)
• Prism[ <polygon>, <height> ] ("Extrude to Prism/Cylinder" tool : Drag polygon, or select polygon and enter altitude to create right prism)

### Net

• Net[ <Polyhedron> , <Number> ] : create the net for a convex pyramid, convex prism, platonic solid. The number must be between 0 and 1. The net is totally unfold when number value equals 1.
• Net[ <Polyhedron> , <Number>, <Face>, <Edge>, <Edge>, ... ] (just for cube right now, more to come)

### Curves, Surfaces

• Curve[ <Expression> , <Expression> , <Expression> , <Parameter Variable> , <Start Value> , <End Value> ]
• Function[ <Expression>, <Parameter Variable 1>, <Start Value>, <End Value>, <Parameter Variable 2>, <Start Value>, <End Value> ]
• Surface[ <Expression>, <Expression>, <Expression>, <Parameter Variable 1>, <Start Value>, <End Value>, <Parameter Variable 2>, <Start Value>, <End Value> ]

Following commands automatically add xOy plane for direction (first face is contained in xOy plane)

### Volume

• Volume[ <Pyramid> ], Volume[ <Prism> ], Volume[ <Cone> ], Volume[ <Cylinder> ]

### Height

• Height[ <Solid> ], Height[ <Cone> ], Height[ <Cylinder> ] : returns an "oriented" height of the solid

### Scripts

• SetViewDirection[ <Direction> ] sets the 3D view orientation regarding the direction

# New Keyboard Shortcuts

• Page Up: Move object up (3D View only)
• Page Down: Move object down (3D View only)

Description of all Keyboard Shortcuts

# New Applet Parameters

Description of all Applet Parameters

# New Command Line Arguments

You can get the command line arguments for the prover subsystem by using `--proverhelp`, namely:

``` --prover=OPTIONS	set options for the prover subsystem
where OPTIONS is a comma separated list, formed with the following available settings (defaults in brackets):
engine:ENGINE	set engine (Auto|OpenGeoProver|Recio|Botana|PureSymbolic) [Auto]
timeout:SECS	set the maximum time attributed to the prover (in seconds) [5]
maxterms:NUMBER	set the maximal number of terms [10000] (OpenGeoProver only)
method:METHOD	set the method (Wu|Groebner|Area) [Wu] (OpenGeoProver only)
fpnevercoll:BOOLEAN	assume three free points are never collinear for Prove [null] (Botana only, forced to 'yes' when SingularWS is unavailable)
usefixcoords:NUMBER1NUMBER2	use fix coordinates for the first NUMBER1 for Prove and NUMBER2 for ProveDetails, maximum of 4 both [42] (Botana only)
transcext:BOOLEAN	use polynomial ring with coeffs from a transcendental extension for Prove [true] (Botana only, needs SingularWS)
captionalgebra:BOOLEAN	show algebraic debug information in object captions [false] (Botana only)
Example: --prover=engine:Botana,timeout:10,fpnevercoll:true,usefixcoords:43
```

If you use command line arguments, make sure you allocate enough memory, eg:
` java -Xms32m -Xmx1024m -jar geogebra.jar --settingsfile=geogebra.properties`
Description of all Command Line Arguments

# New JavaScript commands

• registerObjectClickListener(String objName, String JSFunctionName);
• unregisterObjectClickListener(String objName);
• registerClickListener(String JSFunctionName);
• unregisterClickListener(String JSFunctionName);

Description of all GeoGebra JavaScript Methods

# GeoGebra's XML File Format

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