Computational Design + Fabrication:...

74
Computational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley September 1, 2015

Transcript of Computational Design + Fabrication:...

Page 1: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Computational Design + Fabrication: Geometry

Jonathan Bachrach

EECS UC Berkeley

September 1, 2015

Page 2: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Today 1

who are you?trigonometrygeometrysolid geometrytools

Page 3: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Who Are You? 2

nameundergraduate or graduatemajorpython programming?courses taken ( PL, graphics, geometry )cad tools?proficient in any shop tools?cnc tools?favorite project most proud ofwhy taking class?

Page 4: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Reading 0 3

the future of design by lipson et alquestions

Page 5: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Pythagoras’ Theorem 4

right angled triangle

a2 + b2 = c2 (1)

a

b

c

Page 6: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Transcendentals 5

sinA = oppositehypotenuse = a

c

cosA = adjacenthypotenuse = b

c

tanA = oppositeadjacent =

ab = sinA

cosA

hypotenuse

adjacent

opposite

A

B

C

ca

b

Page 7: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector 6

v = [a,b]magnitude = |v | =

√a2 + b2

direction

direction

magnitude

vector

Page 8: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Ops 7

normalizeaddscale

Page 9: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Normalize 8

unit vectorv = v/|v |

unitvector

v

length

= v / |v|

Page 10: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Add 9

w = u + v

u

v

u+v

Page 11: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Scale 10

w = s ∗ v

v

3 |v|

3v

Page 12: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Dot 11

w = u · vu · v = |u| × |v | × cos θdot product of vectors at right angle is zero

t

cos(t) * v

v

u

Page 13: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Cross 12

w = u × vu × v = |u||v | sin θnright hand rule: u = index finger, v = middle finger, w = thumb

a

b

a x b

Page 14: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Vector Conversions 13

polar to cartesian: v = r [cos θ, sin θ]cartesian to polar: [r , θ] = [norm(v),atan2(v)]

Page 15: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Point as Vector 14

interpreted as vector from zerosubtracting points forms vector

v = [a,b]

(a, b)

(0, 0)

Page 16: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Line 15

infinitethrough two pointsparameterized by t

p

v

Page 17: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Ray 16

one half of line bounded by point

p

v

Page 18: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

LineSegment 17

finite line bounded by points

p_0

p_1

Page 19: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

PolyLine 18

collection of lines segments connecting pointsopen and closedcollection of polylinesDXF, SVG

p_0

p_1

p_3

p_2

Page 20: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Plane 19

n · (p − p0) = 0 (2)

point p0

normal ndot product interpretationintersect linenearest point

n

p p_0

Page 21: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Polygon 20

closed polylineperimeterarea

concave convex

Page 22: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Basic Polygons 21

trianglesquare

Page 23: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Non Polygons 22

circlesquiggly

Page 24: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Approximating Non-Polygons by Polygons 23

circleapproximation error

Page 25: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Approximation Error 24

number of facetsanglefragment sizesquared area delta

Page 26: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Hausdorff Distance 25

two polygons are close if every point in one is close to the othermax distance from one polygon to closest point in the othercould be computed using sampling

Page 27: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Triangulation of Polygons 26

break polygon into neighboring triangleshow do we do this?what do we care about in triangulating?ear clipping – triangle with one edge insidefaster algorithms

Page 28: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Polygon Area 27

clockwisesum area under successive pointsreverse sign if xi+1 < xi

how else?

+ -

Page 29: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Polyhedra 28

collection of intersecting planesneighboring polygons called faces forming closedhow do we know its closed?

Rhombictriacontahedron by DTR Tetrahedron by Robert Webb’s Stella software

Page 30: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Simple Polyhedra 29

tetrahedroncube

Tetrahedron by Robert Webb’s Stella software

Page 31: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Non Polyhedra 30

spherecylinder

Page 32: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Approximating Non Polyhedra with Polyhedra 31

spherecylinderapproximation erroradvantages?problems?

Planetary-Scale Terrain Composition – Kooima + Leigh + Johnson + Roberts + SubbaRao + DeFanti

Page 33: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Mesh Datastructures 32

stl: faces with redundant pointsobj: points faces with point indices( winged mesh )

Page 34: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Affine Transformations 33

translatescalerotate( shear )

Page 35: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Translate 34

translation vector

Page 36: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Scale 35

scaling from origin

Page 37: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Rotate 36

rotation about origin

Page 38: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Affine Transformation Matrices 37

2x23x3basic transformationscompositionextends to 3D

Page 39: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2x2 Affine Transformation Matrices 38

∣∣∣∣x2y2

∣∣∣∣ = A×∣∣∣∣x1y1

∣∣∣∣+ B (3)

Page 40: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2x2 Identity 39

A =

∣∣∣∣1 00 1

∣∣∣∣ ,B =

∣∣∣∣00∣∣∣∣ (4)

Page 41: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2x2 Scaling 40

A =

∣∣∣∣sx 00 sy

∣∣∣∣ ,B =

∣∣∣∣00∣∣∣∣ (5)

Page 42: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2x2 Rotation 41

A =

∣∣∣∣cos θ − sin θsin θ cos θ

∣∣∣∣ ,B =

∣∣∣∣00∣∣∣∣ (6)

Page 43: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2x2 Translation 42

A =

∣∣∣∣0 00 0

∣∣∣∣ ,B =

