This article explains the way i have found to build a *Circle* using *Bézier Curves*. I have used *3DSMax *and *MaxScript* to build it, but, of course, it’s the same within any software. Cubic Bézier Formula is next:

Well, s0, the **P0 P1** **P2** and **P3** are the control points that define the Curve. The **t** is the position we would like to calculate. So, the start of the Curve is 0 and the End is 1. The definition says that P0 and P1 belongs to the path of the Curve. So, let’s build a 1 unit radius Circle.

As we see in the image, we have divided the circle into 4 pieces, and we will work only with the bold arc. So, the control points, **A**, **A’**, **B’** and **B** are:

**A** ( 0, 1 ),** A’** ( x, 1 ), **B’** ( 1, x ) and **B** ( 1, 0 ).

The other thing we know is that the point C belongs to the Curve, and it’s exactly in *t* ( 1/2 ).

So, in order to calculate the **x** ( distance between B – B’ or A – A’, we only have to use the Bézier Curve formula, replacing the first of the Control Point values in the formula, with* t = 1/2*, and equalise it with sin 45. * The result of x is 0.551915024494*. So, the code to build the Circle in Max Script is the next:

( radius = 5.0 c = 0.551915024494 * radius controlShape = splineshape() addnewspline controlShape addknot controlShape 1 #bezier #curve [radius, 0.0, 0.0] [radius, c, 0.0] [radius, -c, 0.0] addknot controlShape 1 #bezier #curve [0.0, -radius, 0.0] [c, -radius, 0.0] [-c, -radius, 0.0] addknot controlShape 1 #bezier #curve [-radius, 0.0, 0.0] [-radius, -c, 0.0] [-radius, c, 0.0] addknot controlShape 1 #bezier #curve [0.0, radius, 0.0] [-c, radius, 0.0] [c, radius, 0.0] close controlShape 1 updateshape controlShape )