Draws a curved line on the screen. The first and second parameters specify the beginning control point and the last two parameters specify the ending control point. The middle parameters specify the start and stop of the curve. Longer curves can be created by putting a series of curve() functions together or using curveVertex(). An additional function called curveTightness() provides control for the visual quality of the curve. The curve() function is an implementation of Catmull-Rom splines. Using the 3D version requires rendering with P3D (see the Environment reference for more information).


  • size(400, 400);
    stroke(255, 102, 0);
    curve(20, 104, 20, 104, 292, 96, 292, 244);
    curve(20, 104, 292, 96, 292, 244, 60, 260); 
    stroke(255, 102, 0);
    curve(292, 96, 292, 244, 60, 260, 60, 260);
    Image output for example 1


  • curve(x1, y1, x2, y2, x3, y3, x4, y4)
  • curve(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4)


  • x1(float)coordinates for the beginning control point
  • y1(float)coordinates for the beginning control point
  • x2(float)coordinates for the first point
  • y2(float)coordinates for the first point
  • x3(float)coordinates for the second point
  • y3(float)coordinates for the second point
  • x4(float)coordinates for the ending control point
  • y4(float)coordinates for the ending control point
  • z1(float)coordinates for the beginning control point
  • z2(float)coordinates for the first point
  • z3(float)coordinates for the second point
  • z4(float)coordinates for the ending control point


  • void