2D shapes and Extrusions - jackbackrack/cons-beginners-course GitHub Wiki

2D Shapes

We can also construct 2D shapes that live in the xy plane and have no z extent.

Rectangle

  • size -- square({ size: [2, 4], center: true})
  • scale -- square({ center: true }).scale([2, 4])

Circle

  • radius -- circle({ r: 5, center: true })
  • scale -- circle({ center: true }).scale(5)
  • facets -- circle({ fn: 5, center: true }).scale(5)

Polygon

  • points -- polygon([0,0],[3,0],[3,3](/jackbackrack/cons-beginners-course/wiki/0,0],[3,0],[3,3))
  • points -- polygon({ points: [ [0,0],[3,0],[3,3] ] })

Extrusion

We can convert 2D shapes into 3D shapes giving them a z dimension with a series of extrusions.

Linear -- extrude 2d shape into 3d shape giving it height in z

  • height -- linear_extrude({ height: 10 }, square())
  • twist -- linear_extrude({ height: 10, twist: 90 }, square())
  • slices -- linear_extrude({ height: 10, twist: 90, slices: 20 }, square())

Rectangular -- extrude a rectangle along a path

  • path -- rectangular_extrude([ [10,10], [-10,10], [-10,-10], [10,-10] ], {w: 1, h: 3, closed: true})

Rotate -- extrude 2d shape rotationally about the z axis

  • translate -- rotate_extrude(circle({r: 1, center: true}).translate([4,0,0]) )
  • angle -- rotate_extrude({startAngle: 45, angle: 180}, circle({r: 1, center: true}).translate([4, 0, 0]))
  • facets -- rotate_extrude({fn:4}, square({size: [1,1], center: true}).translate([4,0,0]) )

Homework

  • make a pole from a circle
  • make a 2D house with a polygon
  • extrude the house
  • make a square ring
  • make a tubular wireframe structure like a table using rectangular extrusion
    • rectangular extrusion only works with 2D paths so be careful