Primitive solids

ConstructiveGeometry.jl supports two basic families of objects: two-dimensional shapes and three-dimensional volumes.

Two-dimensional shapes

Square

ConstructiveGeometry.squareFunction
square(size; origin, center=false)
square(width, height; origin, center=false)

An axis-parallel square or rectangle with given size (scalar or vector of length 2).

julia> s = square(20,15);

example: a squaresquare([20,15]) also works; square(20) produces a real square.

Circle

ConstructiveGeometry.circleFunction
circle(r::Real, [circumscribed = false])

A circle with diameter r, centered at the origin.

The corresponding mesh is a regular polygon, which is circumscribed to the ideal circle if circumscribed == true and inscribed otherwise.

julia> s = circle(20);

example: a circle

Stroke path

ConstructiveGeometry.strokeFunction
stroke(points, width; kwargs)
ends = :loop|:butt|:square|:round
join = :round|:square|:miter
miter_limit = 2.0

Draws a path of given width.

julia> s = stroke([[0,0], [100,0],[100,100],[50,150],[0,100]],10);

julia> s1 = [120,0]+ stroke([[0,0], [100,0],[100,100],[50,150],[0,100]],10;ends=:loop,join=:square);

example: a stroked path

Polygon

ConstructiveGeometry.polygonFunction
polygon(path)

Filled polygon delimitated by the given vertices.

TODO: allow several paths and simplify crossing paths.

julia> s = polygon([[0,0], [100,0],[100,100],[50,150],[0,100]]);

example: a polygon

Three-dimensional volumes

Cube

ConstructiveGeometry.cubeFunction
cube(size; origin, center=false)
cube(size_x, size_y, size_z; origin, center=false)

An axis-parallel cube (or sett) with given size (scalar or vector of length 3).

The first vertex is at the origin and all vertices have positive coordinates. If center is true then the cube is centered.

julia> s = cube(10,20,30);

example: a cube

Cone

ConstructiveGeometry.coneFunction
cone(h, shape)
cone(h)*shape
cone(apex, shape)
cone(apex)*shape

Cone with arbitrary base.

cone(h, r; circumscribed=false)

Circular right cone with basis centered at the origin, radius r, and height h. Equivalent to cone([0,0,h])*circle(r).

cone(apex, r; circumscribed=false)

Circular, possibly oblique, cone with given apex point and radius r around the origin.

julia> s = cone(50,10);

example: a cone

Cylinder

ConstructiveGeometry.cylinderFunction
cylinder(h, r , [center=false], [circumscribed=false])
cylinder(h, r1, r2 , [center=false], [circumscribed=false])

A cylinder (or cone frustum) with basis centered at the origin, lower radius r1, upper radius r2, and height h.

Warning:cylinder(h,r) is interpreted as cylinder(h,r,r), not (h,r,0) as in OpenSCAD. For a cone, using (cone(h,r)) instead is recommended.

The mesh is a regular prism, circumscribed to the cylinder if circumscribed == true and inscribed otherwise.

julia> s = cylinder(50,10);

example: a cylinder

Sphere

julia> s = sphere(50);

example: a sphere

Surface

MakieCore.surfaceMethod
surface(vertices, faces)

Produces a surface with the given vertices. faces is a list of n-uples of indices into vertices.

Non-triangular faces are triangulated (by being first projected on the least-square fit plane).

julia> s = surface([[0,0,0],[10,0,0],[10,10,0],[0,10,0],[5,5,2]],
         [(1,2,5),(2,3,5),(3,4,5),(4,1,5),(4,3,2,1)]);

example: a pyramidal surface