# G2 / G3 - Controlled Arc Move

### Description

`G2` adds a clockwise arc move to the planner; `G3` adds a counter-clockwise arc. An arc move starts at the current position and ends at the given XYZ, pivoting around a center-point offset given by `I` and `J` or `R`.

This command has two forms:

#### I J Form

• `I` specifies an X offset. `J` specifies a Y offset.
• At least one of the `I` `J` parameters is required.
• `X` and `Y` can be omitted to do a complete circle.
• The given `X` `Y` is not error-checked. The arc ends based on the angle of the destination.
• Mixing `I` or `J` with `R` will throw an error.

#### R Form

• `R` specifies the radius. `X` or `Y` is required.
• Omitting both `X` and `Y` will throw an error.
• `X` or `Y` must differ from the current XY position.
• Mixing `R` with `I` or `J` will throw an error.

Arc moves actually generate several short straight-line moves, the length of which are determined by the configuration option `MM_PER_ARC_SEGMENT` (default 1mm). Any change in the Z position is linearly interpolated over the whole arc.

### Parameters

``` G2 [E<pos>] [F<rate>] I<offset> J<offset> R<radius> [X<pos>] [Y<pos>] [Z<pos>] ```
 `[E]` The amount to extrude between the start point and end point `[F]` The maximum rate of the move between the start and end point `I` An offset from the current X position to use as the arc center `J` An offset from the current Y position to use as the arc center `R` A radius from the current XY position to use as the arc center `[X]` A coordinate on the X axis `[Y]` A coordinate on the Y axis `[Z]` A coordinate on the Z axis

### Examples

Move in a clockwise arc from the current position to (125, 32) with the center offset from the current position by (10.5, 10.5).

Move in a counter-clockwise arc from the current position to (125, 32) with the center offset from the current position by (10.5, 10.5).

Move in a complete clockwise circle with the center offset from the current position by 20, 20.