114 lines
3.1 KiB
Markdown
114 lines
3.1 KiB
Markdown
---
|
|
tag: g005
|
|
title: Bézier cubic spline
|
|
brief: Cubic B-spline with XYE destination and IJPQ offsets
|
|
author: thinkyhead
|
|
|
|
experimental: true
|
|
since: 1.1.0
|
|
group: motion
|
|
|
|
codes: [ G5 ]
|
|
|
|
videos:
|
|
- aVwxzDHniEw
|
|
|
|
notes:
|
|
- It is an error if an axis other than `X` or `Y` is specified.
|
|
- The first control point is the current position of the head. `XY` is the destination (the last control point of the spline).
|
|
- The next control-points are the current position plus `IJ` and the current position plus `PQ`.
|
|
- "`I` and `J` can be omitted, which results in these offsets being zero. This produces a 3-point spline (try the [interactive demo](//www.geogebra.org/m/WPHQ9rUt)). However, `P` and `Q` are required (otherwise you just get a linear movement)."
|
|
|
|
parameters:
|
|
-
|
|
tag: X
|
|
optional: false
|
|
description: A destination coordinate on the X axis
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: Y
|
|
optional: false
|
|
description: A destination coordinate on the Y axis
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: E
|
|
optional: true
|
|
description: The length of filament to feed into the extruder between the start and end point
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: F
|
|
optional: true
|
|
description: The maximum feedrate of the move between the start and end point (in current units per second). This value applies to all subsequent moves.
|
|
values:
|
|
-
|
|
tag: rate
|
|
type: float
|
|
-
|
|
tag: I
|
|
optional: false
|
|
description: Offset from the `X` start point to first control point
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: J
|
|
optional: false
|
|
description: Offset from the `Y` start point to first control point
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: P
|
|
optional: false
|
|
description: Offset from the `X` end point to second control point
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: Q
|
|
optional: false
|
|
description: Offset from the `Y` end point to the second control point
|
|
values:
|
|
-
|
|
tag: pos
|
|
type: float
|
|
-
|
|
tag: S
|
|
optional: true
|
|
since: 2.0.8
|
|
description: Set the Laser power for the move.
|
|
values:
|
|
-
|
|
tag: power
|
|
type: float
|
|
|
|
examples:
|
|
-
|
|
pre:
|
|
- 'For example, to program a curvy "N" shape:'
|
|
code:
|
|
- G0 X0 Y0
|
|
- G5 I0 J3 P0 Q-3 X1 Y1
|
|
|
|
-
|
|
pre:
|
|
- 'A second curvy "N" that attaches smoothly to this one can now be made without specifying `I` and `J`:'
|
|
code:
|
|
- G5 P0 Q-3 X2 Y2
|
|
---
|
|
`G5` creates a cubic B-spline in the XY plane with the `X` and `Y` axes only. `P` and `Q` parameters are required. `I` and `J` are required for the first `G5` command in a series. For subsequent `G5` commands, either both `I` and `J` must be specified, or neither. If `I` and `J` are unspecified, the starting direction of the cubic will automatically match the ending direction of the previous cubic (as if `I` and `J` are the negation of the previous `P` and `Q`).
|
|
|
|
See [This interactive demo](//www.geogebra.org/m/WPHQ9rUt) to understand how Bézier control points work.
|