∣∣∣∣txty∣∣∣∣ (7)

Page 44: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Homogenous Coordinates 43

can write entire affine transformation in one matrixcan compute inverse of transformationaugment input vector with 1

∣∣∣∣∣∣x2y21

∣∣∣∣∣∣ =

∣∣∣∣∣∣a b txc d ty0 0 1

∣∣∣∣∣∣∣∣∣∣∣∣x1y11

∣∣∣∣∣∣ (8)

v2 = M × v1 (9)

Page 45: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Composition 44

now can compose transformations using matrix multiplication

MA = MR ×MT (10)∣∣∣∣∣∣cos θ − sin θ txsin θ cos θ ty

0 0 1

∣∣∣∣∣∣ =

∣∣∣∣∣∣cos θ − sin θ 0sin θ cos θ 0

0 0 1

∣∣∣∣∣∣×∣∣∣∣∣∣1 0 tx0 1 ty0 0 1

∣∣∣∣∣∣ (11)

Page 46: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Solid Geometry 45

3D shapes with volumeset opsoffset, convex hull, minkowski sum2D to 3D3D to 2D

Page 47: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Set Ops 46

interpretation of solids as sets of pointsops: union, intersection, difference

Page 48: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Union 47

sometimes written using addition

A

B

A + B

Page 49: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Intersection 48

sometimes written using multiplication

A

B

A * B

Page 50: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Difference 49

sometimes written using subtraction

A

B

A - B

Page 51: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Offset 50

amountchamferhow to implement?

Page 52: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Convex Hull 51

definitionargumentsexamples

Page 53: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Minkowski Sum 52

definitionargumentsexamples

Page 54: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2D to 3D 53

ExtrusionLathe

Page 55: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Extrusion 54

heightscalarotate

Page 56: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Lathe 55

must translate off center

Page 57: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

3D to 2D 56

shadowslice

Page 58: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Constructive Solid Geometry (CSG) 57

picture by N.Goodger

Page 59: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

CSG Hierarchy 58

chang + woodbury

Page 60: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

CSG Data Structure 59

Page 61: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

OpenSCAD Cheatsheet 60outputs stlproceduralbased on CGAL nef polyhedra

www.openscad.org

Page 62: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2D Primitives 61

circle(radius | d=diameter)

square(size,center)

square([width,height],center)

polygon([points])

polygon([points],[paths])

text(t, size, font, halign, valign, spacing, direction, language, script)

square(center=true);

Page 63: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

2D to 3D Extrusion 62

linear_extrude(height,center,convexity,twist,slices)

rotate_extrude(convexity)

linear_extrude(height = 2) square(center=true);

Page 64: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

3D Primitives 63

sphere(radius | d=diameter)

cube(size)

cube([width,depth,height])

cylinder(h,r|d,center)

cylinder(h,r1|d1,r2|d2,center)

polyhedron(points, triangles, convexity)

cube(r = 1, center = true);

Page 65: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Transformations 64

translate([x,y,z])

rotate([x,y,z])

scale([x,y,z])

resize([x,y,z],auto)

color([r,g,b,a])

translate([0, 0, 1.5]) cube(r = 1, center = true);

Page 66: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Operations 65

mirror([x,y,z])

offset(r|delta,chamfer)

hull()

minkowski()

hull() {

translate([15,10,0]) circle(10);

circle(10);

}

Page 67: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

CSG 66

union()

difference()

intersection()

difference() {

cylinder (h = 4, r=1, center = true, $fn=100);

rotate ([90,0,0]) cylinder (h = 4, r=0.9, center = true, $fn=100);

}

Page 68: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Math 67

sin

cos

tan

acos

asin

atan

atan2

floor

round

ceil

abs

sign

ln

len

let

log

pow

sqrt

exp

rands

min

max

Page 69: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

loops 68

for (i = [start:end]) { ... }

for (i = [start:step:end]) { ... }

for (i = [...,...,...]) { ... }

intersection_for(i = [start:end]) { ... }

intersection_for(i = [start:step:end]) { ... }

intersection_for(i = [...,...,...]) { ... }

for(i=[0:36])

translate([i*10,0,0])

cylinder(r=5,h=cos(i*10)*50+60);

Page 70: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

variable 69

var = value;

assign (...) { ... }

for (i = [10:50]) {

angle = i*360/20;

distance = i*10;

r = i*2;

rotate(angle, [1, 0, 0])

translate([0, distance, 0])

sphere(r = r);

}

Page 71: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

conditionals 70

if (...) { ... }

if (x > y) {

cube(size = 1, center = false);

} else {

cube(size = 2, center = true);

}

Page 72: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

modules / functions 71

module name(...) { ... }

name();

function name(...) = ...

name();

module hole(distance, rot, size) {

rotate(a = rot, v = [1, 0, 0]) {

translate([0, distance, 0]) {

cylinder(r = size, h = 100, center = true);

}

}

}

hole(0, 90, 10);

Page 73: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

next time 72

Our software stackCNC machines and manufacturing

Page 74: Computational Design + Fabrication: Geometryinst.eecs.berkeley.edu/~cs194-28/fa15/lectures/geometry.pdfComputational Design + Fabrication: Geometry Jonathan Bachrach EECS UC Berkeley

Referencers 73

ILM Math Library – http://www.openexr.com

Open SCAD – http://www.openscad.org