# 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 Manual:Main Page document for more detailed descriptions of each new tool and command.

You can install the stable version of GeoGebra by using our Download option.

Information about how to run the Beta version 5 (with 3D) is in our user forum.

# New Tools

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

# Improved Tools

• Freehand Shape Tool now recognises Ellipses

# General Features

• 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)

# 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

## Applets

• 3D export to applets and GeoGebra is not supported at the moment

## 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 works 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> ]
• Corner[ <Polygon> ], Corner[ <Conic> ]
• Center[ <Conic> ]

## New Commands (postponed to GeoGebra 5.2)

• SolveQuartic[ <Quartic Polynomial> ]
• DensityPlot, syntax to be confirmed. Try DensityPlot[ sin(x)+sin(y) ]
• MatrixPlot, syntax to be confirmed. Try MatrixPlot[{{0.9, 0.08, 0.03}, {0.15, 0.8, 0.05}, {0.25, 0.25, 0.5}}]
• ContourPlot, syntax to be confirmed. Try ContourPlot[x^2+y^2]
• Nyquist, to be confirmed
• CompetitionRank
• Polyhedron

## 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> ]
• IntersectPath[ <Line>, <Conic> ]
• Envelope[ <Path Creating Envelope>, <Moving Point> ]
• SetPerspective[ <Options> ]
• Remove[ <List>, <List> ]
• FitImplicit[ <List of Points>, <Order> ]
• BarChart[ <List of Raw Data>, <Width of Bars>, <Vertical Scale Factor> ]
• DotPlot[ <List of Raw Data>, <Stack Adjacent Dots (optional)>, <Scale Factor (optional)>]
• FrequencyTable[ <List of Raw Data>, <Vertical 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)> ] 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>, <Type (optional)> ] Like the Excel FV function
• StartLogging[ "<Sensor>", <Variable>, "<Sensor>", <Variable>, ...] For data logging eg from a phone
• StopLogging[ ] For data logging eg from a phone

## 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

### Spheres

• Sphere[ <Point> , <Number>] creates a sphere with center and radius
• Sphere[ <Point> , <Point> ] creates a sphere with center im 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[ <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 in t for x coord> , <expression in t for y coord> , <expression in t for z coord> , <t> , <t min> , <t max> ]
• Function[ <Expression>, <Parameter Variable 1>, <Start Value>, <End Value>, <Parameter Variable 2>, <Start Value>, <End Value> ]
• Surface[ <expression in u, v for x coord> , <expression in u, v for y coord> , <expression in u, v for z coord> , <u> , <u min> , <u max>, <v> , <v min> , <v max> ]

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

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 and the SingularWS subsystems by using the `--proverhelp` and `--singularWShelp` options, 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) 
maxterms:NUMBER	set the maximal number of terms  (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  (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
```

and

```--singularWS=OPTIONS	set options for SingularWS
where OPTIONS is a comma separated list, formed with the following available settings (defaults in brackets):
enable:BOOLEAN	use Singular WebService when possible [true]
remoteURL:URL	set the remote server URL [http://singularws.idm.jku.at/]
timeout:SECS	set the timeout 
caching:BOOLEAN	set server side caching [auto]
Example: singularWS=timeout:3
```

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.