Skip to content


Composable for working with Bézier curves.



The useBezierCurve function accepts a single configuration object as an argument, where each property has a default value if not provided.

start{x: 0, y: 0, z: 0}A vertex representing the starting point of the curve.
c1{x: 0, y: 0, z: 0}A vertex representing the first control point.
c2{x: 0, y: 0, z: 0}A vertex representing the second control point.
end{x: 0, y: 0, z: 0}A vertex representing the ending point of the curve.

extends Primitive Configuration

The following configuration parameters are applicable to all primitive shapes.

position{ x: 0, y: 0 }A 2D vector representing the position of the primitive.
rotation0The rotation of the primitive (in degrees).
scale1The scale factor of the primitive.


import {useBezierCurve} from 'vuexyz'

const start: Ref<Vertex> = ref({ x: -100, y: -100 })
const c1: Ref<Vertex> = ref({ x: -250, y: 0 })
const c2: Ref<Vertex> = ref({ x: 250, y: 0 })
const end: Ref<Vertex> = ref({ x: 100, y: 100 })

const {vertices, edges, faces} = useBezierCurve({start, c1, c2, end})


All primitive shapes return the following reactive members:

PropertyType DeclarationDescription
verticesComputedRef<Vertex[]>An array of all vertices.
edgesComputedRef<Edge[]>An array of all edges.
facesComputedRef<Face[]>An array of all faces.
centroidComputedRef<Vertex[]>The centroid (geometric center) of all vertices.
boundingBoxComputedRef<BoundingBox>The bounding box of the primitive, with properties x, y, width, height, maxX and maxY
svgPathComputedRef<string>An SVG path representing the shape of the primitive.
drawToCanvas(ctx: CanvasRenderingContext2D) => voidA method that draws the primitive to a canvas context.

Released under the MIT License.