User Tools

This is an old revision of the document!

Path

A path is a series of points, connected by very thin (invisible) lines. Paths can be created by giving an array of points, or by calling various functions to create or extend another path.

In addition, a path can be open or closed. A open path is typically used to create another, by appending additional points. A closed path is final, and has a line between first and last points.

Which include:

arc(endpoint, options): return a circular or ellipsoid curved path (see example below for usage).

appendPoint([x,y]): create and return a new Path containing the callee's points followed by the given point.

appendPoints(x,y): return a new Path containing the callee's points followed by the given points

appendBezier(x,y, options): create and return a new Path containing the callee's points followed by a Bezier curve ending at the last point given; all but the last point given are the control points of the Bezier; a null initial control point means use the last two points of the callee as control points for the new Bezier curve.

options can specify {resolution: 55}. Paths can be concatenated with .concat(), the result is a new path.

Note: The difference between Paths and 2D shapes are that Paths are composed of very thin lines, whereas a two dimensional shapes always enclose an area.

Conversion to 2D Shape

Paths can be converted to two dimensional shapes. First, a Path can be converted directly to a two dimensional shape but the Path must be closed.

```let path = new CSG.Path2D([[10,10], [-10,10], [-10,-10]], true) // create a closed path
let shape = path.innerToCAG()```

Second, a path can be expanded into a two dimensional shape by tracing the path with a circle. The result is a path with rounded ends and thick lines segments. The path can be either open or closed.

```let path = new CSG.Path2D([[10,10], [-10,10], [-10,-10]], true) // create a closed path
let shape = path.expandToCAG(3)```

Conversion to 3D Shape

Creating a 3D solid is currently supported by the rectangularExtrude() function. This creates a 3D shape by following the path with a 2D rectangle (upright, perpendicular to the path direction):

```var path = new CSG.Path2D([ [10,10], [-10,10] ], /* closed = */ false);
var anotherpath = new CSG.Path2D([ [-10,-10] ]);
path = path.concat(anotherpath);
path = path.appendPoint([10,-10]);
path = path.close(); // close the path

// of course we could simply have done:
// var path = new CSG.Path2D([ [10,10], [-10,10], [-10,-10], [10,-10] ], /* closed = */ true);

// We can make arcs and circles:
var curvedpath = CSG.Path2D.arc({
center: [0,0,0],