Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Curve2D¶
Inherits: Resource < RefCounted < Object
Describes a Bézier curve in 2D space.
Description¶
This class describes a Bézier curve in 2D space. It is mainly used to give a shape to a Path2D, but can be manually sampled for other purposes.
It keeps a cache of precalculated points along the curve, to speed up further calculations.
Properties¶
|
||
|
Methods¶
void |
add_point ( Vector2 position, Vector2 in=Vector2(0, 0), Vector2 out=Vector2(0, 0), int index=-1 ) |
void |
clear_points ( ) |
get_baked_length ( ) const |
|
get_baked_points ( ) const |
|
get_closest_offset ( Vector2 to_point ) const |
|
get_closest_point ( Vector2 to_point ) const |
|
get_point_in ( int idx ) const |
|
get_point_out ( int idx ) const |
|
get_point_position ( int idx ) const |
|
void |
remove_point ( int idx ) |
sample_baked ( float offset=0.0, bool cubic=false ) const |
|
sample_baked_with_rotation ( float offset=0.0, bool cubic=false ) const |
|
void |
set_point_in ( int idx, Vector2 position ) |
void |
set_point_out ( int idx, Vector2 position ) |
void |
set_point_position ( int idx, Vector2 position ) |
tessellate ( int max_stages=5, float tolerance_degrees=4 ) const |
|
tessellate_even_length ( int max_stages=5, float tolerance_length=20.0 ) const |
Property Descriptions¶
float bake_interval = 5.0
The distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time the get_baked_points or get_baked_length function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care.
int point_count = 0
The number of points describing the curve.
Method Descriptions¶
void add_point ( Vector2 position, Vector2 in=Vector2(0, 0), Vector2 out=Vector2(0, 0), int index=-1 )
Adds a point with the specified position
relative to the curve's own position, with control points in
and out
. Appends the new point at the end of the point list.
If index
is given, the new point is inserted before the existing point identified by index index
. Every existing point starting from index
is shifted further down the list of points. The index must be greater than or equal to 0
and must not exceed the number of existing points in the line. See point_count.
void clear_points ( )
Removes all points from the curve.
float get_baked_length ( ) const
Returns the total length of the curve, based on the cached points. Given enough density (see bake_interval), it should be approximate enough.
PackedVector2Array get_baked_points ( ) const
Returns the cache of points as a PackedVector2Array.
float get_closest_offset ( Vector2 to_point ) const
Returns the closest offset to to_point
. This offset is meant to be used in sample_baked.
to_point
must be in this curve's local space.
Vector2 get_closest_point ( Vector2 to_point ) const
Returns the closest point on baked segments (in curve's local space) to to_point
.
to_point
must be in this curve's local space.
Vector2 get_point_in ( int idx ) const
Returns the position of the control point leading to the vertex idx
. The returned position is relative to the vertex idx
. If the index is out of bounds, the function sends an error to the console, and returns (0, 0)
.
Vector2 get_point_out ( int idx ) const
Returns the position of the control point leading out of the vertex idx
. The returned position is relative to the vertex idx
. If the index is out of bounds, the function sends an error to the console, and returns (0, 0)
.
Vector2 get_point_position ( int idx ) const
Returns the position of the vertex idx
. If the index is out of bounds, the function sends an error to the console, and returns (0, 0)
.
void remove_point ( int idx )
Deletes the point idx
from the curve. Sends an error to the console if idx
is out of bounds.
Vector2 sample ( int idx, float t ) const
Returns the position between the vertex idx
and the vertex idx + 1
, where t
controls if the point is the first vertex (t = 0.0
), the last vertex (t = 1.0
), or in between. Values of t
outside the range (0.0 >= t <=1
) give strange, but predictable results.
If idx
is out of bounds it is truncated to the first or last vertex, and t
is ignored. If the curve has no points, the function sends an error to the console, and returns (0, 0)
.
Vector2 sample_baked ( float offset=0.0, bool cubic=false ) const
Returns a point within the curve at position offset
, where offset
is measured as a pixel distance along the curve.
To do that, it finds the two cached points where the offset
lies between, then interpolates the values. This interp